|
|
1.1 root 1: .\" @(#)tt08 6.1 (Berkeley) 5/23/86
2: .\"
3: .NH
4: Introduction to Macros
5: .PP
6: Before we can go much further in
7: .UL troff ,
8: we need to learn a bit about the
9: macro
10: facility.
11: In its simplest form, a macro is just a shorthand notation
12: quite similar to a string.
13: Suppose we want every paragraph to start
14: in exactly the same way _
15: with a space and a temporary indent of two ems:
16: .P1
17: ^sp
18: ^ti +2m
19: .P2
20: Then to save typing, we would like to collapse these into
21: one shorthand line,
22: a
23: .UL troff
24: `command' like
25: .P1
26: ^PP
27: .P2
28: that would be treated by
29: .UL troff
30: exactly as
31: .P1
32: ^sp
33: ^ti +2m
34: .P2
35: .BD .PP
36: is called a
37: .ul
38: macro.
39: The way we tell
40: .UL troff
41: what
42: .BD .PP
43: means is to
44: .ul
45: define
46: it with the
47: .BD .de
48: command:
49: .P1
50: ^de PP
51: ^sp
52: ^ti +2m
53: ^^
54: .P2
55: The first line names the macro
56: (we used
57: .BD .PP ' `
58: for `paragraph',
59: and upper case so it wouldn't conflict with
60: any name that
61: .UL troff
62: might
63: already know about).
64: The last line
65: .BD ..
66: marks the end of the definition.
67: In between is the text,
68: which is simply inserted whenever
69: .UL troff
70: sees the `command'
71: or macro call
72: .P1
73: ^PP
74: .P2
75: A macro
76: can contain any mixture of text and formatting commands.
77: .PP
78: The definition of
79: .BD .PP
80: has to precede its first use;
81: undefined macros are simply ignored.
82: Names are restricted to one or two characters.
83: .PP
84: Using macros for commonly occurring sequences of commands
85: is critically important.
86: Not only does it save typing,
87: but it makes later changes much easier.
88: Suppose we decide that the paragraph indent is too small,
89: the vertical space is much too big,
90: and roman font should be forced.
91: Instead of changing the whole document,
92: we need only change the definition of
93: .BD .PP
94: to
95: something like
96: .P1
97: ^de PP \e" paragraph macro
98: ^sp 2p
99: ^ti +3m
100: ^ft R
101: ^^
102: .P2
103: and the change takes
104: effect everywhere we used
105: .BD .PP .
106: .PP
107: .BD \e"
108: is a
109: .UL troff
110: command that causes the rest of the line to be ignored.
111: We use it here to add comments to the macro
112: definition
113: (a wise idea once definitions get complicated).
114: .PP
115: As another example of macros,
116: consider these two which start and end a block of offset,
117: unfilled text, like most of the examples in this paper:
118: .P1
119: ^de BS \e" start indented block
120: ^sp
121: ^nf
122: ^in +0.3i
123: ^^
124: ^de BE \e" end indented block
125: ^sp
126: ^fi
127: ^in \(mi0.3i
128: ^^
129: .P2
130: Now we can surround text like
131: .P1
132: Copy to
133: John Doe
134: Richard Roberts
135: Stanley Smith
136: .P2
137: by the commands
138: .BD .BS
139: and
140: .BD .BE ,
141: and it will come out as it did above.
142: Notice that we indented by
143: .BD .in\ +0.3i
144: instead of
145: .BD .in\ 0.3i .
146: This way we can nest our uses of
147: .BD .BS
148: and
149: .BD BE
150: to get blocks within blocks.
151: .PP
152: If later on we decide that the indent
153: should be 0.5i, then it is only necessary to
154: change the definitions of
155: .BD .BS
156: and
157: .BD .BE ,
158: not the whole paper.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.