我写了下面这段伪代码,效果如下图所示。我觉得图片中水平线上方的空白太多了,我想让它们更紧凑一些。就像下面的图片一样,我该怎么做?谢谢!
\documentclass{article}
\usepackage{listings}
%\usepackage{caption,subcaption}
\usepackage{subfig}
\usepackage{caption}
\usepackage{graphicx}
\usepackage{algorithmic}
\usepackage[ruled,lined]{algorithm2e}
\usepackage{lipsum}
\begin{document}
\lipsum[1-2]
\begin{algorithm} [t]
\caption{Operations }
line 0-N : cache lines
m : 1-bit information
$M[k]$ : k bits message
\hrulefill \newline
\textbf{Encoding:}
\hrulefill \newline
// Encoding Phase \newline
\eIf{m==1}{
print a
}{
print b
}
sleep; // Allow the receiver code to decode
\end{algorithm}
\end{document}
答案1
您可以按如下方式定义命令\myrule
:
\newcommand{\myrule}{\vspace{-0.6\baselineskip}\hrulefill\vspace{-0.2\baselineskip}}
请注意,这些值是根据经验确定的。因此,如果您更改字体,则可能应该调整它们。
平均能量损失
\documentclass{article}
\usepackage[ruled,lined]{algorithm2e}
\newcommand{\myrule}{\vspace{-0.6\baselineskip}\hrulefill\vspace{-0.2\baselineskip}}
\begin{document}
\begin{algorithm} [t]
\caption{Operations }
line 0-N : cache lines
m : 1-bit information
$M[k]$ : k bits message
\myrule
\textbf{Encoding:}
\myrule
// Encoding Phase \newline
\eIf{m==1}{
print a
}{
print b
}
sleep; // Allow the receiver code to decode
\end{algorithm}
\end{document}
答案2
考虑使用适当的algorithm2e
语法,如果您不想打印它们,请\;
使用 和 使用来结束行\DontPrintSemicolon
。此外,无需加载algorithmic
asalgorithm2e
提供了生产您想要的产品所需要的一切。
tabular
以下是使用“标题”的选项:
\documentclass{article}
\usepackage[ruled,lined]{algorithm2e}
\DontPrintSemicolon
\newcommand{\algorithmheading}[1]{%
\rlap{\begin{tabular}{ @{} p{\dimexpr\linewidth-\algomargin} @{} }
\hline
\bfseries\strut #1:\strut \\
\hline
\end{tabular}}%
}
\begin{document}
\begin{algorithm}[t]
\caption{Operations}
line $0$-$N$ : cache lines\;
$m$ : 1-bit information\;
$M[k]$ : $k$ bits message\;
\algorithmheading{Encoding}
// Encoding Phase\;
\eIf{$m = 1$}{
print a
}{
print b
}
sleep // Allow the receiver code to decode\;
\end{algorithm}
\end{document}