如何在 algorithmicx 中嵌套 \Call?

如何在 algorithmicx 中嵌套 \Call?

当我在 LaTeX 手稿中输入以下内容时,我试图显示类似这样的内容:Min(Right(x)):

\begin{algorithmic}[1]
...
  \State \Return \Call{Min}{\Call{Right}{$x$}}
...
\end{algorithmic}

它报告以下错误:

! Argument of \equal has an extra }.

                \par 
l.652 ...e \Return \Call{Min}{ \Call{Right}{$x$} }

有任何想法吗?

--

你好,

我只是通过查找 algpseudocode.sty 找到了一种快速而又肮脏的方法:

\State \Return \textproc{Min}(\Call{Right}{$x$})

但如果有任何更好的解决方案,我们将不胜感激。

答案1

我以前偶然发现过这个问题,并发现只要使命令变得强大就可以修复它:

\documentclass{article}

\usepackage{fixltx2e}
\usepackage{algpseudocode}

\MakeRobust{\Call}

\begin{document}

\begin{algorithmic}[1]
  \State \Return \Call{Min}{\Call{Right}{$x$}}
\end{algorithmic}

\end{document}

答案2

\Call进行一些内部检查,在某些情况下会弄乱格式。我\Call在论文模板中重新定义了省略这些检查。结果效果很好:

\renewcommand*\Call[2]{\textproc{#1}(#2)}

然而,这意味着\Call现在总是即使没有参数,也要有括号。我个人认为这很好,但它不再符合原作者的意图。

相关内容