# Switch cases in algorithmic

How can I use switch cases in algorithmicx? For example a code like this:

switch s do
--case a
----assert(1)
--case b
----assert(0)

etc. Is is possible to define it as a command?

-

Use the following:

\documentclass{article}
\usepackage{algpseudocode}% http://ctan.org/pkg/algorithmicx
\begin{document}
% New definitions
\algnewcommand\algorithmicswitch{\textbf{switch}}
\algnewcommand\algorithmiccase{\textbf{case}}
\algnewcommand\algorithmicassert{\texttt{assert}}
\algnewcommand\Assert[1]{\State \algorithmicassert(#1)}%
% New "environments"
\algdef{SE}[SWITCH]{Switch}{EndSwitch}[1]{\algorithmicswitch\ #1\ \algorithmicdo}{\algorithmicend\ \algorithmicswitch}%
\algdef{SE}[CASE]{Case}{EndCase}[1]{\algorithmiccase\ #1}{\algorithmicend\ \algorithmiccase}%
\algtext*{EndSwitch}%
\algtext*{EndCase}%

\begin{algorithmic}[1]
\Switch{$s$}
\Case{$a$}
\Assert{0}
\EndCase
\Case{$b$}
\Assert{1}
\EndCase
\EndSwitch
\end{algorithmic}
\end{document}​


Both new "environments" \Switch...\EndSwitch and \Case...\EndCase are defined to have beginning and ending text. However, using \algnotext*{<env>} removes any typesetting of that command, effectively removing the ending command for both \Switch and \Case. It's still needed, since there may be more than one entry so its not possible to generalise with some number-of-lines-termination.

-