Erzwingt alle Floats an das Ende des Dokuments, ohne endfloat zu verwenden, kompatibel mit htlatex

Erzwingt alle Floats an das Ende des Dokuments, ohne endfloat zu verwenden, kompatibel mit htlatex

Was ist der einfachste Weg, alle Floats zwangsweise am Ende des Dokuments anzuzeigen?Die Lösung sollte funktionieren mithtlatex, sollten die Floats in diesem Fall am Ende des HTML-Dokuments erscheinen. (Die ursprüngliche Frage,Erzwingen Sie alle Floats am Ende des Dokuments, ohne endfloat zu verwenden, hatte die htlatex-Anforderung nicht und die Lösung funktioniert nicht für htlatex. Ansonsten ist es eine Kopie, das tut mir leid. Ich wollte die ursprüngliche Frage nicht bearbeiten, aber ich konnte.)

Das endfloatPaket ist keine Option, siehe unten. Die folgenden Fragen sind damit verwandt, aber nicht hilfreich:

So platzieren Sie alle Floats (insbesondere Tabellen) an einer bestimmten Stelle im Dokument

Platzieren Sie alle Floats zuletzt, ohne die Nummerierung zu ändern

Einzelheiten

In unserer Umgebung haben wir Wrapper zum Erstellen von Abbildungen, Tabellen usw. Die Wrapper sind als Umgebungen implementiert, die „alles“ zulassen und darüber hinaus unter anderem den langen und kurzen Bildunterschriftennamen, das Label und den Inhalt der Abbildung akzeptieren. Die Implementierung der Wrapper kann für verschiedene Dokumentlayouts geändert werden (Bildunterschrift oben/unten, Abbildung nach Regel ja/nein getrennt, ...).

Ein bestimmtes Layout erfordert, dass jede Abbildung nach dem Hauptdokument platziert wird.

Eigene Versuche

Mir fällt da das endfloatPaket ein. Ich konnte es allerdings nicht zum Laufen bringen, da die Figuren durch einen Wrapper erstellt werden.

Ich habe versucht, dies mit zu implementieren \gappto: Der Befehl zum Erstellen der Figur wurde einfach an einen globalen Hook angehängt, der direkt vor ausgeführt wird \end{document}. Dies funktionierte, als der Wrapper zum Erstellen der Figur nur ein Befehl war, aber jetzt ist es eine Umgebung, die „alles“ darin zulässt. Ich habe meinen Versuch unten zum MnWE hinzugefügt, aber dies führt zu der folgenden Fehlermeldung:

! Extra }, or forgotten \endgroup.
\environment_richfigure_end_aux:w ...gure}\egroup 

l.39       \end{richfigure}

Wie würden Sie dies umsetzen?

MnWE

\documentclass{scrartcl}
\pagestyle{empty}
\usepackage{caption}
\usepackage{xparse}
\usepackage{etoolbox}

\newcommand{\delayedfigures}{}

% Comment the following line to get working code
\newcommand{\dofigure}[1]{\gappto{\delayedfigures}{\clearpage#1}}

% The example works with the default implementation of \dofigure
\providecommand{\dofigure}[1]{#1}

%%   \begin{richfigure}
%%     [<placement>, e.g. htp (h=here, t=top, p=page)]
%%     {<short caption>}
%%     {<long caption>}
%%     {<\label{label}>}
%%       <\includegraphics[...]{figure}>
%%   \end{richfigure}
\NewDocumentEnvironment{richfigure}{O{tbp} m m m}{%
  \dofigure\bgroup%{%
    \begin{figure}[#1]%
      \caption[#2]{#3}#4%
        }{% Here, the contents of the environment are placed
    \end{figure}%
  \egroup%{
}

\gpreto{\enddocument}{\delayedfigures}

% Usage example
\begin{document}
  Main document contents.

  \begin{richfigure}{Short caption}{Long caption}{\label{fig:1}}
    Figure contents.
  \end{richfigure}

  All figures are to appear on separate pages, one per page.
\end{document}

Antwort1

Sie können eine Kombination aus rigfigureund verwenden \AtEndDocument:

  1. Platzieren Sie \AtEndDocument{\clearpage}gleich nach\begin{document}

  2. Wickeln Sie jedes richfigurein\AtEndDocument{...}

verwandte Informationen