未定义控制序列。\BState ->\State \algbackskip \BState

未定义控制序列。\BState ->\State \algbackskip \BState

我在为报告创建伪代码时遇到错误。以下是我在 LaTeX 中编写的代码。它给出“未定义的控制序列\BState-> \State \algbackskip \BState”的提示。请帮我解决这个问题。

\documentclass{article}
\usepackage{amsmath}
\usepackage{algorithm}
\usepackage[noend]{algpseudocode}
\begin{document}
\begin{algorithm}[H]
  \begin{algorithmic}[1]
    \BState \emph{\textbf{Key(s)}}:
  \end{algorithmic}
\end{algorithm}
\end{document}

答案1

造成该问题的部分是定义不足\@algbackskip(构成的一部分\BState)。

主要的algorithmicx包裹代码 -algorithmicx.sty- 包含 的定义\@algbackskip,但已被注释掉:

%\def\algbackskip{\hskip-\ALG@thistlm}

我认为这可能是一个错误,应该予以纠正。

在此处输入图片描述

\documentclass{article}
\usepackage[noend]{algpseudocode}

\makeatletter
% Reinsert missing \algbackskip
\def\algbackskip{\hskip-\ALG@thistlm}
\makeatother

\begin{document}

\begin{algorithmic}[1]
  \State something
  \If{this}
    \State do this
    \BState do that
  \EndIf
  \BState now this
\end{algorithmic}

\end{document}

相关内容