8

I saw these command when i searching sth. I wonder if we can increase numbers if conditions.

it's like if{0} = a, if{1}=b, if{2}=c, if{3}=d etc.

\newcommand{mycommand}[1]{
\if{#1 != 0}
Some text, because it's nonzero
\else
Some other text, because it's zero
\fi
}

\mycommand{0}
\mycommand{1}
1
  • 1
    TeX has the \ifnum conditional (and also \ifcase), but you may be better off using etoolbox's arithmetic tests. Commented Dec 17, 2013 at 18:28

2 Answers 2

9

You can do much better: a \newcasecommand that can deal with arbitrary labels, not only numbers.

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\newcasecommand}{ m m O{No~default~value} }
 {
  \cs_new_protected:Npn #1 ##1
   {
    \str_case:nnF { ##1 } { #2 } { #3 }
   }
 }
\ExplSyntaxOff

\newcasecommand{\mycommand}{%
 {0}{The number is zero}
 {1}{The number is one}
 {x}{We have x}
}[Boo!]

\begin{document}

\mycommand{0}

\mycommand{1}

\mycommand{x}

\mycommand{foo}

\end{document}

The syntax is

\newcasecommand{<command>}{
  {<string-a>}{<text for case a>}
  {<string-b>}{<text for case b>}
  ...
 }[<text for no match>]

The final argument is optional; the default is printing an informative text, which could be turned into a warning.

enter image description here

1
  • thats exacly what i need.
    – mert
    Commented Dec 17, 2013 at 18:48
12

You might like \ifcase ...\or...\fi for this situation- here's a complete example to play with

% arara: pdflatex
% !arara: indent: {overwrite: yes}
\documentclass{article}

\newcommand{\mycommand}[1]{%
    \ifcase#1
    Some text, because it's zero
    \or 
    Some other text, because it's one
    \or
    Some other text, because it's two
    % keep going if you need 3, 4, 5, etc
    \fi
}

\begin{document}
\mycommand{0}\par
\mycommand{1}\par
\mycommand{2}
\end{document}
0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .