Command/doif...

From Wiki
Jump to navigation Jump to search

\doif...

  • \doifnextcharelse
  • \doifundefined, \doifdefined, etc.
  • \doif, \doifnot, \doifelse
  • \doifempty, \doifnotempty, \doifemptyelse
  • \doifinset, \doifnotinset, \doifnotinsetelse
  • \doifcommon, \doifnotcommon, \doifcommonelse
  • \doifsamestringselse,\doifsamestring,\doifnotsamestring
  • \doifinstringelse,\doifincsnameelse
  • \doifnumberelse
  • \doifassignmentelse
  • \doiftext, \doiftextelse — empty string
  • \doifrightpageelse (precede by \signalrightpage)
  • \doifdocumentargument
  • \doifelseindented (LMTX only)

Examples

Example 1: Date Macro

  • \startTEXpage[offset=5mm]
      %--- Commands Needed
      %\setvariable{NAME}{KEY}{VALUE} => \getvariable{NAME}{KEY}
      %\defineexpandable[n]
      %\doifnumberelse{TEXT}{TRUE_CASE}{FALSE_CASE}
    
      \defineexpandable[1]\notToday{%
        \start\dorecurse{#1}{\increment\normalday}\currentdate\stop%
      }%
      
      \defineexpandable\Date{%
        \doifnumberelse{\getvariable{Document}{Date}}{\notToday{\getvariable{Document}{Date}}}{\currentdate}%
      }%
    
      \setvariable{Document}{Date}{today}
    
      Today is \Date.
      
      \setvariable{Document}{Date}{7}
      
      In a week will be \Date.
    \stopTEXpage
    

Example 2: Using Lua

We can also write tests using Lua. (Example by WS, 3/2011.)

  • \startTEXpage
      \ctxlua{test = true}
     
       Test is \ctxlua{commands.doifelse(test)}{True}{False}.
     
      \ctxlua{test = false}
    
      Test is \ctxlua{commands.doifelse(test)}{True}{False}.
    \stopTEXpage
    

See also

Branches and Decisions

Help from ConTeXt-Mailinglist/Forum

All issues with: