如何让伪代码更加紧凑?

如何让伪代码更加紧凑?

我写了下面这段伪代码,效果如下图所示。我觉得图片中水平线上方的空白太多了,我想让它们更紧凑一些。就像下面的图片一样,我该怎么做?谢谢!

\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。此外,无需加载algorithmicasalgorithm2e提供了生产您想要的产品所需要的一切。

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}

相关内容