使用 algorithmicx 或 algorithm2e 独立运行

使用 algorithmicx 或 algorithm2e 独立运行

我正在尝试编译一个standalone包含使用以下方法创建的伪代码的文件algorithmicx包创建的伪代码的文件。根据algorithmicx 独立崩溃它应该与preview独立选项一起运行,但实际上却不行。此外,提到的vboxhack 也不起作用。我做错了什么?

第一个编译器错误:

! Extra }, or forgotten \endgroup.
\@endfloatbox ...pagefalse \outer@nobreak \egroup 
                                                  \color@endbox
l.13 \end{algorithm}

(通用)伪代码文件:

\documentclass[preview]{standalone}
\usepackage{algorithm}
\usepackage{algpseudocode}

\begin{document}
\vbox{
\begin{algorithm}
  \caption{Euclid’s algorithm}\label{euclid}
  \begin{algorithmic}[1]
    \State $r\gets a\bmod b$
  \end{algorithmic}
\end{algorithm}
}
\end{document}

感谢您的帮助。

斯文


更新:

使用该algorithm2e包(按照 David Carlisle 的建议)而不是使用vbox可以让伪代码文件编译而不会出现错误。

当我使用\KwIn{foo}它时,它又中断了。这反过来可以通过使用来修复\usepackage[varwidth]{standalone}。伪代码文件编译时没有错误。

algorithm2e.sty但是现在,当我尝试将伪代码文件包含到我的主文件中时,在编译主文件时出现以下编译错误:

! Undefined control sequence.
<argument> \SetAlgoLined 

l.1177 ...etcount,titlenotnumbered,lined,shortend}
                                                  %

新的伪代码文件(~\\后面没有换行符\KwIn{foo}):

\documentclass[varwidth]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{algorithm2e}

\begin{document}
\begin{algorithm}
  ~\\
  \KwIn{foo}
  $r\gets a\bmod b$\;  
\end{algorithm}
\end{document}

包含伪代码的主文件:

\documentclass[a4paper,10pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[subpreambles]{standalone}

\begin{document}
\include{pseudocode}
\end{document}

答案1

我已经忘记了一些不同的软件包,但\vbox如果你改变你的示例,它运行起来不会出错(无论有没有)

\usepackage{algorithm}

\usepackage{algorithm2e}

答案2

正是algorithm环境破坏了整个事情。只有环境algorithmic才能工作。因此,解决方法(尽管没有 的好处algorithm)如下。

包含算法的文件pseudocode.tex

\documentclass[preview]{standalone}
\usepackage{algpseudocode}

\begin{document}
  some introduction
  \begin{algorithmic}[1]
    \State $r\gets a\bmod b$
  \end{algorithmic}
\end{document}

主文件:

\documentclass[a4paper]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[subpreambles]{standalone}

\begin{document}

\begin{figure}
  \input{pseudocode}
  \caption{Euclid's algorithm}
\end{figure}
\end{document}

同样的方法也可以algorithm2e,不过我还没试过。

相关内容