如何自动将浮动内容分布在整个章节?

如何自动将浮动内容分布在整个章节?

在包含许多图片的章节中,我很难让浮点图与文本交织在一起。引用http://en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions

作者有时会快速连续地出现许多浮动,这就带来了一个问题:如何让浮动在页面上保持合适,同时又能为文本留出空间。在这种情况下,LaTeX 会将它们全部堆叠起来,并尽可能将它们一起打印,或者将它们留在章节末尾以示抗议。技巧是将它们在文本中隔开,这样它们就不会干扰你的论点或讨论,也不会影响排版页面的视觉平衡。

我觉得这不是重点,必须手动将图形分散在源文件中,以便 LaTeX 能够产生视觉上令人愉悦的结果(如果我觉得排版软件应该这样工作,我会使用 Word)。为什么我不能只拿一堆浮点数并告诉 LaTeX:“你拿这些并把它们放在某处在本章中。我知道你能做到!”

我制作了一个 MWE,它表明无论是在数字之前还是之后放置文本都无济于事。

\documentclass{article}
\usepackage{mwe}
\begin{document}
\blindtext\par\blindtext\par\blindtext\par\blindtext\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par

\begin{figure}
\centering
\includegraphics[width=\linewidth]{example-image-a}
\caption{A figure.}
\end{figure}

\begin{figure}
\centering
\includegraphics[width=\linewidth]{example-image-a}
\caption{A figure.}
\end{figure}

\begin{figure}
\centering
\includegraphics[width=\linewidth]{example-image-a}
\caption{A figure.}
\end{figure}

\begin{figure}
\centering
\includegraphics[width=\linewidth]{example-image-a}
\caption{A figure.}
\end{figure}

\begin{figure}
\centering
\includegraphics[width=\linewidth]{example-image-a}
\caption{A figure.}
\end{figure}
\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par\blindtext\par
\end{document}

文本文本文本图图图文本文本文本

我知道我可以用\begin{figure}[t]并会得到我想要的,但是,这几乎不是浮点数的意义所在力量将它们放到某个位置。我愿意让 LaTeX 将浮动元素放在浮动页面或底部或任何地方,只要它至少能达到不错的效果。在我看来,在任何排版领域,将文本和图形混合放在一页上而另一页上不混合是没有意义的。

答案1

TeX 中的分页在每次换行时都会被考虑(与段落优化的换行不同),这主要是因为系统设计时的内存限制。在第一次换行时,LaTeX 有足够的文本和浮动来制作t。然后它没有足够的文本来制作文本页面(因为其余文本尚未看到),但它确实有一些大于半页的待处理浮动,因此允许制作浮动页面,所以它这样做了。它选择最佳可用选项在那时候– 如果稍后出现更多文本,它不会阻止事情发生。

由于无法对分页符进行全局优化,因此你唯一的选择是强制 TeX 保留浮动,直到有更多文本可用。将其添加到序言中

\renewcommand\floatpagefraction{.75}
\makeatletter\def\fps@figure{htbp}\makeatother

打破浮动页面的平衡。第一行表示浮动页面应占满四分之三(使浮动页面不太可能),第二行则添加了h默认浮动区域列表(使文本更可能浮动)。

在此处输入图片描述

当然,其中一个缺点是,浮动更有可能被阻止,直到 TeX 达到浮动屏障,然后不得不不顾一切地丢弃它们。另一个缺点是,实际上美观的解决方案可能会被阻止。

相关内容