texlive[74557] Master/texmf-dist: footmisc (10mar25)

commits+karl at tug.org commits+karl at tug.org
Mon Mar 10 21:06:06 CET 2025


Revision: 74557
          https://tug.org/svn/texlive?view=revision&revision=74557
Author:   karl
Date:     2025-03-10 21:06:05 +0100 (Mon, 10 Mar 2025)
Log Message:
-----------
footmisc (10mar25)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/footmisc/README.md
    trunk/Master/texmf-dist/doc/latex/footmisc/changes.txt
    trunk/Master/texmf-dist/doc/latex/footmisc/footmisc-code.pdf
    trunk/Master/texmf-dist/doc/latex/footmisc/footmisc-doc.pdf
    trunk/Master/texmf-dist/source/latex/footmisc/footmisc.dtx
    trunk/Master/texmf-dist/source/latex/footmisc/footmisc.ins
    trunk/Master/texmf-dist/tex/latex/footmisc/footmisc.sty

Added Paths:
-----------
    trunk/Master/texmf-dist/tex/latex/footmisc/footmisc-2022-02-14.sty

Modified: trunk/Master/texmf-dist/doc/latex/footmisc/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/footmisc/README.md	2025-03-10 20:05:54 UTC (rev 74556)
+++ trunk/Master/texmf-dist/doc/latex/footmisc/README.md	2025-03-10 20:06:05 UTC (rev 74557)
@@ -17,7 +17,7 @@
 -----
 
 Copyright (C) 1995-2011 Robin Fairbairns<br />
-Copyright (C) 2018-2023 Frank Mittelbach<br />
+Copyright (C) 2018-2025 Frank Mittelbach<br />
 <https://latex-project.org/> <br />
 
 

Modified: trunk/Master/texmf-dist/doc/latex/footmisc/changes.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/footmisc/changes.txt	2025-03-10 20:05:54 UTC (rev 74556)
+++ trunk/Master/texmf-dist/doc/latex/footmisc/changes.txt	2025-03-10 20:06:05 UTC (rev 74557)
@@ -1,3 +1,8 @@
+2025-03-10  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* footmisc.dtx:
+	Make use of the new sockets in LaTeX 2025-06-01
+
 2024-12-24  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
 
 	* footmisc.dtx (subsection{The requirements of \cs{@footnotetext}}):

Modified: trunk/Master/texmf-dist/doc/latex/footmisc/footmisc-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/footmisc/footmisc-doc.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/footmisc/footmisc.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/footmisc/footmisc.dtx	2025-03-10 20:05:54 UTC (rev 74556)
+++ trunk/Master/texmf-dist/source/latex/footmisc/footmisc.dtx	2025-03-10 20:06:05 UTC (rev 74557)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 %% File: footmisc.dtx (C) Copyright 1995-2011 Robin Fairbairns
-%%                    (C) Copyright 2018-2024 Frank Mittelbach
+%%                    (C) Copyright 2018-2025 Frank Mittelbach
 %
 % It may be distributed and/or modified under the conditions of the
 % LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -35,10 +35,11 @@
 %<+package>\providecommand\DeclareCurrentRelease[2]{}
 %<+package>
 %<+package>\DeclareRelease{v5}{2011-06-06}{footmisc-2011-06-06.sty}
-%<+package>\DeclareCurrentRelease{}{2022-02-14}
+%<+package>\DeclareRelease{v6}{2022-02-14}{footmisc-2022-02-14.sty}
+%<+package>\DeclareCurrentRelease{}{2025-03-10}
 %<package>\ProvidesPackage{footmisc}%
 %<*!debugins>
-        [2024/12/24 v6.0g
+        [2025/03/10 v7.0a
 %</!debugins>
 %<package>     a miscellany of footnote facilities%
 %<*dtx>
@@ -83,6 +84,7 @@
 % simply          \AtBeginDocument{\AlsoImplementation}
 \OnlyDescription
 %\AlsoImplementation
+\CodelineIndex
 \setcounter{StandardModuleDepth}{1}
 \begin{document}
 \DocInput{footmisc.dtx}
@@ -113,7 +115,7 @@
 %
 % \noindent Program: \texttt{footmisc.dtx}\par
 % \noindent Copyright 1995--2011 Robin Fairbairns\par
-% \noindent Copyright 2018--2023 Robin Fairbairns, Frank Mittelbach
+% \noindent Copyright 2018--2025 Robin Fairbairns, Frank Mittelbach
 %
 % This program is offered under the terms
 % of the \LaTeX{} Project Public License, version 1.3c of this license or
@@ -403,7 +405,7 @@
 % a somewhat strange discrepancy: on most pages the
 % footnotes are attached a distance of \cs{skip}\cs{footins} from the
 % main text, even if that page is run short (i.e., with
-% \cs{raggedbottom} in force). However, whenever the is some
+% \cs{raggedbottom} in force). However, whenever there is some
 % infinite stretch at the end of the page, e.g., from using \cs{newpage} or
 % \cs{clearpage} the footnotes are pushed to the bottom (in particular
 % on the last page of a document or chapter).
@@ -484,7 +486,7 @@
 % \end{tabular}
 % \end{center}
 % By default, \cs{mpfootnoterule} and \cs{pagefootnoterule} retain the
-% original definition of \cs{footnoterule} (which nay have been
+% original definition of \cs{footnoterule} (which may have been
 % modified by a \texttt{norule} option), while \cs{splitfootnoterule}
 % becomes a full-width rule.
 %
@@ -609,7 +611,7 @@
 %    \textsf{footmisc} can be used --- this will change over time.
 % \end{description}
 %
-% \StopEventually{}
+% \MaybeStop{\PrintIndex}
 %
 % \section{Code: Preliminaries}
 %
@@ -624,6 +626,16 @@
 \NeedsTeXFormat{LaTeX2e}[2020/10/01]
 %    \end{macrocode}
 %
+% Version 7 makes use of the new sockets in the \LaTeX{} output
+% routine, which are available starting with release 2025-06. So if
+% this file runs with an earlier kernel, we use version 6 instead and
+% the current file ends with the next line. 
+% \changes{v7.0a}{2025/03/10}{Make use of the new sockets in \LaTeX{} 2025-06-01}
+%    \begin{macrocode}
+\IfFormatAtLeastF{2025-06-01}{\input{footmisc-2022-02-14.sty}\endinput}
+%    \end{macrocode}
+% The rest is the code for version 7.
+%
 % We need a token register in case we have to patch \cs{@makecol}:
 %    \begin{macrocode}
 \newtoks\FN at temptoken
@@ -1040,405 +1052,61 @@
 \ProcessOptions
 %    \end{macrocode}
 %
-% \section{Hacking kernel commands}
+% \section{Interfacing with the output routine}
 %
-% Various standard commands (some of them internal ones) need to be
-% hacked to achieve our effects, and we do all of this now, according
-% to flags set in option processing.
+% \changes{v7.0a}{2025/03/10}{Make use of the new sockets in \LaTeX{} 2025-06-01}
 %
-% \subsection{The output routine part}
+% The different strategies for footnote placements in relationship to
+% floast are implemented using the socket
+% \texttt{build/column/outputbox}. This is done based on the flags set
+% in option processing.
 %
-%    We interface with \cs{@makecol} from the kernel. Eventually this
-%    should move directly into the kernel.
+% We also have to handle \LaTeX's bottom skip bug and the handling of
+% paragraph footnotes if requested.
 %
-%    In order for other packages to prepend or append code to
-%    \cs{@makecol}, they can use the generic command hooks
-%    \texttt{cmd/@makecol/before} and \texttt{cmd/@makecol/after}, so
-%    there is nothing we need to do here.
+% \subsection{Handling paragraph footnotes}
 %
-%
-%
-%  \begin{macro}{\@makecol}
-%    \cs{@makecol} is shortened a lot, basically all the hardwired
-%    code in the middle has moved into a configuration point.
+% If the \texttt{para} option is given we implement that by providing
+% a plug for the socket \texttt{build/column/footnotes}.
 %    \begin{macrocode}
-\def \@makecol {%
-  \@kernel at before@cclv
-  \setbox\@outputbox \box\@cclv
+\ifFN at para
+   \NewSocketPlug{build/column/footnotes}{para}{%
+     \global\setbox\footins\vbox{\FN at makefootnoteparagraph}%
+   }
+  \AssignSocketPlug{build/column/footnotes}{para}
+\fi
 %    \end{macrocode}
-%    The only real addition is the next command which either does
-%    nothing or removes an infinite glue from the bottom of the
-%    \cs{@outputbox}.
-%    \begin{macrocode}
-  \@outputbox at removebskip
-%    \end{macrocode}
-%    Any ``here'' floats in the \cs{@outputbox} are now handled so we
-%    recycle their registers and put them back to the \cs{@freelist}.
-%    \begin{macrocode}
-  \let\@elt\relax
-  \xdef\@freelist{\@freelist\@midlist}%
-  \global \let \@midlist \@empty
-%    \end{macrocode}
-%    Here we have the configurable part.
-% \fmi{Interface to configuration points will change in the future}
-%    \begin{macrocode}
-  \@makecol at appendblocks 
-%    \end{macrocode}
-%    The we deal with any \cs{enlargethispage} or run the normal code
-%    to build a column.
-%    \begin{macrocode}
-  \ifvbox\@kludgeins
-     \@makespecialcolbox
-  \else
-     \@makenormalcolbox
-  \fi
-  \global \maxdepth \@maxdepth
-}
-%    \end{macrocode}
-%  \end{macro}
-%
-%
-%  \begin{macro}{\@outputbox at depth}
-%    We need to know the depth of \cs{@outputbox} once in a
-%    while. Rather than using a temp dimen (as it was done in the
-%    past), we give it a proper register.
-%    \begin{macrocode}
-\newdimen\@outputbox at depth
-%    \end{macrocode}
-%  \end{macro}
-%
-%  \begin{macro}{\@makenormalcolbox}
-%    Taken out of \cs{@makecol} for readability.
-%    \begin{macrocode}
-\def \@makenormalcolbox {%
-   \setbox\@outputbox \vbox to\@colht {%
-       \@texttop
-       \@outputbox at depth \dp\@outputbox
-       \unvbox \@outputbox
-       \vskip -\@outputbox at depth
-       \@textbottom
-      }%
-}
-%    \end{macrocode}
-%  \end{macro}
-%
-%
-%  \begin{macro}{\@makespecialcolbox}
-%    Make the colbox when \cs{enlargethispage} was used.
-%    \begin{macrocode}
-\def \@makespecialcolbox {%
-   \@outputbox at append {\vskip-\@outputbox at depth}%
-   \@tempdima \@colht
-   \ifdim \wd\@kludgeins>\z@
-     \advance \@tempdima -\ht\@outputbox
-     \advance \@tempdima \pageshrink
-     \setbox\@outputbox \vbox to \@colht {%
-       \unvbox\@outputbox
-       \vskip \@tempdima
-       \@textbottom
-       }%
-   \else
-     \advance \@tempdima -\ht\@kludgeins
-     \setbox \@outputbox \vbox to \@colht {%
-       \vbox to \@tempdima {%
-         \unvbox\@outputbox
-         \@textbottom}%
-       \vss}%
-   \fi
-   {\setbox \@tempboxa \box \@kludgeins}%
-}
-%    \end{macrocode}
-%  \end{macro}
-%
-%
-%  \begin{macro}{\@outputbox at removebskip}
 %    
-%    This is really a bug fix for the kernel, but perhaps one has to
-%    make it optional because it is in there since day one). If
-%    \cs{raggedbottom} is in force, footnotes get attached to the main
-%    galley at a distance of \cs{footskip} on all pages except on
-%    those that are ended by \cs{newpage} or \cs{clearpage} where the
-%    \cs{vfil} from \cs{newpage} pushes the footnotes to the very bottom.
+% \subsection{Not fixing the \LaTeX{} bottom skip bug}
 %
-%    This is kind of a weird difference to a page  ending with
-%    \cs{pagebreak}---in that case the page is also run
-%    short, but the footnotes are not pushed to the bottom.
-%
-%    This is fixed by \cs{@outputbox at removebskip} but only if the
-%    switch \texttt{FN at fixskip} is set to true (which is done whenever
-%    \pkg{footmisc} is called with with an option specifying the
-%    footnote placement, i.e., not  in the default case).
+% If we don't want to fix \LaTeX's bottom skip bug (for compatibility with
+% old documents) we do this by simply making two commands do nothing:
 %    \begin{macrocode}
-\ifFN at fixskip
-  \def\@outputbox at removebskip{%
-%    \end{macrocode}
-%    We first test if we are in a \cs{raggedbottom} layout. If not we
-%    do nothing, but we don't disable the code because
-%    \cs{raggedbottom} may get used only for some parts of the
-%    document.
-%    \begin{macrocode}
-    \ifx\@textbottom\relax \else
-%    \end{macrocode}
-%    We then append some negative glue at the end of \cs{@outputbox}
-%    provided it has a glue stretch order of 1 or more (i.e., contains
-%    a \texttt{fil} or \texttt{fill} part).
-%    \begin{macrocode}
-      \@outputbox at append{%
-        \@tempskipa\lastskip
-        \ifnum \gluestretchorder\@tempskipa>\z@
-          \vskip-\@tempskipa
-%    \end{macrocode}
-%  \begin{macro}{\@outputbox at reinsertbskip}
-%    We also record the value so that it can be reinserted
-%    elsewhere. As we have to do this globally, we also need to
-%    explicitly reset it if we don't find any such glue.
-%    \begin{macrocode}
-          \xdef\@outputbox at reinsertbskip
-              {\noexpand\@outputbox at append{\vskip\the\@tempskipa}}%
-        \else
-          \global\let\@outputbox at reinsertbskip\relax
-        \fi
-      }%
-   \fi
-  }
-%    \end{macrocode}
-%    We need a trivial top-level definition for
-%    \cs{@outputbox at reinsertbskip} in case the first page has no
-%    bottom glue and the command gets called.
-%    \begin{macrocode}
-\let\@outputbox at reinsertbskip\relax
-%    \end{macrocode}
-%    If nothing should get fixed we set both commands to \cs{relax}.
-%    \begin{macrocode}
-\else
-  \let\@outputbox at removebskip \relax
+\ifFN at fixskip \else
+  \let\@outputbox at removebskip  \relax
   \let\@outputbox at reinsertbskip\relax
 \fi
 %    \end{macrocode}
-%  \end{macro}
-%  \end{macro}
 %
 %
-%  \begin{macro}{\@kernel at before@cclv}
-%  \begin{macro}{\@kernel at before@footins}
-%    These two commands are internal kernel hooks intended for tagging
-%    support in case that is active. By default they do nothing (and
-%    may have been defined already by \cs{DocumentMetadata}).
-%    \begin{macrocode}
-\providecommand\@kernel at before@cclv{}
-\providecommand\@kernel at before@footins{}
-%    \end{macrocode}
-%  \end{macro}
-%  \end{macro}
 %
+% \subsection{The configuration of the \texttt{build/column/outputbox}
+%    socket based on options}
 %
 %
-%
-% \subsection{The output routine configuration components}
-%
-%    Here we provide the components that are used to define
-%    \cs{@makecol at appendblocks}.
-%
-%
-%  \begin{macro}{\@outputbox at append}
-%
-%    This general purpose command alters the \cs{@outputbox} box by
-%    appending material to it. As this is a box typesetting operation
-%    we make sure that the last line of the box reflects the true
-%    depth of the last line (in case that is needed later). We also
-%    expose the current depth of \cs{@outputbox} as
-%    \cs{@outputbox at depth} before unboxing so that its value can be
-%    used by \verb=#1= if wanted.
-%    \begin{macrocode}
-\def\@outputbox at append #1{%
-     \setbox\@outputbox \vbox {%
-       \boxmaxdepth \@maxdepth
-       \@outputbox at depth\dp\@outputbox      % if needed in #1
-       \unvbox \@outputbox
-       #1%
-     }%
-}
-%    \end{macrocode}
-%  \end{macro}
-%
-%
-%
-%  \begin{macro}{\@outputbox at appendfootnotes}
-%
-%    This command appends the footnotes to the \cs{@outputbox} (if
-%    there are any). If not then it does nothing.
-%    \begin{macrocode}
-\def\@outputbox at appendfootnotes {%
-   \ifvoid\footins \else
-%    \end{macrocode}
-%    First come two configuration points: what to do if we are in a split
-%    footnote situation and a second one that does some manipulation
-%    of the \cs{footins} box before it gets appended.
-% \fmi{this code will get revised as part of CP handling  in the future}
-%    \begin{macrocode}
-     \@makecol at handlesplitfootnotes
-     \@makecol at preparefootinshook
-%    \end{macrocode}
-%    Then the footnotes are appended:
-%    \begin{macrocode}
-     \@outputbox at append{%
-       \vskip \skip\footins
-       \@kernel at before@footins
-       \color at begingroup
-         \normalcolor
-         \footnoterule
-%    \end{macrocode}
-%    Support for \pkg{pdfcolfoot}, eventually this can go once color
-%    is properly supported.
-%    \begin{macrocode}
-         \csname pdfcolfoot at current\endcsname
-         \unvbox \footins
-       \color at endgroup
-      }%
-  \fi
-}
-%    \end{macrocode}
-%  \end{macro}
-%
-%
-%
-%  \begin{macro}{\@outputbox at attachfloats}
-%  \begin{macro}{\@outputbox at attachtopfloats}
-%  \begin{macro}{\@outputbox at attachbottomfloats}
-%    Attaching top and bottom floats can usually be done in one go,
-%    but for special layouts we might want more control so we provide
-%    also separate commands.
-%    There are packages out there that patch \cs{@combinefloats} so we
-%    are careful to call it rather than give it a new name.
-% \changes{v6.0e}{2023/05/26}{Fix an incompatibility with marginfix package (gh/10)}
-%    \begin{macrocode}
-\def \@outputbox at attachfloats {\@combinefloats}
-%    \end{macrocode}
-%    
-%    \begin{macrocode}
-\def \@outputbox at attachtopfloats {%
-  \ifx \@toplist\@empty \else \@cflt \fi
-}  
-\def \@outputbox at attachbottomfloats {%
-    \ifx \@botlist\@empty \else \@cflb \fi
-}  
-%    \end{macrocode}
-%  \end{macro}
-%  \end{macro}
-%  \end{macro}
-%
-%
-%
-%
-%  \begin{macro}{\@makecol at handlesplitfootnotes}
-%  \begin{macro}{\@makecol at splitfootnotemessagehook}
-%    This is only an early draft and doesn't do much.
-%    Contains  incomplete preparation for tagging commented out.
-% \fmi{Interfaces and code will change in the future}
-%    \begin{macrocode}
-\def\@makecol at handlesplitfootnotes {%
-%  \ifx\splitfootnote at continuation\@empty \else
-%    \setbox\footins\vbox{\splitfootnote at continuation\unvbox\footins}%
-%    \global\let\splitfootnote at continuation\@empty
-%  \fi
-  \ifnum\insertpenalties>\z@
-    \@makecol at splitfootnotemessagehook
-%    \setbox\footins\vbox{\unvbox\footins --- END at split}%
-%    \gdef\splitfootnote at continuation    {--- START after split}%
-  \fi
-}
-%\def\splitfootnote at continuation{}
-%    \end{macrocode}
-%    This  could issue warning if split footnotes are encountered.
-%    \begin{macrocode}
-\let \@makecol at splitfootnotemessagehook \@empty
-%    \end{macrocode}
-%  \end{macro}
-%  \end{macro}
-%
-%
-%
-%  \begin{macro}{\@makecol at preparefootinshook}
-%    
-%    Configuration point to support manipulation of footins box
-%    (result needs to be moved back in there). Used by the
-%    \texttt{para} option.
-% \fmi{Interface will change in the future}
-%    \begin{macrocode}
-\let \@makecol at preparefootinshook \@empty
-%    \end{macrocode}
-%
-%    Footnote box layout for para footnotes;
-%    this would also be the hook to support dblfootnotes (from the
-%    \texttt{dblfnote} package if we integrate that).
-%    \begin{macrocode}
-\ifFN at para
-  \def\@makecol at preparefootinshook {%
-     \global\setbox\footins\vbox{\FN at makefootnoteparagraph}%
-    }
-\fi
-%    \end{macrocode}
-%  \end{macro}
-%
-% \fmi{Some temp interfaces until configuration points are available.}
-%
-%  \begin{macro}{\@if at flushbottom@TF}
-%    Test for \cs{flushbottom} (currently not used).
-%    \begin{macrocode}
-\def\@if at flushbottom@TF{%
-  \ifx\@textbottom\relax
-    \expandafter\@firstoftwo
-  \else
-    \expandafter\@secondoftwo
-  \fi
-}
-%    \end{macrocode}
-%  \end{macro}
-%
-%
-%  \begin{macro}{\@if at footnotes@TF}
-%    Test if footnotes are present on the current page.
-%    \begin{macrocode}
-\def\@if at footnotes@TF{%
-  \ifvoid\footins
-    \expandafter\@secondoftwo
-  \else
-    \expandafter\@firstoftwo
-  \fi
-}
-%    \end{macrocode}
-%  \end{macro}
-%
-%
-%  \begin{macro}{\@if at bfloats@TF}
-%    Test if bottom floats are around.
-%    \begin{macrocode}
-\def\@if at bfloats@TF{%
-  \ifx \@botlist\@empty
-    \expandafter\@secondoftwo
-  \else
-    \expandafter\@firstoftwo
-  \fi
-}
-%    \end{macrocode}
-%  \end{macro}
-%
-%
-%
-%
-% \subsection{The \cs{@makecol} configuration based on options}
-%
-%
 %    Placement of footnotes in relation to main galley and floats is
 %    covered by the value of \cs{FN at bottomcases} (type of bottom option)
-%    and the status of the switch \texttt{@abovefloats}.
+%    and the status of the switch \texttt{@abovefloats}. Depending on
+%    their settings we assign different plugs (already defined in
+%    \LaTeX{}) to the socket \texttt{build/column/outputbox}.
 %
+% \changes{v7.0a}{2025/03/10}{Make use of the new sockets in \LaTeX{} 2025-06-01}
 %    \begin{macrocode}
 \ifcase \FN at bottomcases\relax
 %---------------------------------------------------------
 % 0 = undefined
 %---------------------------------------------------------
-\ERROR
+  \ERROR
 \or
 %---------------------------------------------------------
 % 1 = bottom option given
@@ -1450,16 +1118,9 @@
   \ifFN at abovefloats
 %---------------------------------------------------------
 %    \end{macrocode}
-%    If footnotes above floats floats both are at the bottom:
+%    If footnotes above floats then both are at the bottom:
 %    \begin{macrocode}
-    \def\@makecol at appendblocks {%
-       \@if at footnotes@TF
-          {\@outputbox at append{\vfill}}%
-          {\@if at bfloats@TF{\@outputbox at append{\vfill}}%
-                          {\@outputbox at reinsertbskip}}%
-       \@outputbox at appendfootnotes
-       \@outputbox at attachfloats
-      }
+    \AssignSocketPlug {build/column/outputbox}{space-footnotes-floats}
 %---------------------------------------------------------
   \else
 %    \end{macrocode}
@@ -1466,13 +1127,7 @@
 %    Otherwise only the footnotes are at the very bottom and floats
 %    stay close to the text:
 %    \begin{macrocode}
-    \def\@makecol at appendblocks {%
-       \@outputbox at attachfloats
-       \@if at footnotes@TF
-          {\@outputbox at append{\vfill}}%
-          {\@outputbox at reinsertbskip}%
-       \@outputbox at appendfootnotes
-    }
+    \AssignSocketPlug {build/column/outputbox}{floats-space-footnotes}
   \fi
 \or
 %---------------------------------------------------------
@@ -1483,13 +1138,7 @@
 %    \end{macrocode}
 %    Footnotes first then space then floats at bottom:
 %    \begin{macrocode}
-     \def\@makecol at appendblocks {%
-        \@outputbox at appendfootnotes
-        \@if at bfloats@TF
-            {\@outputbox at append{\vfill}}%
-            {\@outputbox at reinsertbskip}%
-        \@outputbox at attachfloats
-     }
+    \AssignSocketPlug {build/column/outputbox}{footnotes-space-floats}
 %---------------------------------------------------------
   \else
 %    \end{macrocode}
@@ -1496,14 +1145,7 @@
 %    If \texttt{belowfloats} was given too, then the excess space ends
 %    up directly below the text 
 %    \begin{macrocode}
-     \def\@makecol at appendblocks {%
-       \@if at footnotes@TF
-          {\@outputbox at append{\vfill}}%
-          {\@if at bfloats@TF{\@outputbox at append{\vfill}}%
-                          {\@outputbox at reinsertbskip}}%
-        \@outputbox at attachfloats
-        \@outputbox at appendfootnotes
-     }
+    \AssignSocketPlug {build/column/outputbox}{space-floats-footnotes}
 %---------------------------------------------------------
   \fi
 \or
@@ -1521,29 +1163,13 @@
 %    \begin{macrocode}
   \ifFN at abovefloats
 %---------------------------------------------------------
-    \def\@makecol at appendblocks {%
-       \@outputbox at appendfootnotes
-       \@outputbox at attachfloats
-%    \end{macrocode}
-%    We do, however, reinsert the bottom skip from \cs{newpage} if it
-%    was taken out earlier. This is, strictly speaking, not necessary
-%    in most cases, but it is a \cs{vfil} while \cs{raggedbottom} is
-%    only generating \verb=\vspace{0pt plus .0001fil}=, so if you have
-%    several \cs{vfil} on the page before the \cs{newpage} you would
-%    alter the space distribution if one is taken out.
-%    \begin{macrocode}
-       \@outputbox at reinsertbskip
-    }
+     \AssignSocketPlug {build/column/outputbox}{footnotes-floats}
   \else
 %---------------------------------------------------------
 %    \end{macrocode}
 %    Same thing but with blocks swapped.
 %    \begin{macrocode}
-    \def\@makecol at appendblocks {%
-       \@outputbox at attachfloats
-       \@outputbox at appendfootnotes
-       \@outputbox at reinsertbskip
-}
+    \AssignSocketPlug {build/column/outputbox}{floats-footnotes}
 %---------------------------------------------------------
   \fi
 \else
@@ -1555,7 +1181,7 @@
 %    can't happen'' in the \TeX{} program code. If they execute then code
 %    is badly broken.
 %    \begin{macrocode}
-\ERROR
+  \ERROR
 \fi
 
 %    \end{macrocode}
@@ -1576,22 +1202,26 @@
 % so we do this here:
 %    \begin{macrocode}
 \newif\ifFN at setspace
-\@ifpackageloaded{setspace}{%
-  \FN at setspacetrue
-  \@ifclassloaded{memoir}{%
+\@ifpackageloaded{setspace}%
+  {%
+    \FN at setspacetrue
+    \@ifclassloaded{memoir}%
 %    \end{macrocode}
-% we're seeing \textsf{memoir}'s emulation of \textsf{setspace}
+% We're seeing \textsf{memoir}'s emulation of \textsf{setspace}
 %    \begin{macrocode}
-    \let\FN at baselinestretch\m at m@singlespace
-  }{%
+      {%
+        \let\FN at baselinestretch\m at m@singlespace
+      }%
 %    \end{macrocode}
-% we're seeing \textsf{setspace} in its own right
+% We're seeing \textsf{setspace} in its own right
 %    \begin{macrocode}
-    \let\FN at baselinestretch\setspace at singlespace
+     {%
+       \let\FN at baselinestretch\setspace at singlespace
+     }%
   }%
-}{%
-  \FN at setspacefalse
-}
+  {%
+    \FN at setspacefalse
+  }
 %    \end{macrocode}
 % \end{macro}
 % \end{macro}
@@ -2483,7 +2113,21 @@
 }
 %    \end{macrocode}
 %
+%
+%    This is only needed until the first aid is in \LaTeX{} or the
+%    package is fixed.
 %    \begin{macrocode}
+\AddToHook{file/marginfix.sty/after}[footmisc]{%
+  \FirstAidNeededT{marginfix}{sty}%
+       {2020/05/06 v1.2 Fix Margin Paragraphs}%
+     {\let \@outputbox at attachfloats \@combinefloats}%
+}
+\DeclareHookRule{file/marginfix.sty/after}{firstaid}{voids}{footmisc}
+%    \end{macrocode}
+%
+%
+%
+%    \begin{macrocode}
 \endinput
 %</package>
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/footmisc/footmisc.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/footmisc/footmisc.ins	2025-03-10 20:05:54 UTC (rev 74556)
+++ trunk/Master/texmf-dist/source/latex/footmisc/footmisc.ins	2025-03-10 20:06:05 UTC (rev 74557)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (c) 1995-2011 Robin Fairbairns
-%% Copyright (c) 2018-2023 Robin Fairbairns, Frank Mittelbach
+%% Copyright (c) 2018-2025 Robin Fairbairns, Frank Mittelbach
 %% 
 %% 
 %% This file is part of the footmisc Bundle for LaTeX.
@@ -37,7 +37,7 @@
 This is a generated file.
 
 Copyright (c) 1995-2011 Robin Fairbairns
-Copyright (c) 2018-2023 Robin Fairbairns, Frank Mittelbach
+Copyright (c) 2018-2025 Robin Fairbairns, Frank Mittelbach
 
 This file was generated from file(s) of the LaTeX `footmisc Bundle'.
 --------------------------------------------------------------------

Added: trunk/Master/texmf-dist/tex/latex/footmisc/footmisc-2022-02-14.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/footmisc/footmisc-2022-02-14.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/footmisc/footmisc-2022-02-14.sty	2025-03-10 20:06:05 UTC (rev 74557)
@@ -0,0 +1,794 @@
+%%
+%% This is file `footmisc.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% footmisc.dtx  (with options: `package')
+%% 
+%% This is a generated file.
+%% 
+%% Copyright (c) 1995-2011 Robin Fairbairns
+%% Copyright (c) 2018-2023 Robin Fairbairns, Frank Mittelbach
+%% 
+%% This file was generated from file(s) of the LaTeX `footmisc Bundle'.
+%% --------------------------------------------------------------------
+%% 
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%%    https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008 or later.
+%% 
+%% This work has the LPPL maintenance status 'maintained'.
+%% 
+%% This file may only be distributed together with a copy of the LaTeX
+%% `footmisc Bundle'. You may however distribute the `footmisc Bundle'
+%% without such generated files.
+%% 
+%% The newest sources can be found below
+%% 
+%%    https://github.com/FrankMittelbach/fmitex-footmisc/
+%% 
+%% where one can also log issues in case there are any.
+%% 
+%% File: footmisc.dtx (C) Copyright 1995-2011 Robin Fairbairns
+%%                    (C) Copyright 2018-2024 Frank Mittelbach
+\NeedsTeXFormat{LaTeX2e}
+\providecommand\DeclareRelease[3]{}
+\providecommand\DeclareCurrentRelease[2]{}
+
+\DeclareRelease{v5}{2011-06-06}{footmisc-2011-06-06.sty}
+\DeclareCurrentRelease{}{2022-02-14}
+\ProvidesPackage{footmisc}%
+        [2024/12/24 v6.0g
+     a miscellany of footnote facilities%
+                   ]
+
+\NeedsTeXFormat{LaTeX2e}[2020/10/01]
+\newtoks\FN at temptoken
+\providecommand\protected at writeaux{%
+  \protected at write\@auxout
+}
+\def\l at advance@macro{\@@dvance at macro\edef}
+\def\@@dvance at macro#1#2#3{\expandafter\@tempcnta#2\relax
+  \advance\@tempcnta#3\relax
+  #1#2{\the\@tempcnta}%
+}
+\let\@advance at macro\l at advance@macro
+\newdimen\footnotemargin
+\footnotemargin1.8em\relax
+\DeclareOption{symbol}{\renewcommand\thefootnote{\fnsymbol{footnote}}}
+\newif\ifFN at robust \FN at robustfalse
+\DeclareOption{symbol*}{%
+  \renewcommand\thefootnote{\@fnsymbol\c at footnote}%
+  \FN at robusttrue
+  \AtEndOfPackage{\setfnsymbol{lamport*-robust}}%
+}
+\newif\ifFN at para  \FN at parafalse
+\DeclareOption{para}{\ifFN at sidefn
+    \PackageError{footmisc}{Option "\CurrentOption" incompatible with
+      option "side"}%
+      {I shall ignore "\CurrentOption"}%
+  \else
+    \FN at paratrue
+  \fi
+}
+\newif\ifFN at sidefn  \FN at sidefnfalse
+\DeclareOption{side}{\ifFN at para
+    \PackageError{footmisc}{Option "\CurrentOption" incompatible with
+      option "para"}%
+      {I shall ignore "\CurrentOption"}%
+  \else
+    \FN at sidefntrue
+  \fi
+}
+\let\footnotelayout\@empty
+\DeclareOption{ragged}{%
+  \@ifundefined{RaggedRight}%
+    {\renewcommand\footnotelayout{\linepenalty50 \raggedright}}%
+    {\renewcommand\footnotelayout{\linepenalty50 \RaggedRight}}%
+}
+\newif\ifFN at perpage
+\FN at perpagefalse
+\DeclareOption{perpage}{%
+  \FN at perpagetrue
+}
+\newif\ifFN at fixskip      \FN at fixskipfalse
+
+\let\FN at bottomcases\thr@@
+\newif\ifFN at abovefloats  \FN at abovefloatstrue
+\DeclareOption{bottom}{%
+  \let\FN at bottomcases\@ne
+  \FN at abovefloatsfalse
+  \FN at fixskiptrue
+}
+\DeclareOption{bottomfloats}{%
+  \let\FN at bottomcases\tw@
+  \FN at abovefloatstrue \FN at fixskiptrue
+}
+\DeclareOption{abovefloats}{\FN at abovefloatstrue  \FN at fixskiptrue}
+\DeclareOption{belowfloats}{\FN at abovefloatsfalse \FN at fixskiptrue}
+\DeclareOption{marginal}{%
+  \footnotemargin-0.8em\relax
+}
+\DeclareOption{flushmargin}{%
+  \footnotemargin0pt\relax
+}
+\newif\ifFN at hangfoot  \FN at hangfootfalse
+\DeclareOption{hang}{%
+  \FN at hangfoottrue
+}
+\newcommand*\hangfootparskip{0.5\baselineskip}
+\newcommand*\hangfootparindent{0em}%
+\DeclareOption{norule}{%
+  \renewcommand\footnoterule{}%
+  \advance\skip\footins 4\p@\@plus2\p@\relax
+}
+\DeclareOption{splitrule}{%
+  \gdef\split at prev{0}
+  \let\pagefootnoterule\footnoterule
+  \let\mpfootnoterule\footnoterule
+  \def\splitfootnoterule{\kern-3\p@ \hrule \kern2.6\p@}
+  \def\footnoterule{\relax
+    \ifx \@listdepth\@mplistdepth
+      \mpfootnoterule
+    \else
+      \ifnum\split at prev=\z@
+        \pagefootnoterule
+      \else
+        \splitfootnoterule
+      \fi
+      \xdef\split at prev{\the\insertpenalties}%
+    \fi
+  }%
+}
+\newif\ifFN at stablefootnote  \FN at stablefootnotefalse
+\DeclareOption{stable}{\FN at stablefootnotetrue}
+\newif\ifFN at multiplefootnote  \FN at multiplefootnotefalse
+\DeclareOption{multiple}{\FN at multiplefootnotetrue}
+\ProcessOptions
+\def \@makecol {%
+  \@kernel at before@cclv
+  \setbox\@outputbox \box\@cclv
+  \@outputbox at removebskip
+  \let\@elt\relax
+  \xdef\@freelist{\@freelist\@midlist}%
+  \global \let \@midlist \@empty
+  \@makecol at appendblocks
+  \ifvbox\@kludgeins
+     \@makespecialcolbox
+  \else
+     \@makenormalcolbox
+  \fi
+  \global \maxdepth \@maxdepth
+}
+\newdimen\@outputbox at depth
+\def \@makenormalcolbox {%
+   \setbox\@outputbox \vbox to\@colht {%
+       \@texttop
+       \@outputbox at depth \dp\@outputbox
+       \unvbox \@outputbox
+       \vskip -\@outputbox at depth
+       \@textbottom
+      }%
+}
+\def \@makespecialcolbox {%
+   \@outputbox at append {\vskip-\@outputbox at depth}%
+   \@tempdima \@colht
+   \ifdim \wd\@kludgeins>\z@
+     \advance \@tempdima -\ht\@outputbox
+     \advance \@tempdima \pageshrink
+     \setbox\@outputbox \vbox to \@colht {%
+       \unvbox\@outputbox
+       \vskip \@tempdima
+       \@textbottom
+       }%
+   \else
+     \advance \@tempdima -\ht\@kludgeins
+     \setbox \@outputbox \vbox to \@colht {%
+       \vbox to \@tempdima {%
+         \unvbox\@outputbox
+         \@textbottom}%
+       \vss}%
+   \fi
+   {\setbox \@tempboxa \box \@kludgeins}%
+}
+\ifFN at fixskip
+  \def\@outputbox at removebskip{%
+    \ifx\@textbottom\relax \else
+      \@outputbox at append{%
+        \@tempskipa\lastskip
+        \ifnum \gluestretchorder\@tempskipa>\z@
+          \vskip-\@tempskipa
+          \xdef\@outputbox at reinsertbskip
+              {\noexpand\@outputbox at append{\vskip\the\@tempskipa}}%
+        \else
+          \global\let\@outputbox at reinsertbskip\relax
+        \fi
+      }%
+   \fi
+  }
+\let\@outputbox at reinsertbskip\relax
+\else
+  \let\@outputbox at removebskip \relax
+  \let\@outputbox at reinsertbskip\relax
+\fi
+\providecommand\@kernel at before@cclv{}
+\providecommand\@kernel at before@footins{}
+\def\@outputbox at append #1{%
+     \setbox\@outputbox \vbox {%
+       \boxmaxdepth \@maxdepth
+       \@outputbox at depth\dp\@outputbox      % if needed in #1
+       \unvbox \@outputbox
+       #1%
+     }%
+}
+\def\@outputbox at appendfootnotes {%
+   \ifvoid\footins \else
+     \@makecol at handlesplitfootnotes
+     \@makecol at preparefootinshook
+     \@outputbox at append{%
+       \vskip \skip\footins
+       \@kernel at before@footins
+       \color at begingroup
+         \normalcolor
+         \footnoterule
+         \csname pdfcolfoot at current\endcsname
+         \unvbox \footins
+       \color at endgroup
+      }%
+  \fi
+}
+\def \@outputbox at attachfloats {\@combinefloats}
+\def \@outputbox at attachtopfloats {%
+  \ifx \@toplist\@empty \else \@cflt \fi
+}
+\def \@outputbox at attachbottomfloats {%
+    \ifx \@botlist\@empty \else \@cflb \fi
+}
+\def\@makecol at handlesplitfootnotes {%
+  \ifnum\insertpenalties>\z@
+    \@makecol at splitfootnotemessagehook
+  \fi
+}
+\let \@makecol at splitfootnotemessagehook \@empty
+\let \@makecol at preparefootinshook \@empty
+\ifFN at para
+  \def\@makecol at preparefootinshook {%
+     \global\setbox\footins\vbox{\FN at makefootnoteparagraph}%
+    }
+\fi
+\def\@if at flushbottom@TF{%
+  \ifx\@textbottom\relax
+    \expandafter\@firstoftwo
+  \else
+    \expandafter\@secondoftwo
+  \fi
+}
+\def\@if at footnotes@TF{%
+  \ifvoid\footins
+    \expandafter\@secondoftwo
+  \else
+    \expandafter\@firstoftwo
+  \fi
+}
+\def\@if at bfloats@TF{%
+  \ifx \@botlist\@empty
+    \expandafter\@secondoftwo
+  \else
+    \expandafter\@firstoftwo
+  \fi
+}
+\ifcase \FN at bottomcases\relax
+\ERROR
+\or
+  \ifFN at abovefloats
+    \def\@makecol at appendblocks {%
+       \@if at footnotes@TF
+          {\@outputbox at append{\vfill}}%
+          {\@if at bfloats@TF{\@outputbox at append{\vfill}}%
+                          {\@outputbox at reinsertbskip}}%
+       \@outputbox at appendfootnotes
+       \@outputbox at attachfloats
+      }
+  \else
+    \def\@makecol at appendblocks {%
+       \@outputbox at attachfloats
+       \@if at footnotes@TF
+          {\@outputbox at append{\vfill}}%
+          {\@outputbox at reinsertbskip}%
+       \@outputbox at appendfootnotes
+    }
+  \fi
+\or
+  \ifFN at abovefloats
+     \def\@makecol at appendblocks {%
+        \@outputbox at appendfootnotes
+        \@if at bfloats@TF
+            {\@outputbox at append{\vfill}}%
+            {\@outputbox at reinsertbskip}%
+        \@outputbox at attachfloats
+     }
+  \else
+     \def\@makecol at appendblocks {%
+       \@if at footnotes@TF
+          {\@outputbox at append{\vfill}}%
+          {\@if at bfloats@TF{\@outputbox at append{\vfill}}%
+                          {\@outputbox at reinsertbskip}}%
+        \@outputbox at attachfloats
+        \@outputbox at appendfootnotes
+     }
+  \fi
+\or
+  \ifFN at abovefloats
+    \def\@makecol at appendblocks {%
+       \@outputbox at appendfootnotes
+       \@outputbox at attachfloats
+       \@outputbox at reinsertbskip
+    }
+  \else
+    \def\@makecol at appendblocks {%
+       \@outputbox at attachfloats
+       \@outputbox at appendfootnotes
+       \@outputbox at reinsertbskip
+}
+  \fi
+\else
+\ERROR
+\fi
+
+\newif\ifFN at setspace
+\@ifpackageloaded{setspace}{%
+  \FN at setspacetrue
+  \@ifclassloaded{memoir}{%
+    \let\FN at baselinestretch\m at m@singlespace
+  }{%
+    \let\FN at baselinestretch\setspace at singlespace
+  }%
+}{%
+  \FN at setspacefalse
+}
+\ifFN at para
+  \long\def\FN at footnotetext#1{%
+    \insert\footins{%
+      \ifFN at setspace
+        \let\baselinestretch\FN at baselinestretch
+      \fi
+      \reset at font\footnotesize
+      \interlinepenalty\interfootnotelinepenalty
+      \splittopskip\footnotesep
+      \splitmaxdepth \dp\strutbox
+      \floatingpenalty\@MM
+      \hsize\columnwidth
+      \@parboxrestore
+      \def\@currentcounter{footnote}%
+      \protected at edef\@currentlabel{\csname p at footnote\endcsname\@thefnmark}%
+      \color at begingroup
+        \setbox\FN at tempboxa\hbox{%
+          \@makefntext{\ignorespaces#1\strut
+            \penalty-10\relax
+            \hskip\footglue
+          }% end of \@makefntext parameter
+        }% end of \hbox
+        \dp\FN at tempboxa\z@
+        \ht\FN at tempboxa\dimexpr\wd\FN at tempboxa *%
+                        \footnotebaselineskip / \columnwidth\relax
+        \box\FN at tempboxa
+      \color at endgroup
+    }%
+    \FN at mf@prepare
+  }
+\else
+  \ifFN at sidefn
+    \long\def\FN at footnotetext#1{%
+      \marginpar{%
+        \ifFN at setspace
+          \let\baselinestretch\FN at baselinestretch
+        \fi
+        \reset at font\footnotesize
+        \def\@currentcounter{footnote}%
+        \protected at edef\@currentlabel{%
+          \csname p at footnote\endcsname\@thefnmark
+        }%
+        \color at begingroup
+          \@makefntext{%
+            \ignorespaces#1%
+          }%
+        \color at endgroup
+      }%
+      \FN at mf@prepare
+    }%
+  \else
+    \long\def\FN at footnotetext#1{%
+      \insert\footins{%
+        \ifFN at setspace
+          \let\baselinestretch\FN at baselinestretch
+        \fi
+        \reset at font\footnotesize
+        \interlinepenalty\interfootnotelinepenalty
+        \splittopskip\footnotesep
+        \splitmaxdepth \dp\strutbox
+        \floatingpenalty\@MM
+        \hsize\columnwidth
+        \@parboxrestore
+        \def\@currentcounter{footnote}%
+        \protected at edef\@currentlabel{%
+          \csname p at footnote\endcsname\@thefnmark
+        }%
+        \color at begingroup
+          \@makefntext{%
+            \rule\z@\footnotesep
+            \ignorespaces#1\@finalstrut\strutbox
+          }%
+        \color at endgroup
+      }%
+      \FN at mf@prepare
+    }%
+  \fi
+\fi
+\ifFN at para
+  \let\FN at tempboxa\@tempboxa
+  \newbox\FN at tempboxb
+  \newbox\FN at tempboxc
+  \newskip\footglue \footglue=1em plus.3em minus.3em
+  \long\def\@makefntext#1{\leavevmode
+    \@makefnmark\nobreak
+    \hskip.5em\relax#1%
+  }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+  \newdimen\footnotebaselineskip
+  {%
+    \footnotesize
+    \global
+      \footnotebaselineskip=\normalbaselineskip
+  }
+
+  \long\def\FN at makefootnoteparagraph{\unvbox\footins \FN at makehboxofhboxes
+    \setbox\FN at tempboxa=\hbox{\unhbox\FN at tempboxa \FN at removehboxes}%
+    \FN at setfootnoteparawidth
+    \@parboxrestore
+    \baselineskip=\footnotebaselineskip
+    \noindent
+    \rule{\z@}{\footnotesep}%
+    \unhbox\FN at tempboxa\par
+  }
+  \def\FN at makehboxofhboxes{\setbox\FN at tempboxa=\hbox{}%
+    \loop
+      \setbox\FN at tempboxb=\lastbox
+      \ifhbox\FN at tempboxb
+      \setbox\FN at tempboxa=\hbox{\box\FN at tempboxb\unhbox\FN at tempboxa}%
+    \repeat
+  }
+  \def\FN at removehboxes{\setbox\FN at tempboxa=\lastbox
+    \ifhbox
+      \FN at tempboxa{\FN at removehboxes}%
+      \unhbox\FN at tempboxa
+    \fi
+  }
+\fi
+\@ifpackageloaded{multicol}
+  {\def\FN at setfootnoteparawidth
+    {\hsize\ifnum\doublecol at number>\@ne
+                  \textwidth
+            \else \columnwidth \fi}}
+  {\def\FN at setfootnoteparawidth{\hsize\columnwidth}}
+\ifFN at perpage
+  \RequirePackage{perpage}
+  \MakePerPage{footnote}
+  \def\@stpelt#1{\global\csname c@#1\endcsname \m at ne
+    \stepcounter{#1}%
+    \pp at fix@MakePerPage{#1}%
+  }
+  \def\pp at fix@MakePerPage#1{%
+      \ifnum \value{#1}>\z@
+        \addtocounter{#1}\m at ne\fi
+  }
+  \def\pp at cl@end at iii\stepcounter#1\pp at fix@MakePerPage#2{}
+\fi
+\ifFN at para
+\else
+  \long\def\@makefntext#1{%
+    \ifFN at hangfoot
+      \bgroup
+      \setbox\@tempboxa\hbox{%
+        \ifdim\footnotemargin>0pt
+          \hb at xt@\footnotemargin{\@makefnmark\hss}%
+        \else
+          \@makefnmark
+        \fi
+      }%
+      \leftmargin\wd\@tempboxa
+      \rightmargin\z@
+      \linewidth \columnwidth
+      \advance \linewidth -\leftmargin
+      \parshape \@ne \leftmargin \linewidth
+      \@totalleftmargin \leftmargin
+      \footnotesize
+      \@setpar{{\@@par}}%
+      \leavevmode
+      \llap{\box\@tempboxa}%
+      \parskip\hangfootparskip\relax
+      \parindent\hangfootparindent\relax
+    \else
+      \parindent1em
+      \noindent
+      \ifdim\footnotemargin>\z@
+        \hb at xt@ \footnotemargin{\hss\@makefnmark}%
+      \else
+        \ifdim\footnotemargin=\z@
+          \llap{\@makefnmark}%
+        \else
+          \llap{\hb at xt@ -\footnotemargin{\@makefnmark\hss}}%
+        \fi
+      \fi
+    \fi
+    \footnotelayout#1%
+    \ifFN at hangfoot
+      \par\egroup
+    \fi
+  }
+\fi
+\ifFN at multiplefootnote
+  \providecommand*{\multiplefootnotemarker}{3sp}
+  \providecommand*{\multfootsep}{,}
+  \newcommand*\FN at footnotemark{%
+    \leavevmode
+    \ifhmode
+      \edef\@x at sf{\the\spacefactor}%
+      \FN at mf@check
+      \nobreak
+    \fi
+    \@makefnmark
+    \FN at mf@prepare
+    \ifhmode\spacefactor\@x at sf\fi
+    \relax
+  }
+  \def\FN at mf@prepare{%
+    \kern-\multiplefootnotemarker
+    \kern\multiplefootnotemarker\relax
+  }
+  \def\FN at mf@check{%
+    \ifdim\lastkern=\multiplefootnotemarker\relax
+      \edef\@x at sf{\the\spacefactor}%
+      \unkern
+      \textsuperscript{\multfootsep}%
+      \spacefactor\@x at sf\relax
+    \fi
+  }
+\else
+  \let\FN at mf@prepare\relax
+  \let\FN at footnotemark\@footnotemark
+\fi
+\ifFN at stablefootnote
+\let\FN at sf@@footnote\footnote
+\def\footnote{\ifx\protect\@typeset at protect
+    \expandafter\FN at sf@@footnote
+  \else
+    \expandafter\FN at sf@gobble at opt
+  \fi
+}
+\edef\FN at sf@gobble at opt{\noexpand\protect
+  \expandafter\noexpand\csname FN at sf@gobble at opt \endcsname}
+\expandafter\def\csname FN at sf@gobble at opt \endcsname{%
+  \@ifnextchar[%]
+    \FN at sf@gobble at twobracket
+    \@gobble
+}
+\def\FN at sf@gobble at twobracket[#1]#2{}
+\let\FN at sf@@footnotemark\footnotemark
+\def\footnotemark{\ifx\protect\@typeset at protect
+    \expandafter\FN at sf@@footnotemark
+  \else
+    \expandafter\FN at sf@gobble at optonly
+  \fi
+}
+\edef\FN at sf@gobble at optonly{\noexpand\protect
+  \expandafter\noexpand\csname FN at sf@gobble at optonly \endcsname}
+\expandafter\def\csname FN at sf@gobble at optonly \endcsname{%
+  \@ifnextchar[%]
+    \FN at sf@gobble at bracket
+    {}%
+}
+\def\FN at sf@gobble at bracket[#1]{}
+\fi
+\newcommand\setfnsymbol[1]{%
+  \@bsphack
+  \@ifundefined{FN at fnsymbol@#1}%
+  {%
+    \PackageError{footmisc}{Symbol style "#1" not known}%
+    \@eha
+  }{%
+    \expandafter\let\expandafter\@fnsymbol\csname
+                        FN at fnsymbol@#1\endcsname
+  }%
+  \@esphack
+}
+\let\FN at fnsymbol@lamport\@fnsymbol
+\newif\if at tempswb
+\DeclareDocumentCommand\DefineFNsymbols {smO{text}m}{%
+  \expandafter\ifx\csname FN at fnsymbol@#2\endcsname\relax
+    \PackageInfo{footmisc}{Declaring symbol style #2}%
+  \else
+    \PackageWarning{footmisc}{Redeclaring symbol style #2}%
+  \fi
+  \toks@{}%
+  \def\@tempb{\end}%
+  \FN at build@symboldef#4\end
+  \def\@tempc{math}%
+  \def\@tempd{#3}%
+  \expandafter\xdef\csname FN at fnsymbol@#2\endcsname##1{%
+    \ifx\@tempc\@tempd
+      \noexpand\ensuremath
+    \else
+      \noexpand\nfss at text
+    \fi
+    {%
+      \noexpand\ifcase##1%
+      \the\toks@
+      \noexpand\else
+      \IfBooleanTF#1{\noexpand\@ctrerr}%
+        {\noexpand\FN at orange##1}%
+      \noexpand\fi
+    }%
+  }%
+}
+\def\FN at build@symboldef#1{%
+  \def\@tempa{#1}%
+  \ifx\@tempa\@tempb
+  \else
+    \toks@\expandafter{\the\toks@\or#1}%
+    \expandafter\FN at build@symboldef
+  \fi
+}
+\DeclareDocumentCommand\DefineFNsymbolsTM {smm}{%
+  \expandafter\ifx\csname FN at fnsymbol@#2\endcsname\relax
+    \PackageInfo{footmisc}{Declaring symbol style #2}%
+  \else
+    \PackageWarning{footmisc}{Redeclaring symbol style #2}%
+  \fi
+  \toks@{}%
+  \def\@tempb{\end}%
+  \FN at build@symboldefTM#3\end\@null
+  \expandafter\xdef\csname FN at fnsymbol@#2\endcsname##1{%
+    \noexpand\ifcase##1%
+      \the\toks@
+    \noexpand\else
+      \IfBooleanTF#1{\noexpand\@ctrerr}%
+        {\noexpand\FN at orange##1}%
+      \noexpand\fi
+  }%
+}
+\def\FN at build@symboldefTM#1#2{%
+  \def\@tempa{#1}%
+  \ifx\@tempa\@tempb
+  \else
+    \toks@\expandafter{\the\toks@\or\TextOrMath{#1}{#2}}%
+    \expandafter\FN at build@symboldefTM
+  \fi
+}
+\def\FN at orange#1{%
+  \ifFN at robust
+    \@arabic#1%
+    \@bsphack
+    \PackageInfo{footmisc}{Footnote number \number#1 out of range}%
+    \protect\@fnsymbol at orange
+    \@esphack
+  \else \@ctrerr \fi
+}
+\global\let\@diagnose at fnsymbol@orange\relax
+\AtEndDocument{\@diagnose at fnsymbol@orange}
+\def\@fnsymbol at orange{%
+  \gdef\@diagnose at fnsymbol@orange{%
+    \PackageWarningNoLine{footmisc}{Some footnote number(s)
+      were out of range
+      \MessageBreak
+      see log for details%
+    }%
+  }%
+}
+\DefineFNsymbolsTM{bringhurst}{%
+  \textasteriskcentered *%
+  \textdagger    \dagger
+  \textdaggerdbl \ddagger
+  \textsection   \mathsection
+  \textbardbl    \|%
+  \textparagraph \mathparagraph
+}%
+\DefineFNsymbolsTM{chicago}{%
+  \textasteriskcentered *%
+  \textdagger    \dagger
+  \textdaggerdbl \ddagger
+  \textsection   \mathsection
+  \textbardbl    \|%
+  \#\#%
+}%
+\DefineFNsymbolsTM{wiley}{%
+  \textasteriskcentered *%
+  {\textasteriskcentered\textasteriskcentered}{**}%
+  \textdagger    \dagger
+  \textdaggerdbl \ddagger
+  \textsection   \mathsection
+  \textparagraph \mathparagraph
+  \textbardbl    \|%
+}%
+\DefineFNsymbolsTM{lamport-robust}{%
+  \textasteriskcentered *%
+  \textdagger    \dagger
+  \textdaggerdbl \ddagger
+  \textsection   \mathsection
+  \textparagraph \mathparagraph
+  \textbardbl    \|%
+  {\textasteriskcentered\textasteriskcentered}{**}%
+  {\textdagger\textdagger}{\dagger\dagger}%
+  {\textdaggerdbl\textdaggerdbl}{\ddagger\ddagger}%
+}
+\DefineFNsymbolsTM*{lamport*}{%
+  \textasteriskcentered *%
+  \textdagger    \dagger
+  \textdaggerdbl \ddagger
+  \textsection   \mathsection
+  \textparagraph \mathparagraph
+  \textbardbl    \|%
+  {\textasteriskcentered\textasteriskcentered}{**}%
+  {\textdagger\textdagger}{\dagger\dagger}%
+  {\textdaggerdbl\textdaggerdbl}{\ddagger\ddagger}%
+  {\textsection\textsection}{\mathsection\mathsection}%
+  {\textparagraph\textparagraph}{\mathparagraph\mathparagraph}%
+  {\textasteriskcentered\textasteriskcentered\textasteriskcentered}{***}%
+  {\textdagger\textdagger\textdagger}{\dagger\dagger\dagger}%
+  {\textdaggerdbl\textdaggerdbl\textdaggerdbl}{\ddagger\ddagger\ddagger}%
+  {\textsection\textsection\textsection}%%
+    {\mathsection\mathsection\mathsection}%
+  {\textparagraph\textparagraph\textparagraph}%%
+    {\mathparagraph\mathparagraph\mathparagraph}%
+}
+\setfnsymbol{lamport*}
+\DefineFNsymbolsTM{lamport*-robust}{%
+  \textasteriskcentered *%
+  \textdagger    \dagger
+  \textdaggerdbl \ddagger
+  \textsection   \mathsection
+  \textparagraph \mathparagraph
+  \textbardbl    \|%
+  {\textasteriskcentered\textasteriskcentered}{**}%
+  {\textdagger\textdagger}{\dagger\dagger}%
+  {\textdaggerdbl\textdaggerdbl}{\ddagger\ddagger}%
+  {\textsection\textsection}{\mathsection\mathsection}%
+  {\textparagraph\textparagraph}{\mathparagraph\mathparagraph}%
+  {\textasteriskcentered\textasteriskcentered\textasteriskcentered}{***}%
+  {\textdagger\textdagger\textdagger}{\dagger\dagger\dagger}%
+  {\textdaggerdbl\textdaggerdbl\textdaggerdbl}{\ddagger\ddagger\ddagger}%
+  {\textsection\textsection\textsection}%%
+    {\mathsection\mathsection\mathsection}%
+  {\textparagraph\textparagraph\textparagraph}%%
+    {\mathparagraph\mathparagraph\mathparagraph}%
+}
+\newcommand\mpfootnotemark{%
+  \@ifnextchar[%
+    \@xmpfootnotemark
+    {%
+      \stepcounter\@mpfn
+      \protected at xdef\@thefnmark{\thempfn}%
+      \@footnotemark
+    }%
+}
+\def\@xmpfootnotemark[#1]{%
+  \begingroup
+    \csname c@\@mpfn\endcsname #1\relax
+    \unrestored at protected@xdef\@thefnmark{\thempfn}%
+  \endgroup
+  \@footnotemark
+}
+\@ifpackageloaded{hyperref}{%
+  \let\H@@footnotetext\FN at footnotetext
+  \let\H@@footnotemark\FN at footnotemark
+}{%
+  \let \@footnotetext \FN at footnotetext
+  \let\@footnotemark  \FN at footnotemark
+}
+\endinput
+%%
+%% End of file `footmisc.sty'.


Property changes on: trunk/Master/texmf-dist/tex/latex/footmisc/footmisc-2022-02-14.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/footmisc/footmisc.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/footmisc/footmisc.sty	2025-03-10 20:05:54 UTC (rev 74556)
+++ trunk/Master/texmf-dist/tex/latex/footmisc/footmisc.sty	2025-03-10 20:06:05 UTC (rev 74557)
@@ -9,7 +9,7 @@
 %% This is a generated file.
 %% 
 %% Copyright (c) 1995-2011 Robin Fairbairns
-%% Copyright (c) 2018-2023 Robin Fairbairns, Frank Mittelbach
+%% Copyright (c) 2018-2025 Robin Fairbairns, Frank Mittelbach
 %% 
 %% This file was generated from file(s) of the LaTeX `footmisc Bundle'.
 %% --------------------------------------------------------------------
@@ -35,19 +35,21 @@
 %% where one can also log issues in case there are any.
 %% 
 %% File: footmisc.dtx (C) Copyright 1995-2011 Robin Fairbairns
-%%                    (C) Copyright 2018-2024 Frank Mittelbach
+%%                    (C) Copyright 2018-2025 Frank Mittelbach
 \NeedsTeXFormat{LaTeX2e}
 \providecommand\DeclareRelease[3]{}
 \providecommand\DeclareCurrentRelease[2]{}
 
 \DeclareRelease{v5}{2011-06-06}{footmisc-2011-06-06.sty}
-\DeclareCurrentRelease{}{2022-02-14}
+\DeclareRelease{v6}{2022-02-14}{footmisc-2022-02-14.sty}
+\DeclareCurrentRelease{}{2025-03-10}
 \ProvidesPackage{footmisc}%
-        [2024/12/24 v6.0g
+        [2025/03/10 v7.0a
      a miscellany of footnote facilities%
                    ]
 
 \NeedsTeXFormat{LaTeX2e}[2020/10/01]
+\IfFormatAtLeastF{2025-06-01}{\input{footmisc-2022-02-14.sty}\endinput}
 \newtoks\FN at temptoken
 \providecommand\protected at writeaux{%
   \protected at write\@auxout
@@ -150,207 +152,55 @@
 \newif\ifFN at multiplefootnote  \FN at multiplefootnotefalse
 \DeclareOption{multiple}{\FN at multiplefootnotetrue}
 \ProcessOptions
-\def \@makecol {%
-  \@kernel at before@cclv
-  \setbox\@outputbox \box\@cclv
-  \@outputbox at removebskip
-  \let\@elt\relax
-  \xdef\@freelist{\@freelist\@midlist}%
-  \global \let \@midlist \@empty
-  \@makecol at appendblocks
-  \ifvbox\@kludgeins
-     \@makespecialcolbox
-  \else
-     \@makenormalcolbox
-  \fi
-  \global \maxdepth \@maxdepth
-}
-\newdimen\@outputbox at depth
-\def \@makenormalcolbox {%
-   \setbox\@outputbox \vbox to\@colht {%
-       \@texttop
-       \@outputbox at depth \dp\@outputbox
-       \unvbox \@outputbox
-       \vskip -\@outputbox at depth
-       \@textbottom
-      }%
-}
-\def \@makespecialcolbox {%
-   \@outputbox at append {\vskip-\@outputbox at depth}%
-   \@tempdima \@colht
-   \ifdim \wd\@kludgeins>\z@
-     \advance \@tempdima -\ht\@outputbox
-     \advance \@tempdima \pageshrink
-     \setbox\@outputbox \vbox to \@colht {%
-       \unvbox\@outputbox
-       \vskip \@tempdima
-       \@textbottom
-       }%
-   \else
-     \advance \@tempdima -\ht\@kludgeins
-     \setbox \@outputbox \vbox to \@colht {%
-       \vbox to \@tempdima {%
-         \unvbox\@outputbox
-         \@textbottom}%
-       \vss}%
-   \fi
-   {\setbox \@tempboxa \box \@kludgeins}%
-}
-\ifFN at fixskip
-  \def\@outputbox at removebskip{%
-    \ifx\@textbottom\relax \else
-      \@outputbox at append{%
-        \@tempskipa\lastskip
-        \ifnum \gluestretchorder\@tempskipa>\z@
-          \vskip-\@tempskipa
-          \xdef\@outputbox at reinsertbskip
-              {\noexpand\@outputbox at append{\vskip\the\@tempskipa}}%
-        \else
-          \global\let\@outputbox at reinsertbskip\relax
-        \fi
-      }%
-   \fi
-  }
-\let\@outputbox at reinsertbskip\relax
-\else
-  \let\@outputbox at removebskip \relax
-  \let\@outputbox at reinsertbskip\relax
-\fi
-\providecommand\@kernel at before@cclv{}
-\providecommand\@kernel at before@footins{}
-\def\@outputbox at append #1{%
-     \setbox\@outputbox \vbox {%
-       \boxmaxdepth \@maxdepth
-       \@outputbox at depth\dp\@outputbox      % if needed in #1
-       \unvbox \@outputbox
-       #1%
-     }%
-}
-\def\@outputbox at appendfootnotes {%
-   \ifvoid\footins \else
-     \@makecol at handlesplitfootnotes
-     \@makecol at preparefootinshook
-     \@outputbox at append{%
-       \vskip \skip\footins
-       \@kernel at before@footins
-       \color at begingroup
-         \normalcolor
-         \footnoterule
-         \csname pdfcolfoot at current\endcsname
-         \unvbox \footins
-       \color at endgroup
-      }%
-  \fi
-}
-\def \@outputbox at attachfloats {\@combinefloats}
-\def \@outputbox at attachtopfloats {%
-  \ifx \@toplist\@empty \else \@cflt \fi
-}
-\def \@outputbox at attachbottomfloats {%
-    \ifx \@botlist\@empty \else \@cflb \fi
-}
-\def\@makecol at handlesplitfootnotes {%
-  \ifnum\insertpenalties>\z@
-    \@makecol at splitfootnotemessagehook
-  \fi
-}
-\let \@makecol at splitfootnotemessagehook \@empty
-\let \@makecol at preparefootinshook \@empty
 \ifFN at para
-  \def\@makecol at preparefootinshook {%
+   \NewSocketPlug{build/column/footnotes}{para}{%
      \global\setbox\footins\vbox{\FN at makefootnoteparagraph}%
-    }
+   }
+  \AssignSocketPlug{build/column/footnotes}{para}
 \fi
-\def\@if at flushbottom@TF{%
-  \ifx\@textbottom\relax
-    \expandafter\@firstoftwo
-  \else
-    \expandafter\@secondoftwo
-  \fi
-}
-\def\@if at footnotes@TF{%
-  \ifvoid\footins
-    \expandafter\@secondoftwo
-  \else
-    \expandafter\@firstoftwo
-  \fi
-}
-\def\@if at bfloats@TF{%
-  \ifx \@botlist\@empty
-    \expandafter\@secondoftwo
-  \else
-    \expandafter\@firstoftwo
-  \fi
-}
+\ifFN at fixskip \else
+  \let\@outputbox at removebskip  \relax
+  \let\@outputbox at reinsertbskip\relax
+\fi
 \ifcase \FN at bottomcases\relax
-\ERROR
+  \ERROR
 \or
   \ifFN at abovefloats
-    \def\@makecol at appendblocks {%
-       \@if at footnotes@TF
-          {\@outputbox at append{\vfill}}%
-          {\@if at bfloats@TF{\@outputbox at append{\vfill}}%
-                          {\@outputbox at reinsertbskip}}%
-       \@outputbox at appendfootnotes
-       \@outputbox at attachfloats
-      }
+    \AssignSocketPlug {build/column/outputbox}{space-footnotes-floats}
   \else
-    \def\@makecol at appendblocks {%
-       \@outputbox at attachfloats
-       \@if at footnotes@TF
-          {\@outputbox at append{\vfill}}%
-          {\@outputbox at reinsertbskip}%
-       \@outputbox at appendfootnotes
-    }
+    \AssignSocketPlug {build/column/outputbox}{floats-space-footnotes}
   \fi
 \or
   \ifFN at abovefloats
-     \def\@makecol at appendblocks {%
-        \@outputbox at appendfootnotes
-        \@if at bfloats@TF
-            {\@outputbox at append{\vfill}}%
-            {\@outputbox at reinsertbskip}%
-        \@outputbox at attachfloats
-     }
+    \AssignSocketPlug {build/column/outputbox}{footnotes-space-floats}
   \else
-     \def\@makecol at appendblocks {%
-       \@if at footnotes@TF
-          {\@outputbox at append{\vfill}}%
-          {\@if at bfloats@TF{\@outputbox at append{\vfill}}%
-                          {\@outputbox at reinsertbskip}}%
-        \@outputbox at attachfloats
-        \@outputbox at appendfootnotes
-     }
+    \AssignSocketPlug {build/column/outputbox}{space-floats-footnotes}
   \fi
 \or
   \ifFN at abovefloats
-    \def\@makecol at appendblocks {%
-       \@outputbox at appendfootnotes
-       \@outputbox at attachfloats
-       \@outputbox at reinsertbskip
-    }
+     \AssignSocketPlug {build/column/outputbox}{footnotes-floats}
   \else
-    \def\@makecol at appendblocks {%
-       \@outputbox at attachfloats
-       \@outputbox at appendfootnotes
-       \@outputbox at reinsertbskip
-}
+    \AssignSocketPlug {build/column/outputbox}{floats-footnotes}
   \fi
 \else
-\ERROR
+  \ERROR
 \fi
 
 \newif\ifFN at setspace
-\@ifpackageloaded{setspace}{%
-  \FN at setspacetrue
-  \@ifclassloaded{memoir}{%
-    \let\FN at baselinestretch\m at m@singlespace
-  }{%
-    \let\FN at baselinestretch\setspace at singlespace
+\@ifpackageloaded{setspace}%
+  {%
+    \FN at setspacetrue
+    \@ifclassloaded{memoir}%
+      {%
+        \let\FN at baselinestretch\m at m@singlespace
+      }%
+     {%
+       \let\FN at baselinestretch\setspace at singlespace
+     }%
   }%
-}{%
-  \FN at setspacefalse
-}
+  {%
+    \FN at setspacefalse
+  }
 \ifFN at para
   \long\def\FN at footnotetext#1{%
     \insert\footins{%
@@ -789,6 +639,12 @@
   \let \@footnotetext \FN at footnotetext
   \let\@footnotemark  \FN at footnotemark
 }
+\AddToHook{file/marginfix.sty/after}[footmisc]{%
+  \FirstAidNeededT{marginfix}{sty}%
+       {2020/05/06 v1.2 Fix Margin Paragraphs}%
+     {\let \@outputbox at attachfloats \@combinefloats}%
+}
+\DeclareHookRule{file/marginfix.sty/after}{firstaid}{voids}{footmisc}
 \endinput
 %%
 %% End of file `footmisc.sty'.



More information about the tex-live-commits mailing list.