|
|
1.1 root 1: .\" @(#)tt06 6.1 (Berkeley) 5/23/86
2: .\"
3: .NH
4: Local Motions: Drawing lines and characters
5: .PP
6: Remember `Area = \(*pr\u2\d' and the big `P'
7: in the Paternoster.
8: How are they done?
9: .UL troff
10: provides a host of commands for placing characters of any size
11: at any place.
12: You can use them to draw special characters
13: or to tune your output for a particular appearance.
14: Most of these commands are straightforward, but messy to read
15: and tough to type correctly.
16: .PP
17: If you won't use
18: .UL eqn ,
19: subscripts and superscripts are most easily done with
20: the half-line local motions
21: .BD \eu
22: and
23: .BD \ed .
24: To go back up the page half a point-size, insert a
25: .BD \eu
26: at the desired place;
27: to go down, insert a
28: .BD \ed .
29: .BD \eu \& (
30: and
31: .BD \ed
32: should always
33: be used in pairs, as explained below.)
34: Thus
35: .P1
36: Area = \e(*pr\eu2\ed
37: .P2
38: produces
39: .P1
40: Area = \(*pr\u2\d
41: .P2
42: To make the `2' smaller, bracket it with
43: .BD \es\-2...\es0 .
44: Since
45: .BD \eu
46: and
47: .BD \ed
48: refer to the current point size,
49: be sure to put them either both inside or both outside
50: the size changes,
51: or you will get an unbalanced vertical motion.
52: .PP
53: Sometimes the space given by
54: .BD \eu
55: and
56: .BD \ed
57: isn't the right amount.
58: The
59: .BD \ev
60: command can be used to request an arbitrary amount of vertical motion.
61: The in-line command
62: .P1
63: \ev'(amount)'
64: .P2
65: causes motion up or down the page by the amount specified in
66: `(amount)'.
67: For example, to move the `P' down, we used
68: .P1 2
69: .ta 1i
70: ^in +0.6i (move paragraph in)
71: ^ll \-0.3i (shorten lines)
72: ^ti \-0.3i (move P back)
73: \ev'2'\es36P\es0\ev'\-2'ater noster qui est
74: in caelis ...
75: .P2
76: A minus sign causes upward motion, while
77: no sign or a plus sign means down the page.
78: Thus
79: .BD \ev\(fm\-2\(fm
80: causes an upward vertical motion
81: of two line spaces.
82: .PP
83: There are many other ways to specify the amount of motion _
84: .P1
85: \ev'0.1i'
86: \ev'3p'
87: \ev'\-0.5m'
88: .P2
89: and so on are all legal.
90: Notice that the scale specifier
91: .BD i
92: or
93: .BD p
94: or
95: .BD m
96: goes inside the quotes.
97: Any character can be used in place of the quotes;
98: this is also true of all other
99: .UL troff
100: commands described in this section.
101: .PP
102: Since
103: .UL troff
104: does not take within-the-line vertical motions into account
105: when figuring out where it is on the page,
106: output lines can have unexpected positions
107: if the left and right ends aren't at the same
108: vertical position.
109: Thus
110: .BD \ev ,
111: like
112: .BD \eu
113: and
114: .BD \ed ,
115: should always balance upward vertical motion in a line with
116: the same amount in the downward direction.
117: .PP
118: Arbitrary horizontal motions are also available _
119: .BD \eh
120: is quite analogous to
121: .BD \ev ,
122: except that the default scale factor is ems instead of line spaces.
123: As an example,
124: .P1
125: \eh'\-0.1i'
126: .P2
127: causes a backwards motion of a tenth of an inch.
128: As a practical matter, consider printing the mathematical symbol
129: `>>'.
130: The default spacing is too wide, so
131: .UL eqn
132: replaces this by
133: .P1
134: >\eh'\-0.3m'>
135: .P2
136: to produce >\h'-.3m'>.
137: .PP
138: Frequently
139: .BD \eh
140: is used with the `width function'
141: .BD \ew
142: to generate motions equal to the width
143: of some character string.
144: The construction
145: .P1
146: \ew'thing'
147: .P2
148: is a number equal to the width of `thing' in machine units
149: (1/432 inch).
150: All
151: .UL troff
152: computations are ultimately done in these units.
153: To move horizontally the width of an `x',
154: we can say
155: .P1
156: \eh'\ew'x'u'
157: .P2
158: As we mentioned above,
159: the default scale factor for
160: all horizontal dimensions is
161: .BD m ,
162: ems, so here we must have the
163: .BD u
164: for machine units,
165: or the motion produced will be far too large.
166: .UL troff
167: is quite happy with the nested quotes, by the way,
168: so long as you don't leave any out.
169: .PP
170: As a live example of this kind of construction,
171: all of the command names in the text, like
172: .BD .sp ,
173: were done by overstriking with a slight offset.
174: The commands for
175: .BD .sp
176: are
177: .P1
178: ^sp\eh'\-\ew'.sp'u'\eh'1u'.sp
179: .P2
180: That is, put out `.sp', move left by the width of `.sp',
181: move right 1 unit, and print
182: `.sp' again.
183: (Of course there is a way to avoid typing that much input
184: for each command name, which we will discuss in Section 11.)
185: .WS
186: .PP
187: There are also several special-purpose
188: .UL troff
189: commands for local motion.
190: We have already seen
191: .BD \e0 ,
192: which is an unpaddable white space
193: of the same width as a digit.
194: `Unpaddable' means that it will never be widened
195: or split across a line by line justification and filling.
196: There is also
197: .BD \e (blank),
198: .tr ^^
199: which is an unpaddable character the width of a space,
200: .BD \e| ,
201: which is half that width,
202: .BD \e^ ,
203: which is one quarter of the width of a space,
204: and
205: .BD \e& ,
206: which has zero width.
207: .tr ^.
208: (This last one is useful, for example, in entering
209: a text line which would otherwise begin with a `.'.)
210: .PP
211: The command
212: .BD \eo ,
213: used like
214: .P1
215: \eo'set of characters'
216: .P2
217: causes (up to 9)
218: characters to be overstruck,
219: centered on the widest.
220: This is nice for accents, as in
221: .P1 2
222: syst\eo"e\e(ga"me t\eo"e\e(aa"l\eo"e\e(aa"phonique
223: .P2
224: which makes
225: .P1
226: syst\o"e\(ga"me t\o"e\(aa"l\o"e\(aa"phonique
227: .P2
228: The accents are
229: .BD \e(ga
230: and
231: .BD \e(aa ,
232: or
233: .BD \e\`
234: and
235: .BD \e\' ;
236: remember that each is just one character to
237: .UL troff .
238: .PP
239: You can make your own overstrikes with another special convention,
240: .BD \ez ,
241: the zero-motion command.
242: .BD \ezx
243: suppresses the normal horizontal motion
244: after printing the single character
245: .BD x ,
246: so another character can be laid on top of it.
247: Although sizes can be changed within
248: .BD \eo ,
249: it centers the characters on the widest,
250: and
251: there can be no horizontal or vertical motions,
252: so
253: .BD \ez
254: may be the only way to get what you want:
255: .P1
256: .sp 2
257: \s8\z\(sq\s14\z\(sq\s22\z\(sq\s36\(sq
258: .P2
259: is produced by
260: .P1
261: ^sp 2
262: \es8\ez\e(sq\es14\ez\e(sq\es22\ez\e(sq\es36\e(sq
263: .P2
264: The
265: .BD .sp
266: is needed to leave room for the result.
267: .PP
268: As another example, an extra-heavy semicolon
269: that looks like
270: .P1
271: \s+6\z,\v'-0.25m'.\v'0.25m'\s0 instead of ; or \s+6;\s0
272: .P2
273: can be constructed with a big comma and a big period above it:
274: .P1
275: \es+6\ez,\ev'\(mi0.25m'.\ev'0.25m'\es0
276: .P2
277: `0.25m' is an experimentally-derived constant.
278: .PP
279: A more ornate overstrike is given by the bracketing function
280: .BD \eb ,
281: which piles up characters vertically,
282: centered on the current baseline.
283: Thus we can get big brackets,
284: constructing them with piled-up smaller pieces:
285: .P1
286: .sp
287: .ne 3
288: \b'\(lt\(lk\(lb' \b'\(lc\(lf' x \b'\(rc\(rf' \b'\(rt\(rk\(rb'
289: .sp
290: .P2
291: by typing in only this:
292: .P1 0
293: \&^sp
294: \eb\(fm\e(lt\e(lk\e(lb\(fm \eb\(fm\e(lc\e(lf\(fm x \eb\(fm\e(rc\e(rf\(fm \eb\(fm\e(rt\e(rk\e(rb\(fm
295: .P2
296: .PP
297: .UL troff
298: also provides a convenient facility for drawing horizontal and vertical
299: lines of arbitrary length with arbitrary characters.
300: .BD \el\(fm1i\(fm
301: draws a line one inch long, like this:
302: \l'1i'\|.
303: The length can be followed by
304: the character to use if the \(ru isn't appropriate;
305: .BD \el\(fm0.5i.\(fm
306: draws a half-inch line of dots: \l'.5i.'.
307: The construction
308: .BD \eL
309: is entirely analogous,
310: except that it draws a vertical line instead of horizontal.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.