Wie kann ich ein Algorithm2e-Funktionsmakro innerhalb einer Algorithm2e-Beschriftung verwenden?

Wie kann ich ein Algorithm2e-Funktionsmakro innerhalb einer Algorithm2e-Beschriftung verwenden?

Mit Algorithm2e können Sie Funktionen definieren, mit \SetKwFunction{Fn}{Function}denen Sie dann überall im Dokument (nicht nur in einer algorithmUmgebung) referenzieren können, indem Sie z. B. verwenden \Fn(wodurch Functionalles schön in der richtigen Schriftart ausgegeben wird). Dies funktioniert jedoch nicht innerhalb von Bildunterschriften. Zum Beispiel das folgende Dokument:

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

stirbt mit

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

Weiß jemand, was los ist und wie man es behebt?

Antwort1

Das Makro muss geschützt werden, damit es darin verwendet werden kann caption:

\caption{\protect\Fn my function}

Weitere Informationen dazu, warum dies erforderlich ist, finden Sie in dieser Frage:

Was ist der Unterschied zwischen fragilen und robusten Befehlen?

verwandte Informationen