如何禁止 LaTeX 在图形之间放置文字?

如何禁止 LaTeX 在图形之间放置文字?

我有一些图形,我想让它们在文档中一个接一个地排列。是否可以禁止在它们之间粘贴任何内容,即使它们之间有一些空格?

\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条指令都将被忽略,因为我们已经在页面顶部。)观察两个浮动上的th放置参数:它们将在本例中成功应用,没有中间文本,因为您保证位于页面顶部(由于语句\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}

相关内容