我一直在序言中使用此代码来控制文档中所有图形和表格的浮动。但是,我认为它会在每个图形/表格前后添加不必要的空白。有什么方法可以控制这种情况并最小化图形/图形和文本之间的空间?
\usepackage{float}
\let\origfigure\figure
\let\endorigfigure\endfigure
\renewenvironment{figure}[1][2] {
\expandafter\origfigure\expandafter[H]
} {
\endorigfigure
}
答案1
你有
\renewenvironment{figure}[1][2] {
\expandafter\origfigure\expandafter[H]
} {
\endorigfigure
}
并询问空格问题。几乎每一行都可能添加空格。
\renewenvironment{figure}[1][2]
这定义\begin{figure}
为具有一个可选参数的环境,如果不使用该选项,则\begin{figure}
等同于\begin{figure}[2]
(这可能不是有意的,因为2
这里没有定义的行为)由于根本不使用可选参数,默认值是任意的,也许[1][]
会更清楚。
{
这会在定义的开头添加一个空格标记,这可能会figure
在结果文档中产生一行虚假的空白,具体取决于放置的位置。通常最好使用,{%
这样就不会在定义中添加空格标记。
\expandafter\origfigure\expandafter[H]
H
这会在调用之前扩展不可扩展的令牌\origfigure
,因此这相当于
\origfigure[H]
如上所述,这会在环境的开头添加一个空格标记,这样不太可能在输出中产生空格,但再次以 结束该行%
是一种很好的做法。
由于#1
未使用,因此这里将忽略用户提供或默认的定位参数并[H]
始终使用。
H
设计上会在分页符处产生糟糕的空白,因为浮动图形是为了避免糟糕的分页符,而这会禁用这一点。更好的替代方案是直接使用,\includegraphics
因为figure
它只用于指定图形是浮动的(即可以移动)。H
(这实际上是我最初的想法:-)只是为了在文档的最终编辑阶段进行最终手动覆盖和手动定位,它永远不应被用作默认机制。
} {
再次,这里的行尾添加了一个空格标记,并且与第一行一样,在某些情况下这会在输出中产生空格。