有没有办法让浮点数出现在文档的末尾,而不管它放在源代码的什么位置?
使用该endfloat
包,我可以将浮点类型的所有出现都对齐到文档末尾,但我希望这只发生在选定的实例上。我想我可以定义一个新的自定义浮点类型,然后只处理endfloat
这些自定义浮点,但我想知道是否有更简单的解决方案。
就像是
\begin{figure}[e] % e for end of document
...
\end{figure}
会很好。
(或者,对我的用例来说更好的是,将是一种机制,允许我将整个部分/小节标记为包含在附录中,而不管它实际放在源代码中的什么位置。)
答案1
我不知道有任何方便使用的包。但是,一种解决方法是将受影响的浮点数保存在临时文件中,并在文档末尾读取该文件。以下是一个例子
\documentclass[12pt,a4paper]{article}
\usepackage{graphicx}
\usepackage{kantlipsum}
\NewDocumentCommand\movetoend{m}{%
\immediate\write\writeendfigures{%
\detokenize{#1}}}
\AtBeginDocument{%
\newwrite\writeendfigures
\immediate\openout\writeendfigures=myfile.tmp}
\AtEndDocument{%
\immediate\closeout\writeendfigures
% This branch may need some tests s.a. \IfFileExists{myfile.tmp}{True}{False}
\clearpage
\newread\readendfigures
\immediate\openin\readendfigures=myfile.tmp
\loop
\immediate\read\readendfigures to\linein
\linein
\ifeof\readendfigures
\else\repeat
\immediate\closein\readendfigures}
\begin{document}
\kant[1][1]
\begin{figure}[tbh]
\centering
\includegraphics[width=0.35\linewidth]{example-image-a}
\caption{Image 1 in the text}
\end{figure}
\kant[1][2]
\movetoend{%
\begin{figure}
\centering
\includegraphics[width=0.5\linewidth]{example-image}
\caption{Image 2 at the end}
\end{figure}}
\kant[1][3]
\movetoend{%
\begin{figure}
\centering
\includegraphics[width=0.5\linewidth]{example-image}
\caption{Image 3 at the end}
\end{figure}}
\kant[1][4]
\begin{figure}[tbh]
\centering
\includegraphics[width=0.35\linewidth]{example-image-b}
\caption{Image 2 in the text}
\end{figure}
\kant[1][5]
\end{document}
它生成这两个页面
答案2
图形保持有序,因此,如果一个图形走到最后,所有后面的图形都会走到最后。
如果你设置
\setcounter{totalnumber}{0}
浮动元素将不会放置在文本页面上,除非您再次增加它,因此带有不包括选项的浮动元素p
将不会被放置(除非您使用 覆盖约束!
)
如果希望p
在源中允许浮动,但在某些区域抑制浮动页面,请设置
\renewcommand\floatpagefraction{100}
因此浮动页面所需的最小尺寸无法实现,