I've got a define such as \def\doctype{SomeString}
. \doctype
can take on one of five values. I want to do something like a switch statement in a programming language, i.e. (pseudocode):
switch (\doctype) {
case 'SomeString1': some text here
case 'SomeString2': some different text here
...
}
(I don't need a default/else/otherwise case.) I tried doing this in LaTeX with:
\documentclass{article}
\usepackage{etoolbox}
\def\doctype{SomeString1}
\newenvironment{switchdoctype}[0]{%
\newcommand{\case}[2]{\ifdefequal{\doctype}{##1}{##2}{}}%
}{}
\begin{document}
\begin{switchdoctype}
\case{SomeString1}{some text here}
\case{SomeString2}{some different text here}
\end{switchdoctype}
\end{document}
This gives an error: ERROR: Argument of \@secondoftwo has an extra }.
I gather this is some sort of problem with using \ifdefequal
. How can I make this work? I suspect it's some trick of expansion but I can't make this work with my limited knowledge of [La]TeX; I'm interested in learning something from making this work.
MacTeX 2010 here, which is based on TeX Live 2010 AFAIK. Thanks!
P.S.: boolexpr has a \switch
but I can't use it because it conflicts badly with etoolbox (and BibLaTeX depends on etoolbox as far as I can tell). I have reported this incompatibility to the author listed in boolexpr's documentation.