将伪代码放入方框中

将伪代码放入方框中

我以这种风格向我的文档添加了一些伪代码:

\usepackage{algpseudocode}

\begin{algorithmic}[1]
\If {$i\geq maxval$}
\State $i\gets 0$
\Else
\If {$i+k\leq maxval$}
    \State $i\gets i+k$
\EndIf
\EndIf
\end{algorithmic}

我希望我的伪代码出现在一个盒子里,也就是框架里。

我试过

\framebox{ 
    \begin{algorithmic}[1] ...     
    \end{algorithmic} 
}

但这给我带来了大量错误,并且没有将代码分成多行。

我怎样才能构建我的伪代码?

答案1

你可以\varwidth设置一个上限,即行宽减去框边距所占的空间,但如果可能的话,允许它缩小到显示的最长行

在此处输入图片描述

\documentclass{article}
\usepackage{varwidth}

\usepackage{algpseudocode}

\begin{document}
\noindent\fbox{%
\begin{varwidth}{\dimexpr\linewidth-2\fboxsep-2\fboxrule\relax}
\begin{algorithmic}[1]
\If {$i\geq maxval$}
\State $i\gets 0$
\Else
\If {$i+k\leq maxval$}
    \State $i\gets i+k$
\EndIf
\EndIf
\end{algorithmic}
\end{varwidth}% 
}

\end{document}

答案2

您只需调整小页面的宽度即可避免过满。

编辑:添加一些 David 的评论。

\noindent\fbox{%
\begin{minipage}{\dimexpr\linewidth-2\fboxsep-2\fboxrule\relax}
\begin{algorithmic}[1]
\If {$i\geq maxval$}
\State $i\gets 0$
\Else
\If {$i+k\leq maxval$}
    \State $i\gets i+k$
\EndIf
\EndIf
\end{algorithmic}
\end{minipage}% 
}

相关内容