我想将我的页面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
间距(其他“内部”浮点数具有由 定义的间距)。您将在 内找到以下定义text
float
in
sep
\intextsep
\textfloatsep
IEEEtran.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