![算法 2e:在标题和文档文本中使用函数名称(格式化)](https://linux22.com/image/394307/%E7%AE%97%E6%B3%95%202e%EF%BC%9A%E5%9C%A8%E6%A0%87%E9%A2%98%E5%92%8C%E6%96%87%E6%A1%A3%E6%96%87%E6%9C%AC%E4%B8%AD%E4%BD%BF%E7%94%A8%E5%87%BD%E6%95%B0%E5%90%8D%E7%A7%B0%EF%BC%88%E6%A0%BC%E5%BC%8F%E5%8C%96%EF%BC%89.png)
在 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