Como posso usar uma macro de função algoritmo2e dentro de uma legenda algoritmo2e?

Como posso usar uma macro de função algoritmo2e dentro de uma legenda algoritmo2e?

Algorithm2e permite definir funções com \SetKwFunction{Fn}{Function}as quais você pode fazer referência a qualquer lugar do documento (não apenas em um algorithmambiente) usando, por exemplo \Fn(que produzirá Functiontudo bem composto na fonte correta). No entanto, isso não funciona dentro de legendas. Por exemplo, o seguinte documento:

\documentclass{article}
\usepackage{algorithm2e}
\SetKwFunction{Fn}{Function}
\begin{document}
\begin{algorithm}
  \caption{\Fn, my function}
  \KwRet{0}\;
\end{algorithm}
\end{document}

morre com

Argument of \@caption has an extra }.
<inserted text> 
                \par 
l.6   \caption{\Fn, my function}

Alguém sabe o que está acontecendo e como consertar?

Responder1

A macro deve ser protegida para que possa ser usada dentro de caption:

\caption{\protect\Fn my function}

Para obter mais informações sobre por que isso é necessário, dê uma olhada nesta pergunta:

Qual é a diferença entre comandos Frágeis e Robustos?

informação relacionada