压缩算法构造周围的空间

压缩算法构造周围的空间

我正在使用algorithm2e来开发 LaTeX 文档中的算法构造。但是,如果我想使用[!t][!b]将算法构造放置在适当的位置,有时构造会下降到最后一页而不是当前页。因此,我想用图形构造将其包装如下,以使用压缩函数(例如\vpsace{-0.5cm}介于\end{algorithm}和之间)来压缩算法构造后的空间\end{figure}。但它给出了错误:! LaTeX Error: Not in outer par mode。请帮我解决这个问题。

\begin{figure}[!t]
\begin{algorithm}
....
...
\end{algorithm}
\end{figure}

答案1

@kkp:包algorithm提供的环境algorithm2e是“浮动”环境,就像浮动环境table一样figure。因此,它不能被包装在另一个浮动组中。您遇到的情况——您无法让 LaTeX 将浮动放置在您希望它们去的任何位置附近——这是许多 LaTeX 用户共同的挫败感。我的主要建议是检查所讨论的算法浮动是否占据了超过半页。如果是这种情况,您可能需要更改部分或所有参数、、\topfraction和。在我的许多文档中,我在序言中都有以下命令: \bottomfraction\textfraction\floatpagefraction

\renewcommand\topfraction{0.85}
\renewcommand\bottomfraction{0.85}
\renewcommand\textfraction{0.1}
\renewcommand\floatpagefraction{0.85}

使用这些命令,您可以指示 LaTeX 允许浮动元素(实际上是一组浮动元素)占据包含一些文本的页面的 85% 以内。(如果浮动元素大于该值,它将单独出现在页面上。)

我的另一个建议是不是指定放置选项[t!][h!],如果 LaTeX 不能立即满足这个要求,那么有点反常的是(并且违反直觉),浮动元素和所有后续相同类型的浮动元素(figure、、tablealgorithm)将被推回到文档末尾,而不仅仅是下一个合适的页面。

附录:讨论如何减少文本和浮动之间的空间:

要更改这些空间量,您可以向文档的序言中添加以下说明(或类似内容):

\setlength\floatsep{1.25\baselineskip plus 3pt minus 2pt}
\setlength\textfloatsep{1.25\baselineskip plus 3pt minus 2pt}
\setlength\intextsep{1.25\baselineskip plus 3pt minus 2 pt}

第一个长度控制两个相邻浮动元素之间的间隔,第二个长度设置页面顶部(或底部)浮动元素与其下方(上方)文本之间的间隔,第三个长度设置页面中间浮动元素与其上方和下方文本之间的间隔。从本例中可以看出,我已将所有三个长度设置为相同(“弹性”)值。除非您真的非常缺乏空间,否则我不会进一步缩短长度。

答案2

LaTeX 根据特定页面的可用性将浮动元素放置在页面上。这些可用性是根据长度或比率定义的。

在里面文档layouts包裹它显示与浮动位置相关的页面相关量(请参阅6 浮动布局):

浮动布局和文本参数

因此,浮动位置受以下因素影响:

  • \topfraction(默认为0.699
  • \topnumber(默认为2
  • \textfraction(默认为0.199
  • \bottomfraction(默认为0.300
  • \bottomnumber(默认为1
  • \totalnumber(默认为3

t改变这些应该会促使 LaTeX 增加特定区域(如或)中的浮点数b。 的重新定义\...number是通过 完成的\setlength,而 是\...fraction使用 进行修改的\renewcommand。请参阅章节6.3 更改文档中的浮动布局了解有关如何执行此操作的更多详细信息。修改这些设置可能非常特定于文档。

还可以修改有关页面组件之间空间的更多布局选项。以下是同一文档中的一张图,显示了其中的一些重要选项:

浮点参数

\setlength根据您的喜好通过调整布局来修改这些长度。

相关内容