如何删除/更改“算法”环境前后的垂直间距?

如何删除/更改“算法”环境前后的垂直间距?

我看到一个问题告诉我如何改变间距一个算法环境,但我不知道如何删除/更改算法环境之前和之后的空间,例如:

% remove the space here
\begin{algorithm}
\begin{algorithmic}
[...]
\end{algorithmic}
\end{algorithm}
% remove the space here 

答案1

LaTeX 有三个长度变量来控制 (i) 两个相邻浮动对象(例如图形、表格或算法对象)之间的距离,(ii) 页面顶部(底部)浮动对象与其下方(上方)文本之间的距离,以及 (iii) 文本内浮动对象与其上方和下方文本之间的距离;它们分别称为 、\floatsep\textfloatsep\intextsep(LaTeX 还有另外三个这样的变量来控制仅浮动页面上浮动对象上方和/或下方的间距;它们分别是\@fptop\@fpbot\@fpsep。)

为了完全抑制浮动文本内的分离(顺便说一句,不推荐!),您可以输入(在序言中)

\setlength{\intextsep}{0pt}

即,你将设置\intextsep为固定长度 0 点。如果空间有限(双关语),更好的解决方案是设置

\setlength{\intextsep}{1\baselineskip}

下面是使用 algorithm2e 包的 MWE:

\documentclass{article}
\usepackage{algorithm2e}
\newcommand{\lipsone}{Lorem ipsum dolor sit amet, consectetuer 
adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, 
adipiscing vitae, felis.}
\newcommand{\lipstwo}{Donec vehicula augue eu neque. Pellentesque 
habitant morbi tristique senectus et netus et malesuada fames ac 
turpis egestas.}
\begin{document}

\subsubsection*{With default setting of \texttt{\textbackslash intextsep}} 
\lipsone

\begin{algorithm}
\caption{A random example}
\SetAlgoLined
\KwData{Some input}[h]
\KwResult{Some output}
initialization\;
\While{not at end of this document}{read}
{go back to beginning\;}
\end{algorithm}

\lipstwo


\subsubsection*{After setting \texttt{\textbackslash intextsep} to 0pt}
\setlength{\intextsep}{0pt} 
\lipsone

\begin{algorithm}
\caption{Another random example}
\SetAlgoLined
\KwData{Some input}
\KwResult{Some output}
initialization\;
\While{not at end of this document}{read}
{go back to beginning\;}
\end{algorithm}

\lipstwo

\end{document}

答案2

好吧,我以一种“丑陋”的方式解决了这个问题,通过添加

\vspace*{-.4cm}

在相应的位置。就我的情况而言,这没问题,因为我的 tex 文件中只有一个算法环境,但是如果您希望在所有算法环境中自动完成此操作,则应该有另一种方法。

答案3

由于我的声誉点数不足,我无法发表评论。要解决这些问题,只需添加

\setlength{\AlCapSkip}{1em}

所有算法图的序言和标题都会向下移动,而不会影响其他标题。

答案4

\begin{figure}[tb]

或者

\begin{algorithm}[tb]

或者

\begin{table}[tb]

[tb]参数对于几乎所有事物都有效。

相关内容