強制所有浮動到文件末尾而不使用 endfloat

強制所有浮動到文件末尾而不使用 endfloat

讓所有浮動強制出現在文件末尾(每頁一個)的最簡單方法是什麼?該endfloat軟體包不是一個選項,請參見下文。以下問題相關但沒有幫助:

如何將所有浮動(特別是表格)放置在文件中的某個位置

將所有浮動放在最後而不更改編號

細節

在我們的環境中,我們有用於創建圖形、表格等的包裝器。包裝器的實作可以針對不同的文件版面進行變更(上面/下面的標題,按規則是/否分隔的圖,...)。

特定的佈局要求將每個圖形放置在主文檔之後的單獨頁面上。

自己的嘗試

endfloat我想到了包裹。然而,我無法讓它工作,因為這些數字是由包裝器創建的。

我嘗試使用以下方法實現此操作\gappto:圖形建立命令將僅附加到先前執行的全域掛鉤\end{document}。當圖形創建包裝器只是一個命令時,這是有效的,但現在它是一個允許「一切」在裡面的環境。我已將我的嘗試添加到下面的 MnWE 中,但這會導致以下錯誤訊息:

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

l.39       \end{richfigure}

你會如何實施這個?

錳錳礦

\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}

答案1

這是一個修改 floatcheck 並使用 [p] 作為放置的範例。浮動出現在各部分的結尾,每頁一個。

\documentclass{scrartcl}
\pagestyle{empty}
\usepackage{caption}
\usepackage{lipsum}
\makeatletter
\def \@largefloatcheck{\ht\@currbox 0.5\textheight}
\makeatother

\begin{document}
\section{baz}
  Main document contents.
\lipsum
\begin{figure}[p]
 \centerline{ Figure contents. }
\caption[Short caption]{Long caption of fig 1}\label{fig:1}
\end{figure}

\lipsum

All figures are to appear on separate pages, one per page.
\lipsum

\section{foo}
\lipsum
\begin{figure}[p]
 \centerline{ Figure contents. }
\caption[Short caption]{Long caption  of fig 2}\label{fig:2}
\end{figure}

\lipsum

\end{document}

相關內容