我正在尝试编译一个standalone
包含使用以下方法创建的伪代码的文件algorithmicx
包创建的伪代码的文件。根据algorithmicx 独立崩溃它应该与preview
独立选项一起运行,但实际上却不行。此外,提到的vbox
hack 也不起作用。我做错了什么?
第一个编译器错误:
! 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
,不过我还没试过。