home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / comp / text / tex / 14735 < prev    next >
Encoding:
Internet Message Format  |  1993-01-07  |  1.8 KB

  1. Path: sparky!uunet!noc.near.net!hri.com!spool.mu.edu!uwm.edu!wupost!micro-heart-of-gold.mit.edu!uw-beaver!cs.ubc.ca!unixg.ubc.ca!msr.triumf.ca!asnd
  2. From: asnd@msr.triumf.ca (Donald Arseneau)
  3. Newsgroups: comp.text.tex
  4. Subject: Re: Boolean operators for TeX's \if constructions?
  5. Summary: Yes, but not pretty
  6. Message-ID: <7JAN199320223523@msr.triumf.ca>
  7. Date: 8 Jan 93 04:22:00 GMT
  8. References: <1993Jan3.150933.3089@wam.umd.edu>
  9. Organization: TRIUMF: Tri-University Meson Facility
  10. Lines: 41
  11. NNTP-Posting-Host: msr.triumf.ca
  12. News-Software: VAX/VMS VNEWS 1.41
  13.  
  14. In article <1993Jan3.150933.3089@wam.umd.edu>, joel@wam.umd.edu (Joel M. Hoffman) writes...
  15. >Is there any way to incorporate boolean operators into TeX's \if
  16. >constructions?  What I'd like to do is something like
  17. >    \if\a\b \and \if\a\c \or \if\a\d
  18. >        \dosomething
  19. >    \else
  20. >        \dosomethingelse
  21. >    \fi
  22. >Any ideas?
  23.  
  24. If you don't mind some very confusing constructs:
  25.  
  26. AND:
  27.     \ifnum 0\if\a\b \else 1\fi \if\a\c \else 1\fi=0 ...
  28.             -------            -------  
  29. OR: 
  30.     \ifnum 0\if\a\b 1\fi \if\a\c 1\fi >0 ...
  31.             -------      -------
  32. EOR: 
  33.     \ifnum \if\a\b -\fi \if\a\c -\fi 1<0 ...
  34.            -------      -------
  35.  
  36. In these, the underlined parts are the tests to be ANDed or ORed.  They
  37. end with a space after the 0.  They can be extended to combining more than
  38. two tests at a time ( a or b or c or d ).
  39.  
  40. So for the example:  if (a=b and a=c) or a=d then
  41.  
  42. \ifnum 0% for the outer "or", the next line is the first test, the inner "and"
  43.   \ifnum 0\if\a\b \else 1\fi \if\a\c \else 1\fi=0 % note space at end
  44. \else 1\fi 
  45.   \if\a\d % the second test of the OR, simply compare a and d
  46. 1\fi >0 % another trailing space
  47.  
  48. You could make macros \Land, \Lor to hide the mess, but they could not be 
  49. skipped in conditional text unless there were equal ifs and fis visible.
  50.  
  51.  
  52. Donald Arseneau        asnd@reg.triumf.ca
  53.