% boolexpr : Purely expandable boolean expressions and switch (eTeX - v3.1 2009/09/30) % % The \boolexpr macro evaluate boolean expressions in a *purely expandable way*. % % \boolexpr{ A \OR B \AND C } expands to 0 if the logical expression is TRUE. % % A, B, C may be : % - numeric expressions such as: x = y, x <> y, x > y or: x < y % - boolean switches: \iftrue 0\else 1\fi % - conditionals: \ifcsname whatsit\endcsname 0\else 1\fi % - another \boolexpr: \boolexpr{ D \OR E \AND F } % % \boolexpr may be used with \ifcase: % \ifcase\boolexpr{ A \OR B \AND C } % What to do if true % \else % What to do if false % \fi % % \switch remains *purely expandable* (it may be used inside \csname...\endcsname f.ex.) % % \switch % \case{ boolean expression} to do in first case % \case{ boolean expression} to do in second case % \otherwise to do if no case were true % \endswitch % % \switch may have an optional argument to repeat in each \case evaluation, e.g. : % % \switch[\value{myCounter}] % %|--| ---------------------------------------------------> |--| % \case{>=12}It's $>=12$% => \case will expand to : \case{\value{myCounter}>=12} % \case{=1}It's $1$% => \case will expand to : \case{\value{myCounter}=1} % \otherwise ... % \endswitch % % or : *(NB the double curly braces)* % \switch[\pdfstrcmp{dummy}}] % %|-----| ------------------------------------------------> |-----| % \case{{first}}It's "FiRsT"% => \case{\lowercase{\ifstrequal{dummy}}{first}} % \case{{second}}It"s "SeCoNd"%=> \case{\lowercase{\ifstrequal{dummy}}{second} % \endswitch % % ********************************************************************************* % This work consists of the main source file boolexpr.dtx and the derived % files : boolexpr.sty, boolexpr.pdf, boolexpr.ins % % Some examples are included in the documentation: it is preferable (albeit % not necessary) to install boolexpr.sty before compiling the documentation. % % Unpacking: % (a) If boolexpr.ins is present: % etex boolexpr.ins % (b) Without boolexpr.ins: % etex boolexpr.dtx % (c) If you insist on using LaTeX % latex \let\install=y\input{boolexpr.dtx} % (quote the arguments according to the demands of your shell) % % Documentation: % (pdf)latex boolexpr.dtx % makeindex -s gind.ist boolexpr.idx % % F Chervet - Jul-Sep 2009