algorithmicx、algorithm、algpseudocode 包的独立问题。可能缺少 \item

algorithmicx、algorithm、algpseudocode 包的独立问题。可能缺少 \item

我正在使用的代码我怎样才能删除 algorithmicx 中的 \EndIf 和 \EndFor?

代码在 article 类中可以正常工作。但在 standalone 中会失败。我搜索了一下,发现在使用 standalone 时需要添加一个[H]algorithm参考:带有 algorithm2e 包的独立文档

但是如果你给算法提供[H]选项,它将不再是浮动的,因此你可以使用它。

但这并不能解决问题。

这是我正在使用的代码

\documentclass[10pt,crop]{standalone}  %error
%\documentclass[10pt]{article}  %works
\usepackage{float}
\usepackage{algorithmicx}
\usepackage{algorithm} % http://ctan.org/pkg/algorithms
\usepackage{algpseudocode} % http://ctan.org/pkg/algorithmicx

\begin{document}

\begin{algorithm}[H]
\begin{algorithmic}[1]
\Procedure{A}{}
    \ForAll{$a\in A$}
        \If{$a\geq b$}
            \State\Return $a$
        \EndIf
    \EndFor
\EndProcedure
\end{algorithmic}
\end{algorithm}

\end{document}

使用 lualatex 进行编译

(./first_order_series.aux)
(/usr/local/texlive/2022/texmf-dist/tex/latex/base/ts1cmr.fd)

! LaTeX Error: Something's wrong--perhaps a missing \item.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              
                                                  
l.10 \begin{algorithm}
                    [H]
? 

删除[H]没有区别。使用 article 类进行编译,可以正常工作,没有错误

在此处输入图片描述

我想用standalone它制作一个 PDF 文件,可以将其作为图像包含在主文档中。

我也尝试了给出的解决方法 algorithmicx 存在问题:可能缺少 \item。出了什么问题?

在 algcompatible 之后加载 algpseudocode,

但它没有效果。只有在使用独立版本时,错误仍然存​​在。

有解决方法吗?

TL 2022

更新

algorithmic这是一个更简单的 MWE,它使用包显示错误

\documentclass[10pt,crop]{standalone}  %error
%\documentclass[10pt]{article}  %works
\usepackage{amsmath}
\usepackage{algorithmic}
\usepackage{float}

\begin{document}
\begin{algorithmic}[H]
\STATE $i\gets 10$
\end{algorithmic}

\end{document}

lualatex 提供

(./first_order_series.aux)
(/usr/local/texlive/2022/texmf-dist/tex/latex/base/ts1cmr.fd)

! LaTeX Error: Something's wrong--perhaps a missing \item.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              
                                                  
l.9 \STATE
         $i\gets 10$
? 

看起来独立版与所有这些算法包都不兼容?

答案1

您不应该在独立模式下使用浮动,但这些都是垂直显示环境,因此不能在水平框中使用,而水平框\mbox本质上就是standalone提供的。如果您使用该varwidth选项,它会改为使用,\parbox以便您可以使用显示材料,并使用varwidth包来选择合适的宽度。

\documentclass[10pt,crop,varwidth]{standalone}  %error
%\documentclass[10pt]{article}  %works
\usepackage{float}
\usepackage{algorithmicx}
\usepackage{algorithm} % http://ctan.org/pkg/algorithms
\usepackage{algpseudocode} % http://ctan.org/pkg/algorithmicx

\begin{document}

\begin{algorithmic}[1]
\Procedure{A}{}
    \ForAll{$a\in A$}
        \If{$a\geq b$}
            \State\Return $a$
        \EndIf
    \EndFor
\EndProcedure
\end{algorithmic}
\end{document}

在此处输入图片描述

相关内容