我想在算法环境中调用一个函数。
\documentclass{article}
\usepackage{algorithm}
\usepackage{algpseudocode}
\begin{document}
\begin{algorithm}
\caption{Recursion}
\begin{algorithmic}[1]
\Procedure{Recursion}{$a$}
\State $a\gets Recursion(a)$ \Comment{Call Recursion again}
\State \textbf{return} $a$
\EndProcedure
\end{algorithmic}
\end{algorithm}
\end{document}
我该怎么做才能让行中的“Recursion”一词获得“正确”的样式\State $r\gets Recursion(a)$
?
我尝试了类似 的方法\State $r\gets \Procedure{Recursion}{a}$
,但只收到错误。官方文档没有关于此问题的示例。
答案1
我不认为您可以像尝试过的那样在其他地方打印程序的内容\State $a\gets \Procedure{Recursion}{a}$
。
您可以通过手动设置样式来做到这一点。您可以\textsc
在数学模式中使用来执行此操作。您还可以添加\Comment
(参见我提供的示例)。\textsc
您也可以使用而不是\Call
。有时要么\textsc
要么\Call
不会按预期运作。
% arara: pdflatex
\documentclass{article}
\usepackage{algorithm}
\usepackage{algpseudocode}
\begin{document}
\begin{algorithm}
\caption{Recursion}
\begin{algorithmic}[1]
\Procedure{Recursion}{$a$}
\State $a\gets\Call{Recursion}(a)$ \Comment{Call Recursion again}
\State \textbf{return} $a$
\EndProcedure
\end{algorithmic}
\end{algorithm}
\end{document}
答案2
在包中执行此操作的预期方式algorithmicx
是使用\Call
宏,例如:
\begin{algorithm}
\begin{algorithmic}
\Function{Fix}{f}
f(\Call{Fix}{f})
\EndFunction
\end{algorithmic}
\end{algorithm}
答案3
这对我有用:
\documentclass{article}
\usepackage{algorithm}
\usepackage{algpseudocode}
\begin{document}
\begin{algorithm}
\caption{Recursion}
\begin{algorithmic}[1]
\Procedure{Recursion}{$a$}
\State $a\gets$ \Call{Recursion}{$a$} \Comment{Call Recursion again}
\State \textbf{return} $a$
\EndProcedure
\end{algorithmic}
\end{algorithm}
\end{document}