如何减少算法顶部的空间?

如何减少算法顶部的空间?

我想将我的页面algorithm尽可能紧凑地放置在双栏纸张的底部。在算法顶部,我看到一条空白行,是否可以将其删除或减少空间?

我的代码:

\documentclass[10pt,journal,compsoc]{IEEEtran}
\usepackage{float}
\usepackage{lipsum}
\usepackage{algorithm}
\usepackage{algorithmicx}
\begin{document}
\title{Bare Demo of IEEEtran.cls for\\ IEEE Computer Society Journals}
\markboth{Journal of \LaTeX\ Class Files,~Vol.~14, No.~8, August~2015}%
\IEEEraisesectionheading{\section{Introduction}\label{sec:introduction}}
\IEEEPARstart{T}{his} demo file
\lipsum*[100]

\begin{algorithm}[!bp]
    \caption{The submitJob Function}
    \label{algo-cost}  % \hspace*{\algorithmicindent}
    \vspace*{0.5mm}
    \hspace*{0.45cm} \textbf{Input:} {\(x_{s}, x_{n}\)} \\
    \hspace*{0.45cm} \textbf{Output:} {Returns calculated cost}
    \begin{algorithmic}[1]
        \State{}\(x \gets \phi[p_{n}]\)
        \State{}\(y \gets \phi[d_{n}]\)
    \end{algorithmic}
\end{algorithm}
\lipsum
\end{document}

输出(页面左下角):

在此处输入图片描述

如您所见,这里算法顶部有一个空白区域。当我使用它时\vspace*{-2mm},它没有帮助。在某些情况下,空白是两行。

答案1

\textfloatsep从一般情况可以看出,这个空间受layouts包/文档(部分6.2 浮动布局详细):

在此处输入图片描述

\textfloatsep定义和 顶部/底部之间的典型空间或sep间距(其他“内部”浮点数具有由 定义的间距)。您将在 内找到以下定义textfloatinsep\intextsep\textfloatsepIEEEtran.cls

\textfloatsep 1.55\baselineskip plus  0.2\baselineskip minus  0.4\baselineskip

无论出于什么原因,这个值都相当大(1.55\baselineskip)。您可以在序言中的某个地方调整它以满足您的需求。使用较小的主长度/间隙,例如

\textfloatsep = 1\baselineskip plus 0.2\baselineskip minus 0.4\baselineskip

导致间隙略小(因为仍然有小的拉伸/收缩;是=可选的):

在此处输入图片描述

\documentclass[10pt,journal,compsoc]{IEEEtran}

\usepackage{lipsum}
\usepackage{algorithm,algorithmicx}

\textfloatsep = 1\baselineskip plus 0.2\baselineskip minus 0.4\baselineskip

\begin{document}
\title{Bare Demo of IEEEtran.cls for\\ IEEE Computer Society Journals}
\markboth{Journal of \LaTeX\ Class Files,~Vol.~14, No.~8, August~2015}%
\IEEEraisesectionheading{\section{Introduction}\label{sec:introduction}}
\IEEEPARstart{T}{his} demo file
\lipsum*[100]

\begin{algorithm}[!bp]
  \caption{The submitJob Function}
  \vspace*{0.5mm}
  \hspace*{0.45cm} \textbf{Input:} {\(x_{s}, x_{n}\)} \\
  \hspace*{0.45cm} \textbf{Output:} {Returns calculated cost}
  \begin{algorithmic}[1]
    \State{}\(x \gets \phi[p_{n}]\)
    \State{}\(y \gets \phi[d_{n}]\)
  \end{algorithmic}
\end{algorithm}

\lipsum

\end{document}

调整以满足您的需求,但要知道这是全局设置的。此外,如果这是用于期刊提交,则此类更改通常会被出版商覆盖。

答案2

问题在于,位置指示符是[bp!]为了让编译器预先安排好内容,而无法在之后应用间距工具,因为代码中环境的位置与输出中的位置不同。例如,只需将占位符更改为即可[h]产生以下输出:

输出算法包

它不再像以前那样有双倍行距。但它仍能\vspace{}按预期发挥作用,因为图形相对于文本的放置是明确的。

%Example of uncomfortably narrow spacing

\lipsum*[100]
\vspace{-0.2cm} %Now it works as expected
\begin{algorithm}[h]
    \caption{The submitJob Function}
    \label{algo-cost}  % \hspace*{\algorithmicindent}
    \vspace*{0.5mm}
    \hspace*{0.45cm} \textbf{Input:} {\(x_{s}, x_{n}\)} \\
    \hspace*{0.45cm} \textbf{Output:} {Returns calculated cost}
    \begin{algorithmic}[1]
        \State{}\(x \gets \phi[p_{n}]\)
        \State{}\(y \gets \phi[d_{n}]\)
    \end{algorithmic}
\end{algorithm}
\vspace{-0.2cm} %Text afterwards also works as expected
\lipsum

输出:算法间距校正

相关内容