在 algorithm2e 中,我如何在标题和文档的任何其他部分使用函数名称(如打印/样式)。我注意到使用“\FUNNAME”,一般来说,有时有效,有时无效。在下面的示例中,使用 \GETMAX 在文档中有效(有时),但在标题中根本不起作用。有没有具体的方法可以解决这个问题?
例子:
\documentclass{article}
\usepackage{epsfig}
\usepackage[linesnumbered,ruled,vlined]{algorithm2e}
\SetKwProg{Fn}{Function}{}{end}
\SetKwFunction{GETMAX}{getMax}
\begin{document}
\begin{algorithm}
\DontPrintSemicolon
\Fn{\GETMAX{atom, neighbour}} {
\KwIn{x }
\KwOut{max}
$max \gets x[1]$\;
\For{$i \gets 2$ \textbf{to} $n$} {
\If{$x[i] > max$} {
$max \gets x[i]$\;
}
}
\Return{$max$}\;
}
\caption{\texttt{getMax} isa function }
\label{algo:getmax}
\end{algorithm}
Algorithm~\ref{algo:getmax} \GETMAX function I can not use same command inside the caption
\end{document}
答案1
algorithm2e 以脆弱的方式定义 \GETMAX。这意味着在将其参数也移动到其他位置的命令中(标题是移动到算法列表),它可能会中断。
您应该保护该命令:
\caption{\protect\GETMAX isa function }
或者使其更强大:
\usepackage{etoolbox}
\robustify\GETMAX