|
|
1.1 root 1: .\" @(#)m2 6.2 (Berkeley) 4/21/86
2: .\"
3: .tr |
4: .rm mx
5: .br
6: .mh
7: Line Length and Indenting
8: .pg
9: The maximum line length for fill mode may be set with \fBll\fR.
10: The indent may be set with \fBin\fR;
11: an indent applicable to \fIonly\fR the \fInext\fR output line may be set with \fBti\fR.
12: The line length includes indent space but \fInot\fR
13: page offset space.
14: The line-length minus the indent is the basis for centering with \fBce\fR.
15: The effect of \fBll\fR, \fBin\fR, or \fBti\fR
16: is delayed, if a partially collected line exists,
17: until after that line is output.
18: In fill mode the length of text on an output line is less than or equal to
19: the line length minus the indent.
20: The current line length and indent are available in registers \fB.l\fR and \fB.i\fR respectively.
21: The length of \fIthree-part titles\fR produced by \fBtl\fR
22: (see \(sc14) is \fIindependently\fR set by \fBlt\fR.
23: .h1
24: .bt
25: \fB&ll\fI|\(+-N\fR 6.5\|in previous E,\fBm\fR Line length is set to \(+-\fIN\fR.
26: In \*(TR the maximum (line-length)+(page-offset) is about 7.54 inches.
27: .bt
28: \fB&in\fI|\(+-N\fR \fIN\(eq\^\fR0 previous B,E,\fBm\fR Indent is set to \fI\(+-N\fR.
29: The indent is prepended to each output line.
30: .bt
31: \fB&ti\fI|\(+-N\fR - ignored B,E,\fBm\fR Temporary indent.
32: The \fInext\fR output text line will be indented a distance \fI\(+-N\fR
33: with respect to the current indent.
34: The resulting total indent may not be negative.
35: The current indent is not changed.
36: .mh
37: Macros, Strings, Diversion, and Position Traps
38: .sc
39: Macros and strings.
40: A \fImacro\fR is a named set of arbitrary \fIlines\fR that may be invoked by name or
41: with a \fItrap\fR.
42: A \fIstring\fR is a named string of \fIcharacters\fR,
43: \fInot\fR including a newline character,
44: that may be interpolated by name at any point.
45: Request, macro, and string names share the \fIsame\fR name list.
46: Macro and string names
47: may be one or two characters long and may usurp previously defined
48: request, macro, or string names.
49: Any of these entities may be renamed with \fBrn\fR
50: or removed with \fBrm\fR.
51: Macros are created by \fBde\fR and \fBdi\fR, and appended to by \fBam\fR and \fBda\fR;
52: \fBdi\fR and \fBda\fR cause normal output to be stored in a macro.
53: Strings are created by \fBds\fR and appended to by \fBas\fR.
54: A macro is invoked in the same way as a request;
55: a control line beginning \fB.\fIxx\fR will interpolate the contents of macro \fIxx\fR.
56: The remainder of the line may contain up to nine \fIarguments\fR.
57: The strings \fIx\fR and \fIxx\fR are interpolated at any desired point with
58: \fB\e\(**\fIx\fR and \fB\e\(**(\fIxx\fR respectively.
59: String references and macro invocations may be nested.
60: .sc
61: Copy mode input interpretation.
62: During the definition and extension
63: of strings and macros (not by diversion)
64: the input is read in \fIcopy mode\fR.
65: The input is copied without interpretation
66: \fIexcept\fR that:
67: .x1
68: .ds + \v'-.1m'\s-4\(bu\s+4\v'+.1m'
69: \*+ The contents of number registers indicated by \fB\en\fR are interpolated.
70: \*+ Strings indicated by \fB\e\(**\fR are interpolated.
71: \*+ Arguments indicated by \fB\e$\fR are interpolated.
72: \*+ Concealed newlines indicated by \fB\e\fR(newline) are eliminated.
73: \*+ Comments indicated by \fB\e"\fR are eliminated.
74: \*+ \fB\et\fR and \fB\ea\fR are interpreted as \s-1ASCII\s+1 horizontal tab and \s-1SOH\s+1 respectively (\(sc9).
75: \*+ \fB\e\e\fR is interpreted as \fB\e\fR.
76: \*+ \fB\e.\fR is interpreted as "\fB.\fR".
77: .x2
78: These interpretations can be suppressed by
79: prepending
80: a \fB\e\fR.
81: For example, since \fB\e\e\fR maps into a \fB\e\fR, \fB\e\en\fR will copy as \fB\en\fR which
82: will be interpreted as a number register indicator when the
83: macro or string is reread.
84: .sc
85: Arguments.
86: When a macro is invoked by name, the remainder of the line is
87: taken to contain up to nine arguments.
88: The argument separator is the space character, and arguments
89: may be surrounded by double-quotes to permit imbedded space characters.
90: Pairs of double-quotes may be imbedded in double-quoted arguments to
91: represent a single double-quote.
92: If the desired arguments won't fit on a line,
93: a concealed newline may be used to continue on the next line.
94: .pg
95: When a macro is invoked the \fIinput level\fR is \fIpushed down\fR and
96: any arguments available at the previous level become unavailable
97: until the macro is completely read and the previous level is restored.
98: A macro's own arguments can be interpolated at \fIany\fR point
99: within the macro with \fB\e$\fIN\fR, which interpolates the \fIN\fR\^th
100: argument
101: (1\(<=\fIN\fR\^\(<=9).
102: If an invoked argument doesn't exist,
103: a null string results.
104: For example, the macro \fIxx\fR may be defined by
105: .x1
106: .ftB
107: .ta .75i
108: &de xx \e"begin definition
109: Today is \e\e$1 the \e\e$2.
110: &. \e"end definition
111: .ftR
112: .x2
113: and called by
114: .x1
115: .ftB
116: &xx Monday 14th
117: .ftR
118: .x2
119: to produce the text
120: .x1
121: .ftB
122: Today is Monday the 14th.
123: .ftR
124: .x2
125: Note that the \fB\e$\fR
126: was concealed in the definition with a prepended \fB\e\fR.
127: The number of currently available
128: arguments is in the \fB.$\fR register.
129: .pg
130: No arguments are available at the top (non-macro) level
131: in this implementation.
132: Because string referencing is implemented
133: as a input-level push down,
134: no arguments are available from \fIwithin\fR a string.
135: No arguments are available within a trap-invoked macro.
136: .pg
137: Arguments are copied in \fIcopy mode\fR onto a stack
138: where they are available for reference.
139: The mechanism does not allow an argument to contain
140: a direct reference to a \fIlong\fR string
141: (interpolated at copy time) and it is advisable to
142: conceal string references (with an extra \fB\e\fR\|)
143: to delay interpolation until argument reference time.
144: .sc
145: Diversions.
146: Processed output may be diverted into a macro for purposes
147: such as footnote processing (see Tutorial \(scT5)
148: or determining the horizontal and vertical size of some text for
149: conditional changing of pages or columns.
150: A single diversion trap may be set at a specified vertical position.
151: The number registers \fBdn\fR and \fBdl\fR respectively contain the
152: vertical and horizontal size of the most
153: recently ended diversion.
154: Processed text that is diverted into a macro
155: retains the vertical size of each of its lines when reread
156: in \fInofill\fR mode
157: regardless of the current \fIV\fR.
158: Constant-spaced (\fBcs\fR) or emboldened (\fBbd\fR) text that is diverted
159: can be reread correctly only if these modes are again or still in effect
160: at reread time.
161: One way to do this is to imbed in the diversion the appropriate
162: \fBcs\fR or \fBbd\fR requests with the \fItransparent\fR
163: mechanism described in \(sc10.6.
164: .pg
165: Diversions may be nested
166: and certain parameters and registers
167: are associated
168: with the current diversion level
169: (the top non-diversion level may be thought of as the
170: 0th diversion level).
171: These are the diversion trap and associated macro,
172: no-space mode,
173: the internally-saved marked place (see \fBmk\fR and \fBrt\fR),
174: the current vertical place (\fB.d\fR register),
175: the current high-water text base-line (\fB.h\fR register),
176: and the current diversion name (\fB.z\fR register).
177: .sc
178: Traps.
179: Three types of trap mechanisms are available\(empage traps, a diversion trap, and
180: an input-line-count trap.
181: Macro-invocation traps may be planted using \fBwh\fR at any page position including the top.
182: This trap position may be changed using \fBch\fR.
183: Trap positions at or below the bottom of the page
184: have no effect unless or until
185: moved to within the page or rendered effective by an increase in page length.
186: Two traps may be planted at the \fIsame\fR position only by first planting them at different
187: positions and then moving one of the traps;
188: the first planted trap will conceal the second unless and until the first one is moved
189: (see Tutorial Examples \(scT5).
190: If the first one is moved back, it again conceals the second trap.
191: The macro associated with a page trap is automatically
192: invoked when a line of text is output whose vertical size \fIreaches\fR
193: or \fIsweeps past\fR the trap position.
194: Reaching the bottom of a page springs the top-of-page trap, if any,
195: provided there is a next page.
196: The distance to the next trap position is available in the \fB.t\fR register;
197: if there are no traps between the current position and the bottom of the page,
198: the distance returned is the distance to the page bottom.
199: .pg
200: A macro-invocation trap effective in the current diversion may be planted using \fBdt\fR.
201: The \fB.t\fR register works in a diversion; if there is no subsequent trap a \fIlarge\fR
202: distance is returned.
203: For a description of input-line-count traps, see the \fBit\fR request below.
204: .h1
205: .bt
206: \fB&de\fI|xx|yy\fR - \fI.yy=\fB..\fR - Define or redefine the macro \fIxx\fR.
207: The contents of the macro begin on the next input line.
208: Input lines are copied in \fIcopy mode\fR until the definition is terminated by a
209: line beginning with \fB.\fIyy\fR,
210: whereupon the macro \fIyy\fR is called.
211: In the absence of \fIyy\fR, the definition
212: is terminated by a
213: line beginning with "\fB..\fR".
214: A macro may contain \fBde\fR requests
215: provided the terminating macros differ
216: or the contained definition terminator is concealed.
217: \&"\fB..\fR" can be concealed as
218: \fB\e\e..\fR which will copy as \fB\e..\fR and be reread as "\fB..\fR".
219: .bt
220: \fB&am\fI|xx|yy\fR - \fI.yy=\fB..\fR - Append to macro (append version of \fBde\fR).
221: .bt
222: \fB&ds\fI|xx|string\fR - ignored - Define a string
223: \fIxx\fR containing \fIstring\fR.
224: Any initial double-quote in \fIstring\fR is stripped off to permit
225: initial blanks.
226: .bt
227: \fB&as\fI|xx|string\fR - ignored - Append
228: \fIstring\fR to string \fIxx\fR
229: (append version of \fBds\fR).
230: .bt
231: \fB&rm\fI|xx\fR - ignored - Remove
232: request, macro, or string.
233: The name \fIxx\fR is removed from the name list and
234: any related storage space is freed.
235: Subsequent references will have no effect.
236: .bt
237: \fB&rn\fI|xx|yy\fR - ignored - Rename request, macro, or string
238: \fIxx\fR to \fIyy\fR.
239: If \fIyy\fR exists, it is first removed.
240: .bt
241: \fB&di|\fIxx\fR - end D Divert output to macro \fIxx\fR.
242: Normal text processing occurs during diversion
243: except that page offsetting is not done.
244: The diversion ends when the request \fBdi\fR or \fBda\fR is encountered without an argument;
245: extraneous
246: requests of this type should not appear when nested diversions are being used.
247: .bt
248: \fB&da|\fIxx\fR - end D Divert, appending to \fIxx\fR
249: (append version of \fBdi\fR).
250: .bt
251: \fB&wh\fI|N|xx\fR - - \fBv\fR Install
252: a trap to invoke \fIxx\fR at page position \fIN;\fR
253: a \fInegative N\fR will be interpreted with respect to the
254: page \fIbottom\fR.
255: Any macro previously planted at \fIN\fR is replaced by \fIxx\fR.
256: A zero \fIN\fR refers to the \fItop\fR of a page.
257: In the absence of \fIxx\fR, the first found trap at \fIN\fR, if any, is removed.
258: .bt
259: \fB&ch\fI|xx|N\fR - - \fBv\fR Change
260: the trap position for macro \fIxx\fR to be \fIN\fR.
261: In the absence of \fIN\fR, the trap, if any, is removed.
262: .bt
263: \fB&dt\fI|N|xx\fR - off D,\fBv\fR Install a diversion trap
264: at position \fIN\fR in the \fIcurrent\fR diversion to invoke
265: macro \fIxx\fR.
266: Another \fBdt\fR will redefine the diversion trap.
267: If no arguments are given, the diversion trap is removed.
268: .bt
269: \fB&it\fI|N|xx\fR - off E Set an input-line-count trap
270: to invoke the macro \fIxx\fR after \fIN\fR lines of \fItext\fR input
271: have been read
272: (control or request lines don't count).
273: The text may be in-line text or
274: text interpolated by inline or trap-invoked macros.
275: .bt
276: \fB&em\fI|xx\fR none none - The
277: macro \fIxx\fR will be invoked
278: when all input has ended.
279: The effect is the same as if the contents of \fIxx\fR had been at the end
280: of the last file processed.
281: .mh
282: Number Registers
283: .pg
284: A variety of parameters are available to the user as
285: predefined, named \fInumber registers\fR (see Summary and Index, page 7).
286: In addition, the user may define his own named registers.
287: Register names are one or two characters long and \fIdo not\fR conflict
288: with request, macro, or string names.
289: Except for certain predefined read-only registers,
290: a number register can be read, written, automatically
291: incremented or decremented, and interpolated
292: into the input in a variety of formats.
293: One common use of user-defined registers is to
294: automatically number sections, paragraphs, lines, etc.
295: A number register may be used any time numerical input is expected or desired
296: and may be used in numerical \fIexpressions\fR (\(sc1.4).
297: .pg
298: Number registers are created and modified using \fBnr\fR, which
299: specifies the name, numerical value, and the auto-increment size.
300: Registers are also modified, if accessed
301: with an auto-incrementing sequence.
302: If the registers \fIx\fR and \fIxx\fR both contain
303: \fIN\fR and have the auto-increment size \fIM\fR,
304: the following access sequences have the effect shown:
305: .TS
306: center box;
307: c2|c2|c
308: c2|c2|c2
309: l2|c2|c2
310: l2|c2|c2
311: l2|l2|c2.
312: Effect on Value
313: Sequence Register Interpolated
314: _
315: \fB\en\fIx\fR none \fIN\fR
316: \fB\en(\fIxx\fR none \fIN\fR
317: \fB\en+\fIx\fR \fIx\fR incremented by \fIM\fR \fIN+M\fR
318: \fB\en\-\fIx\fR \fIx\fR decremented by \fIM\fR \fIN\-M\fR
319: \fB\en+(\fIxx\fR \fIxx\fR incremented by \fIM\fR \fIN+M\fR
320: \fB\en\-(\fIxx\fR \fIxx\fR decremented by \fIM\fR \fIN\-M\fR
321: .TE
322: When interpolated, a number register is converted to
323: decimal (default),
324: decimal with leading zeros,
325: lower-case Roman,
326: upper-case Roman,
327: lower-case sequential alphabetic,
328: or
329: upper-case sequential alphabetic
330: according to the format specified by \fBaf\fR.
331: .h1
332: .bt
333: \fB&nr\fI|R|\(+-N|M\fR - - \fBu\fR \
334: The number register \fIR\fR is assigned the value \fI\(+-N\fR
335: with respect to the previous value, if any.
336: The increment for auto-incrementing is set to \fIM\fR.
337: .bt
338: \fB&af\fI|R|c\fR arabic - - Assign format \fIc\fR to register \fIR\fR.
339: The available formats are:
340: .TS
341: center box;
342: c2|c
343: c2|c
344: c2|l.
345: Numbering
346: Format Sequence
347: _
348: \fB1\fR 0,1,2,3,4,5,...
349: \fB001\fR 000,001,002,003,004,005,...
350: \fBi\fR 0,i,ii,iii,iv,v,...
351: \fBI\fR 0,I,II,III,IV,V,...
352: \fBa\fR 0,a,b,c,...,z,aa,ab,...,zz,aaa,...
353: \fBA\fR 0,A,B,C,...,Z,AA,AB,...,ZZ,AAA,...
354: .TE
355: An arabic format having \fIN\fR digits
356: specifies a field width of \fIN\fR digits (example 2 above).
357: The read-only registers and the \fIwidth\fR function (\(sc11.2)
358: are always arabic.
359: .bt
360: \fB&rr\fI|R\fR - ignored - Remove register \fIR\fR.
361: If many registers are being created dynamically, it
362: may become necessary to remove no longer used registers
363: to recapture internal storage space for newer registers.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.