algorithm2e - Fehler (?) mit \SetKwSwitch

algorithm2e - Fehler (?) mit \SetKwSwitch

Das folgende M(not)WE sollte funktionieren. Habe ich einen Fehler gefunden?

\documentclass{article}

\usepackage{algorithm2e}

\SetKwSwitch{Switch}{Case}{Other}{Switch}{:}{Case}{Other}{} 

\begin{document}

\begin{algorithm}
    \Switch{X}{
        \Case{1}{A}
        \Other{Other}
    }
\end{algorithm}

\end{document}

Antwort1

Kein Fehler: \SetKwSwitcherfordertneunArgumente und Sie geben nur acht davon an, sodass die \parvon der leeren Zeile generierte als neunte verwendet wird. Und \parist in dem Kontext, in dem das neunte Argument verwendet wird, ungültig.

\newcommand{\SetKwSwitch}[9]{% #1=\Switch #2=\Case #3=\Other #4=switch #5=do #6=case #7=otherwise #8=endcase #9=endsw
%       \algocf@newcmdside{#1}{3}%
        \algocf@newcmdside@koif{#1}%
                {\KwSty{#4}\algocf@scond\ArgSty{##2}\algocf@econd\KwSty{#5}\ifArgumentEmpty{##1}\relax{ ##1}\algocf@block{##3}{#9} {##4\relax}}%

Im Handbuch gibt es eine Beschreibung, in der das letzte (symbolische) Argument nicht in Klammern steht, also liegt hier ein Fehler vor, aber nur in der Dokumentation. Auf Seite 39, Anfang von Abschnitt 11.6, lesen Sie

 \SetKwSwitch{Switch}{Case}{Other}{switch}{do}{case}{otherwise}{endcase}endsw

aber es sollte

\SetKwSwitch{Switch}{Case}{Other}{switch}{do}{case}{otherwise}{endcase}{endsw}

Festes Beispiel:

\documentclass{article}

\usepackage{algorithm2e}

\SetKwSwitch{Switch}{Case}{Other}{Switch}{:}{Case}{Other}{EndCase}{EndSwitch}

\begin{document}

\begin{algorithm}
    \Switch{X}{
        \Case{1}{A}
        \Other{Other}
    }
\end{algorithm}

\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen