![如何禁止 LaTeX 在图形之间放置文字?](https://linux22.com/image/244019/%E5%A6%82%E4%BD%95%E7%A6%81%E6%AD%A2%20LaTeX%20%E5%9C%A8%E5%9B%BE%E5%BD%A2%E4%B9%8B%E9%97%B4%E6%94%BE%E7%BD%AE%E6%96%87%E5%AD%97%EF%BC%9F.png)
我有一些图形,我想让它们在文档中一个接一个地排列。是否可以禁止在它们之间粘贴任何内容,即使它们之间有一些空格?
\begin{figure}[h!bt]
\includegraphics[scale=1]{images/shape.png}
\caption{ShapeWithSlotsDoubleLevel}
\label{fig:ShapeWithSlotsDoubleLevel}
\end{figure}
\begin{figure}[h!bt]
\includegraphics[scale=1]{images/shape2.png}
\caption{ShapeWithSlotsDoubleLevel}
\label{fig:ShapeWithSlotsDoubleLevel}
\end{figure}
答案1
我假设您想要创建两个单独的浮点图,而不是一个将两个不同图像组合在一起的浮点图,部分原因是您可以 (i) 为两个图分配单独的标题和标签,(ii) 保留为它们创建单独交叉引用的能力,以及 (iii) 保持与软件包的兼容性hyperref
。但是,如果您同意将两个图像放在一个 LaTeX 浮点图中(这当然也确保它们永远不会分开),则应该遵循 @cmhughes 的回答中提供的建议。
达到上一句表达的目标和我认为,如果图形的尺寸没有任何限制,那么确保两个浮动图形连续放置(即,它们之间没有任何文本)通常是不可能的。也就是说,如果每个图形的高度都大于0.5\textheight
,那么 LaTeX 就无法将它们放在同一页上……
因此,为了便于讨论,我将假设图形的总高度不超过 LaTeX 参数\floatpagefraction
。文章文档类中此参数的默认值仅为 0.5,这意味着如果浮动(或浮动组合)的高度超过 0.5,则浮动将放置在单独的页面上。附言:我建议您发出命令
\renewcommand\topfraction{0.85}
\renewcommand\bottomfraction{0.85}
\renewcommand\textfraction{0.1}
\renewcommand\floatpagefraction{0.85}
在文档的序言中。这样,LaTeX 将允许一些文本与浮动元素共存,只要浮动元素的总高度不超过 的 85% \textheight
。
经过这么长的介绍,如何回答你的问题呢?我将继续进一步假设,两个应该放在一起的浮动元素,中间不插入文本,应该放在页面顶部。以下代码使用包\afterpage
的命令afterpage
,可以帮你解决这个问题:
\afterpage{%
\clearpage\clearpage
% Begin by clearing out all accumulated floats (if any) and relaxing some
% of LaTeX's restrictions on how floats may be placed
\begin{figure}[t]
\caption{This is the first of two consecutive figures}\label{fig:firstoftwo}
...
\end{figure}
\begin{figure}[h]
\caption{This is the second of two consecutive figures}\label{fig:secondoftwo}
...
\end{figure}
} % end of \afterpage{...} group
假设两个图形适合放在一页上,而且它们的总高度小于\floatpagefraction
。(您已经增加了\topfraction
和的值\floatpagefraction
,不是吗?)第一\clearpage
条指令清除任何已经挂起的浮动,而第二条\clearpage
命令确保我们确实将从页面顶部开始。(如果没有挂起的浮动,则第一条和第二\clearpage
条指令都将被忽略,因为我们已经在页面顶部。)观察两个浮动上的t
和h
放置参数:它们将在本例中成功应用,没有中间文本,因为您保证位于页面顶部(由于语句\afterpage
和\clearpage
命令)。
顺便说一句,您可以通过更改长度参数的值来更改两个相邻浮动之间的距离\floatsep
(文章文档类中的默认值是正文的字体大小为 10pt:“12pt 加 2pt 减 2pt”)。如果您想增加浮动之间的垂直间距,您可以选择,例如,
\setlength\floatsep{1.5\baselineskip plus 0.25\baselineskip minus 0.25\baselineskip}
顺便说一下,最好将此长度保持为“橡胶”长度,因为橡胶长度的存在极大地方便了 LaTeX 找到合适的分页符。
答案2
如果您希望它们紧挨着,则可以将它们放在同一个位置float
:
\begin{figure}[h!bt]
\centering
\includegraphics[scale=1]{images/shape.png}
\caption{ShapeWithSlotsDoubleLevel}
\label{fig:firstlabel}
\includegraphics[scale=1]{images/shape2.png}
\caption{ShapeWithSlotsDoubleLevel}
\label{fig:secondlabel}
\end{figure}
当然,这不允许在它们之间进行分页。根据@Wernser的建议,您也可以将其放在\par\vspace{\intextsep}
第一个标签后面。
另一种选择是使用 s 将它们并排放置minipage
;请注意%
后面\end{minipage}
以避免多余的(不需要的)空间。
\begin{figure}[h!bt]
\begin{minipage}{0.5\textwidth}
\centering
\includegraphics[scale=1]{images/shape.png}
\caption{ShapeWithSlotsDoubleLevel}
\label{fig:firstlabel}
\end{minipage}%
\begin{minipage}{0.5\textwidth}
\centering
\includegraphics[scale=1]{images/shape2.png}
\caption{ShapeWithSlotsDoubleLevel}
\label{fig:secondlabel}
\end{minipage}%
\end{figure}