该algorithmicx
包定义了两个命令\Require
和用于提供初始条件。但是我想要一些自定义命令,\Ensure
例如\Assume
,,等。目前,我只是将上述两个命令重命名为我想要的名称,例如:\Define
\Input
\algrenewcommand\algorithmicrequire{\textbf{Input}}
然而,这并不是一个好的解决方案,因为
- 它使算法代码变得混乱,而且我在 LaTeX 中看到的不是输出的内容,如果我忘记阅读序言,这可能会造成混淆。
- 当需要的自定义定义的数量多于预定义的数量时,它就没有用了。
如何在algorithmicx
包中定义与上述两个命令等效的自定义命令(我正在使用algpseudocode
)?文档中的示例似乎涵盖了诸如for ... end
等块,而不是单个语句。
答案1
在文档中你可以找到\algnewcommand
。关系\Require
定义为
\algnewcommand\algorithmicrequire{\textbf{Require:}}
因此你可以这样做:
\algnewcommand\algorithmicinput{\textbf{INPUT:}}
\algnewcommand\INPUT{\item[\algorithmicinput]}
这是一个完整的例子:
\documentclass[a4paper,11pt]{article}
\usepackage{algorithmicx}
\usepackage{algorithm}
\usepackage{algpseudocode}
\algnewcommand\algorithmicinput{\textbf{INPUT:}}
\algnewcommand\INPUT{\item[\algorithmicinput]}
\begin{document}
\begin{algorithmic}[1]
\INPUT foo
\Require $x\ge5$
\Ensure $x\le-5$
\Statex
\While{$x>-5$}
\State $x\gets x-1$
\EndWhile
\end{algorithmic}
\end{document}