我正在尝试定义某种 algorithmicx 命令来给我这个:
\Statex \textbf{Local State:}
\Statex \hspace{\algorithmicindent} $v \gets []$
\Statex \hspace{\algorithmicindent} $h \gets \bot$
我试过了
\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}