定义不带行号的 algorithmicx 块

定义不带行号的 algorithmicx 块

我正在尝试定义某种 algorithmicx 命令来给我这个:

\Statex \textbf{Local State:}
\Statex \hspace{\algorithmicindent} $v \gets []$
\Statex \hspace{\algorithmicindent} $h \gets \bot$

goal

我试过了

\algloopdefx{LocalState}{\textbf{LocalState:}}

结果是在前面有一个行号当地州:,我也尝试过

\algloopdefx{LocalState}{\Statex\textbf{LocalState:}}

但这会导致出现带有行号的空白行(可能是因为\algloopdefx宏将 a 放在了\State行首<start>)。

有什么方法可以生成上述示例,而不用hspace在每一行开头都放置一个或类似的肮脏的黑客行为?

编辑:添加 MWE

\documentclass{article}

\usepackage{algorithm, algorithmicx, algpseudocode}

\begin{document}

\begin{algorithm}
\caption{Algorithm}
\begin{algorithmic}[1]

\Statex \textbf{Local State:}
  \Statex \hspace{\algorithmicindent} Foo
  \Statex \hspace{\algorithmicindent} Bar
\Statex

\Procedure{Foobar}{}
  \State Numbering should start at this procedure
\EndProcedure

\end{algorithmic}
\end{algorithm}

\end{document}

答案1

只需定义新的宏,\StateX如下所示,即可解决问题。

\documentclass{article}

\usepackage{algorithm, algorithmicx, algpseudocode}

\newcommand\StateX{\Statex\hspace{\algorithmicindent}}

\begin{document}

\begin{algorithm}
\caption{Algorithm}
\begin{algorithmic}[1]

\Statex \textbf{Local State:}
  \StateX  Foo
  \StateX  Bar

\Procedure{Foobar}{}
  \State Numbering should start at this procedure
\EndProcedure

\end{algorithmic}
\end{algorithm}

\end{document}

enter image description here

相关内容