如何将 \algorithm 和 \algorithmic 环境放入盒子内?

如何将 \algorithm 和 \algorithmic 环境放入盒子内?

我想把一个算法放在一个框里。这是代码

\fbox{\parbox{0.8\linewidth}{
\begin{algorithm}
\caption{My algorithm}
\begin{algorithmic}[1]
  \scriptsize
...
\end{algorithmic}
\end{algorithm}

}}

我收到此错误:

 Not in outer par mode

algorithm在以两个花括号结尾的行处出现其他错误。当我删除环境并且只剩下时,问题就解决了algorithmic。但我希望有算法环境来放置标题。

答案1

为了使这成为一个真正的答案:如果你想要一个盒子

\documentclass{article}

\usepackage{algorithm,algorithmic}

\begin{document}
\begin{algorithm}
\caption{My algorithm}
\begin{algorithmic}[1]
  \scriptsize
  \STATE Statement
\end{algorithmic}
\end{algorithm}
\end{document}

原始输出

我建议切换到该algorithm2e包。上面的内容可以粗略地模仿

\documentclass{article}

\usepackage{algorithm2e}

\begin{document}
% \RestyleAlgo{boxed}
\RestyleAlgo{boxruled}
\LinesNumbered
\begin{algorithm}[ht]
  \caption{My algorithm\label{alg}}
  Statement
\end{algorithm}
\end{document}

盒装输出

答案2

你不能在框中使用任何类型的浮点数,你可以从figure或获得相同的效果table,最直接的解决方案是不使用浮点数,并使用(一行)capt-of包来允许使用标题

\usepackage{capt-of}

然后

\fbox{\parbox{0.8\linewidth}{
%\begin{algorithm}
\captionof{algorithm}{My algorithm}
\begin{algorithmic}[1]
  \scriptsize
...
\end{algorithmic}
%\end{algorithm}

}}

然而,最好使用允许盒装浮动样式的算法包(或使用该float包来设置此类浮动的样式),然后框位于浮动内部,因此构造仍可能被 LaTeX 浮动。

答案3

似乎还有另一个相当新的算法包叫做伪法典,它确实允许在代码片段周围绘制方框。我猜你正在寻找的 LaTeX 代码很简单

\begin{algorithm}
\caption{My algorithm}
\begin{algorithmic}[1]
    \scriptsize
    \begin{algorithmic}
    \BeginBox
        \State first line
        \State ...
    \EndBox
\end{algorithmic}
\end{algorithm}

\usepackage{algpseudocodex}在文件头中指定后。

相关内容