我正在写一篇双栏论文,想在其中添加图片。有人建议我直接让 LaTeX 处理这些图片,但我发现它会在文档的许多部分产生大量空白。我试着移动一些东西,试图预测 LaTeX 最喜欢哪里,但这花了我几个小时的时间,这真让人恼火。
有没有“总是这样做”的指导方针来防止这种情况发生,或者有办法告诉 LaTeX 闭嘴并让我格式化文档?我讨厌我的工具试图代替我思考。
答案1
也许这些帖子可以给你一点帮助:
这些帖子(以及我自己的建议)给出了一些一般性建议:
- 在包含图形时,使用诸如
[h]
(此处)、[b]
(底部)、[t]
(顶部)、 (单独页面) 等选项来告诉 LaTeX 应将图形放置在何处。例如, LaTeX 将尝试将图形和放置在其中。它始终尝试使用允许的位置按、、、的顺序放置图形,而不管用户指定的顺序如何(并执行相同的操作)。检查[p]
\begin{figure}[bh] ... \end{figure}
h
b
h
t
b
p
[hbt]
[bth]
帖子B和帖子C和本背页摘要了解详情。 - 用于
!
覆盖 LaTeX 用于确定“良好”浮动位置的内部参数(如背面摘要)。例如,\begin{figure}[h!] ... \end{figure}
将忽略用户约束,以便将图形放置在“此处”。如果您遇到许多空白,也可能是因为您使用得太频繁,并且您迫使 latex 使用更糟糕的位置来满足您的要求。有关检查!
的良好解释!
帖子B和帖子C。 - 如果你想进一步强制“这里”,请使用包
float
和\begin{figure}[H]
,“这基本上将浮动图形变成了常规的非浮动图形。”,正如帖子A它会将图形精确地放置在 LATEX 代码中的位置。同时检查文档包float
,以及说明帖子B和帖子C。 - 有时,不使用浮动环境(如)会有所帮助。直接在文本中
figure
使用。参见\includegraphics
帖子A了解详情。 - 用于
\clearpage
强制将上述所有图形放置在文本继续之前。 - 使用该
adjustbox
包。检查文档了解详情。 - 尝试
\vspace{}
加入一些刻意的空白,这可能会帮助你实现你想要的布局。 - 使用
minipage
环境。检查这个帖子 - 如果你注意到你的图形几乎适合你想要的位置,但它被移动了,因为它有点太大,请稍微调整一下图形的大小。例如
\includegraphics[scale=0.95]{myimage.png}
或\includegraphics[width=0.95\textwidth]{myimage.png}
- 用于
wrapfigure
将文本环绕在图形周围。检查维基百科和文档了解详情。
特别针对双列文档:
如果您的图表有两列宽,则需要插入它们以\begin{figure*} ... \end{figure*}
确保乳胶正确嵌入它们。您可能遇到了奇怪的放置问题,因为您试图将两列图表作为单列图表包含。检查这篇文章了解详情。另请注意,figure*
不支持[h]
或[b]
。
我希望这些工具能够帮助您对抗 latex-figure-placement。
答案2
您没有说明为什么会出现大片空白,这是意料之外的。为了提供帮助,我提供了一个使用多个图表的示例文档。如果您可以修改它并将其添加到您的问题中,以显示您遇到的问题,那么有人可以提出修改建议。
\documentclass[twocolumn]{article}
\usepackage{graphicx,float}
\raggedbottom
\begin{document}
\section{zzzz}
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
\begin{figure}[htbp]
\centering
\includegraphics[width=\linewidth]{example-image}
\caption{A floating figure}
\end{figure}
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
\begin{figure}[htbp]
\centering
\includegraphics[width=\linewidth]{example-image-a}
\caption{Another floating figure}
\end{figure}
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
\begin{figure}[htbp]
\centering
\includegraphics[width=\linewidth]{example-image-b}
\caption{Yet another floating figure}
\end{figure}
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
\section{\raggedright A long appendix with non floating figures and no text}
\begin{figure}[H]
\centering
\includegraphics[width=.8\linewidth]{example-image-c}
\caption{H figure}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=.8\linewidth]{example-image}
\caption{H figure}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=.8\linewidth]{example-image-b}
\caption{H figure}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=.8\linewidth]{example-image-a}
\caption{H figure}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=.8\linewidth]{example-image}
\caption{H figure}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=.8\linewidth]{example-image-c}
\caption{H figure}
\end{figure}
\begin{figure}[H]
\centering
\includegraphics[width=.8\linewidth]{example-image}
\caption{H figure}
\end{figure}
\end{document}
答案3
这似乎违反直觉,但我总是等到最后一分钟才添加数字。我只是写下我想说的一切,最后加上数字。然后我调整文本或使用上面提到的技巧来获得我想要的输出。
这减轻了摆弄数字所带来的大部分压力。
答案4
到目前为止,回复中还没有提到什么,也不属于我的长篇文章的内容 如何影响 LaTeX 中图形和表格等浮动环境的位置?关于浮点算法(因为当时还没有写出来)的包fewerfloatpages
(相关文章链接)它实现了一个改进的算法,解决了大部分半空浮动页面的问题(或者章节/文章末尾的所有问题)。在其基本形式中,您所要做的就是加载包,对于大多数文档来说,这已经足够了,无需任何配置。
但是正如大卫在他的回复中所写,目前还不清楚你为什么会遇到麻烦,例如,如果你总是使用[H]
(即你的浮动并没有真正浮动,那么什么都无济于事,如果浮动太大而无法容纳,因此移动到下一页,你最终会得到糟糕的分页符或列中断。