![强制所有浮动到文档末尾,而不使用 endfloat,与 htlatex 兼容](https://linux22.com/image/254619/%E5%BC%BA%E5%88%B6%E6%89%80%E6%9C%89%E6%B5%AE%E5%8A%A8%E5%88%B0%E6%96%87%E6%A1%A3%E6%9C%AB%E5%B0%BE%EF%BC%8C%E8%80%8C%E4%B8%8D%E4%BD%BF%E7%94%A8%20endfloat%EF%BC%8C%E4%B8%8E%20htlatex%20%E5%85%BC%E5%AE%B9.png)
让所有浮点数强制出现在文档末尾的最简单的方法是什么?该解决方案应该适用于htlatex
,在这种情况下,浮动元素应该出现在 HTML 文档的末尾。(最初的问题是,强制所有浮动元素到文档末尾,而不使用 endfloat,没有 htlatex 要求,并且该解决方案不适用于 htlatex。除此之外,这是一个副本,对此表示抱歉。我不想编辑原始问题,但我可以。)
该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
rigfigure
您可以使用和的组合\AtEndDocument
:
\AtEndDocument{\clearpage}
紧接着的地方\begin{document}
把每个包裹
richfigure
起来\AtEndDocument{...}