将选定的浮动元素放置在文档末尾

将选定的浮动元素放置在文档末尾

有没有办法让浮点数出现在文档的末尾,而不管它放在源代码的什么位置?

使用该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}

因此浮动页面所需的最小尺寸无法实现,

相关内容