Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I am using nested loop conditional \iftoggle of etoolbox, is there any other generalized conditional? Usually it works as:

\newtoggle{name}
\settoggle{name}{true}
\iftoggle{name}{do if name is true}{do if name is false}

Now, I would like something like:

\newtoggle{name} % with 5 options, for example
\settoggle{name}{option3} % all the other option are false
\iftoggle{name}{do if option1 is true}{do if option2 is true}{do if option3 is true}{do if option4 is true}{do if option5 is true}

I know there is a solution with nested conditional, but maybe there is other direct solution. Any idea?

share|improve this question
    
A toggle can be true or false, so this does not seem to make sense. It sounds as if you want something more like a keyval option which takes a number of choices: is that a reasonable description? –  Joseph Wright Jan 26 '13 at 14:16
add comment

1 Answer 1

up vote 1 down vote accepted

Here is a key-value interface, which, as Joseph Wright has said, appears to be the way to get a solution to your problem.

\documentclass{article}
\usepackage{keyreader}
\makeatletter
\def\msg#1{\ifkrdindef\else Option chosen: #1\endgraf\fi}
\krddefinekeys{gitano}{%
  choice/name/option1/{
    option1.do=\msg{1},
    option2.do=\msg{2},
    option3.do=\msg{3},
    option4.do=\msg{4},
    option5.do=\msg{5}
  }
  ;
}
% Example command, to reformat the list, process the keys, and print the results:
\newcommand\gitanooptions[1][]{%
  \krdifblank{#1}{%
    \krdsetkeys{gitano}{name=option1}%
  }{%
    \def\tempa##1=##2=##3\@nil{\unexpanded{##2}}%
    \edef\tempa{\tempa#1==\@nil}%
    \ifx\tempa\@empty
      \krdsetkeys{gitano}{name=option1}%
    \else
      \def\tempb{}%
      \@for\tempa:=\tempa\do{%
        \edef\tempb{%
          \unexpanded\expandafter{\tempb}%
          \ifx\tempb\@empty\else,\fi
          name=\unexpanded\expandafter{\tempa}%
        }%
      }%
      \krdexpanded{\noexpand\krdsetkeys{gitano}{\tempb}}%
    \fi
  }%
}
\makeatother

% Examples:
\begin{document}
\gitanooptions[name={option1,option2}]
\gitanooptions[name]
\gitanooptions[name=option3]
\gitanooptions[name=option4]
\gitanooptions[name={option2,option5}]
\gitanooptions
\end{document}
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.