Annotation of 43BSDReno/share/doc/usd/25.trofftut/tt12, revision 1.1.1.1

1.1       root        1: .\"    @(#)tt12        6.1 (Berkeley) 5/23/86
                      2: .\"
                      3: .NH
                      4: Conditionals
                      5: .PP
                      6: Suppose we want the
                      7: .BD .SH
                      8: macro to leave two extra inches of space just before section 1,
                      9: but nowhere else.
                     10: The cleanest way to do that is to test inside the
                     11: .BD .SH
                     12: macro
                     13: whether
                     14: the section number is 1,
                     15: and add some space if it is.
                     16: The
                     17: .BD .if
                     18: command provides the conditional test
                     19: that we can add
                     20: just before the heading line is output:
                     21: .P1 4
                     22: ^if \e\en(SH=1 ^sp 2i  \e" first section only
                     23: .P2
                     24: .PP
                     25: The condition after the
                     26: .BD .if
                     27: can be any arithmetic or logical expression.
                     28: If the condition is logically true, or arithmetically greater than zero,
                     29: the rest of the line is treated as if
                     30: it were text _
                     31: here a command.
                     32: If the condition is false, or zero or negative,
                     33: the rest of the line is skipped.
                     34: .PP
                     35: It is possible to do more than one command if a condition is true.
                     36: Suppose several operations are to be done before section 1.
                     37: One possibility is to define a macro 
                     38: .BD .S1
                     39: and invoke it
                     40: if we are about to do section 1
                     41: (as determined by an
                     42: .BD .if ).
                     43: .P1
                     44: ^de S1
                     45: ---  processing for section 1 ---
                     46: ^^
                     47: ^de SH
                     48: ^^^
                     49: ^if \e\en(SH=1 ^S1
                     50: ^^^
                     51: ^^
                     52: .P2
                     53: .PP
                     54: An alternate way is to use the
                     55: extended form of the
                     56: .BD .if ,
                     57: like this:
                     58: .P1
                     59: ^if \e\en(SH=1 \e{--- processing
                     60: for section 1 ----\e}
                     61: .P2
                     62: The braces
                     63: .BD \e{
                     64: and
                     65: .BD \e}
                     66: must occur in the positions shown
                     67: or you will get unexpected extra lines in your output.
                     68: .UL troff
                     69: also provides
                     70: an `if-else' construction,
                     71: which we will not go into here.
                     72: .PP
                     73: A condition can be negated by preceding it with
                     74: .BD ! ;
                     75: we get the same effect as above (but less clearly) by using
                     76: .P1
                     77: ^if !\e\en(SH>1 ^S1
                     78: .P2
                     79: .PP
                     80: There are a handful of 
                     81: other conditions that can be tested with
                     82: .BD .if .
                     83: For example, is the current page even or odd?
                     84: .P1
                     85: ^if o ^tl 'odd page title''- % -'
                     86: ^if e ^tl '- % -''even page title'
                     87: .P2
                     88: gives facing pages different titles and page numbers on the
                     89: outside edge when used inside an appropriate new page macro.
                     90: .PP
                     91: Two other conditions
                     92: are
                     93: .BD t
                     94: and
                     95: .BD n ,
                     96: which tell you whether the formatter is
                     97: .UL troff
                     98: or
                     99: .UL nroff . 
                    100: .P1
                    101: ^if t troff stuff ...
                    102: ^if n nroff stuff ...
                    103: .P2
                    104: .PP
                    105: Finally, string comparisons may be made in an
                    106: .BD .if :
                    107: .P1
                    108: ^if  'string1'string2'  stuff
                    109: .P2
                    110: does `stuff' if
                    111: .ul
                    112: string1
                    113: is the same as
                    114: .ul
                    115: string2.
                    116: The character separating the strings can be anything
                    117: reasonable that is
                    118: not contained in either string.
                    119: The strings themselves can reference strings with
                    120: .BD \e* ,
                    121: arguments with 
                    122: .BD \e$ ,
                    123: and so on.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.