|
|
1.1 root 1: .\" @(#)m4 6.2 (Berkeley) 4/21/86
2: .\"
3: .tr |
4: .mh
5: Hyphenation.
6: .pg
7: The automatic hyphenation may be switched off and on.
8: When switched on with \fBhy\fR,
9: several variants may be set.
10: A \fIhyphenation indicator\fR character may be imbedded in a word to
11: specify desired hyphenation points,
12: or may be prepended to suppress hyphenation.
13: In addition,
14: the user may specify a small exception word list.
15: .pg
16: Only words that consist of a central alphabetic string
17: surrounded by (usually null) non-alphabetic strings
18: are considered candidates for automatic hyphenation.
19: Words that were input containing hyphens
20: (minus),
21: em-dashes (\fB\e(em\fR),
22: or hyphenation indicator characters\
23: \(emsuch as mother-in-law\(em\
24: are \fIalways\fR subject to splitting after those characters,
25: whether or not automatic hyphenation is on or off.
26: .h1
27: .bt
28: \fB&nh\fR hyphenate - E \
29: Automatic hyphenation is turned off.
30: .bt
31: \fB&hy\fIN\fR on,\fIN=\fR1 on,\fIN=\fR1 E \
32: Automatic hyphenation is turned on
33: for \fIN\fR\|\(>=1, or off for \fIN=\fR\|0.
34: If \fIN=\fR\|2, \fIlast\fR lines (ones that will cause a trap)
35: are not hyphenated.
36: For \fIN=\fR\|4 and 8, the last and first two characters
37: respectively of a word are not split off.
38: These values are additive;
39: i.|e. \fIN=\fR\|14 will invoke all three restrictions.
40: .bt
41: \fB&hc\fI|c\fR \fB\e% \e%\fR E Hyphenation indicator character is set
42: to \fIc\fR or to the default \fB\e%\fR.
43: The indicator does not appear in the output.
44: .bt
45: \fB&hw\fI|word1|...\fR ignored - Specify hyphenation points in words
46: with imbedded minus signs.
47: Versions of a word with terminal \fIs\fR are implied;
48: i.|e. \fIdig\-it\fR implies \fIdig\-its\fR.
49: This list is examined initially \fIand\fR after
50: each suffix stripping.
51: The space available is small\(emabout 128 characters.
52: .mh
53: Three Part Titles.
54: .pg
55: The titling function \fBtl\fR provides for automatic placement
56: of three fields at the left, center, and right of a line
57: with a title-length
58: specifiable with \fBlt\fR.
59: \fBtl\fR may be used anywhere, and is independent of the
60: normal text collecting process.
61: A common use is in header and footer macros.
62: .h1
63: .bt
64: \fB&tl\fI|\'left\|\'center\|\'right\|\'\fR - - \
65: The strings \fIleft\fR, \fIcenter\fR, and \fIright\fR are
66: respectively left-adjusted, centered, and right-adjusted
67: in the current title-length.
68: Any of the strings may be empty,
69: and overlapping is permitted.
70: If the page-number character (initially \fB%\fR) is found within any of the fields it is replaced
71: by the current page number having the format assigned to register \fB%\fR.
72: Any character may be used as the string delimiter.
73: .bt
74: \fB&pc\fI|c\fR \fB%\fR off - The page number character is set to \fIc\fR,
75: or removed.
76: The page-number register remains \fB%\fR.
77: .bt
78: \fB<\fI|\(+-N\fR 6.5\|in previous E,\fBm\fR Length of title set to \fI\(+-N\fR.
79: The line-length and the title-length are \fIindependent\fR.
80: Indents do not apply to titles; page-offsets do.
81: .mh
82: Output Line Numbering.
83: .pg
84: .ll -\w'0000'u
85: .nm 1 3
86: Automatic sequence numbering of output lines may be
87: requested with \fBnm\fR.
88: When in effect,
89: a three-digit, arabic number plus a digit-space
90: is prepended to output text lines.
91: The text lines are thus offset by four digit-spaces,
92: and otherwise retain their line length;
93: a reduction in line length may be desired to keep the right margin
94: aligned with an earlier margin.
95: Blank lines, other vertical spaces, and lines generated by \fBtl\fR
96: are \fInot\fR numbered.
97: Numbering can be temporarily suspended with \fBnn\fR,
98: or with an \fB.nm\fR followed by a later \fB.nm|+0\fR.
99: In addition,
100: a line number indent \fII\fR, and the number-text separation \fIS\fR
101: may be specified in digit-spaces.
102: Further, it can be specified that only those line numbers that are
103: multiples of some number \fIM\fR are to be printed (the others will appear
104: as blank number fields).
105: .br
106: .nm
107: .ll
108: .h1
109: .bt
110: \fB&nm\fI|\(+-N|M|S|I\fR off E \
111: Line number mode.
112: If \fI\(+-N\fR is given,
113: line numbering is turned on,
114: and the next output line numbered is numbered \fI\(+-N\fR.
115: Default values are \fIM=\fR\|1, \fIS=\fR\|1, and \fII=\fR\|0.
116: Parameters corresponding to missing arguments are unaffected;
117: a non-numeric argument is considered missing.
118: In the absence of all arguments, numbering is turned off;
119: the next line number is preserved for possible further use
120: in number register \fBln\fR.
121: .bt
122: \fB&nn\fI|N\fR - \fIN=\fR1 E The next \fIN\fR text output lines are not
123: numbered.
124: .pg
125: .ll -\w'0000'u
126: .nm +0
127: As an example, the paragraph portions of this section
128: are numbered with \fIM=\fR\|3:
129: \&\fB.nm|1|3\fR was placed at the beginning;
130: \&\fB.nm\fR was placed at the end of the first paragraph;
131: and \fB.nm|+0\fR was placed in front of this paragraph;
132: and \fB.nm\fR finally placed at the end.
133: Line lengths were also changed (by \fB\ew\'0000\'u\fR) to keep the right side aligned.
134: Another example is
135: \&\fB.nm|+5|5|x|3\fR which turns on numbering with the line number of the next
136: line to be 5 greater than the last numbered line,
137: with \fIM=\fR\|5, with spacing \fIS\fR untouched, and with the indent \fII\fR set to 3.
138: .br
139: .ll
140: .nm
141: .mh
142: Conditional Acceptance of Input
143: .pg
144: In the following,
145: \fIc\fR is a one-character, built-in \fIcondition\fR name,
146: \fB!\fR signifies \fInot\fR,
147: \fIN\fR is a numerical expression,
148: \fIstring1\fR and \fIstring2\fR are strings delimited by any non-blank, non-numeric character \fInot\fR in the strings,
149: and
150: \fIanything\fR represents what is conditionally accepted.
151: .h1
152: .bt
153: \fB&if\fI|c|anything\fR - - If condition \fIc\fR true, accept \fIanything\fR as input;
154: in multi-line case use \fI\e{anything\|\e}\fR.
155: .bt
156: \fB&if|!\fIc|anything\fR - - If condition \fIc\fR false, accept \fIanything\fR.
157: .bt
158: \fB&if\fI|N|anything\fR - \fBu\fR If expression \fIN\fR > 0, accept \fIanything\fR.
159: .bt
160: \fB&if|!\fIN|anything\fR - \fBu\fR If expression \fIN\fR \(<= 0, accept \fIanything\fR.
161: .bt
162: \fB&if\fI|\|\'string1\|\'string2\|\'|anything\fR - If \fIstring1\fR identical to \fIstring2\fR,
163: accept \fIanything\fR.
164: .bt
165: \fB&if|!\fI\|\'string1\|\'string2\|\'|anything\fR - If \fIstring1\fR not identical to \fIstring2\fR,
166: accept \fIanything\fR.
167: .bt
168: \fB&ie\fI|c|anything\fR - \fBu\fR If portion of if-else; all above forms (like \fBif\fR).
169: .bt
170: \fB&el\fI|anything\fR - - Else portion of if-else.
171: .pg
172: The built-in condition names are:
173: .TS
174: center box;
175: c2|c2
176: c2|c2
177: c2|l2.
178: Condition
179: Name True If
180: _
181: \fBo\fR Current page number is odd
182: \fBe\fR Current page number is even
183: \fBt\fR Formatter is \*(TR
184: \fBn\fR Formatter is \*(NR
185: .TE
186: If the condition \fIc\fR is \fItrue\fR, or if the number \fIN\fR is greater than zero,
187: or if the strings compare identically (including motions and character size and font),
188: \fIanything\fR is accepted as input.
189: If a \fB!\fR precedes the condition, number, or string comparison,
190: the sense of the acceptance is reversed.
191: .pg
192: Any spaces between the condition and the beginning of \fIanything\fR are skipped over.
193: The \fIanything\fR can be either a single input line (text, macro, or whatever)
194: or a number of input lines.
195: In the multi-line case,
196: the first line must begin with a left delimiter \fB\e{\fR and
197: the last line must end with a right delimiter \fB\e}\fR.
198: .pg
199: The request \fBie\fR (if-else) is identical to \fBif\fR
200: except that the acceptance state is remembered.
201: A subsequent and matching \fBel\fR (else) request then uses the reverse sense of that state.
202: \fBie\fR|-|\fBel\fR pairs may be nested.
203: .pg
204: Some examples are:
205: .x1
206: .ftB
207: .ne 1
208: &if e .tl \'\|Even Page %\'\'\'
209: .ftR
210: .x2
211: which outputs a title if the page number is even; and
212: .x1
213: .ftB
214: .ne 3.1
215: &ie \en%>1 \e{\e
216: \&\'sp 0.5i
217: &tl \'\|Page %\'\'\'
218: \&\'sp ~\|1.2i|\e}
219: &el .sp ~\|2.5i
220: .ftR
221: .x2
222: which treats page 1 differently from other pages.
223: .mh
224: Environment Switching.
225: .pg
226: A number of the parameters that
227: control the text processing are gathered together into an
228: \fIenvironment\fR, which can be switched by the user.
229: The environment parameters are those associated
230: with requests noting E in their \fINotes\fR column;
231: in addition, partially collected lines and words are in the environment.
232: Everything else is global; examples are page-oriented parameters,
233: diversion-oriented parameters, number registers, and macro and string definitions.
234: All environments are initialized with default parameter values.
235: .h1
236: .bt
237: \fB&ev\fI|N\fR \fIN\(eq\fR0 previous - Environment switched to
238: environment 0\(<=\fIN\fR\(<=2.
239: Switching is done in push-down fashion so that
240: restoring a previous environment \fImust\fR be done with \fB.ev\fR
241: rather than specific reference.
242: .mh
243: Insertions from the Standard Input
244: .pg
245: The input can be temporarily switched to the system \fIstandard input\fR
246: with \fBrd\fR,
247: which will switch back when \fItwo\fR newlines
248: in a row are found (the \fIextra\fR blank line is not used).
249: This mechanism is intended for insertions in form-letter-like documentation.
250: On \s-1UNIX\s+1, the \fIstandard input\fR can be the user's keyboard,
251: a \fIpipe\fR, or a \fIfile\fR.
252: .h1
253: .bt
254: \fB&rd\fI|prompt\fR - \fIprompt=\fR\s-1BEL\s+1 \
255: Read insertion from the standard input until two newlines in a row are found.
256: If the standard input is the user's keyboard, \fIprompt\fR (or a \s-1BEL\s+1)
257: is written onto the user's terminal.
258: \fBrd\fR behaves like a macro,
259: and arguments may be placed after \fIprompt\fR.
260: .bt
261: \fB&ex\fR - - - Exit from \*(NR\(sl\*(TR.
262: Text processing is terminated exactly as if all input had ended.
263: .pg
264: If insertions are to be
265: taken from the terminal keyboard \fIwhile\fR output is being printed
266: on the terminal, the command line option \fB\-q\fR will turn off the echoing
267: of keyboard input and prompt only with \s-1BEL\s+1.
268: The regular input and insertion input \fIcannot\fR
269: simultaneously come from the standard input.
270: .pg
271: As an example,
272: multiple copies of a form letter may be prepared by entering the insertions
273: for all the copies in one file to be used as the standard input,
274: and causing the file containing the letter to reinvoke itself using \fBnx\fR (\(sc19);
275: the process would ultimately be ended by an \fBex\fR in the insertion file.
276: .mh
277: Input\(slOutput File Switching
278: .pg
279: The (read-only) number register \fB.c\fR contains the input line number in
280: the current input file. The number register \fBc.\fR is a general register
281: serving the same purpose.
282: .h1
283: .bt
284: \fB&so\fI|filename\fR - - Switch source file.
285: The top input (file reading) level is switched to \fIfilename\fR.
286: The effect of an \fBso\fR encountered in a macro
287: occurs immediately.
288: When the new file ends,
289: input is again taken from the original file.
290: \fBso\fR's may be nested.
291: .bt
292: \fB&nx\fI|filename\fR end-of-file - Next file is \fIfilename\fR.
293: The current file is considered ended, and the input is immediately switched
294: to \fIfilename\fR.
295: .bt
296: \fB&pi\fI|program\fR - - Pipe output to \fIprogram\fR (\*(NR only).
297: This request must occur \fIbefore\fR any printing occurs.
298: No arguments are transmitted to \fIprogram\fR.
299: .mh
300: Miscellaneous
301: .pg
302: .h1
303: .bt
304: .mc \s12\(br\s0
305: \fB&mc\fI|c|N\fR - off E,\fBm\fR \
306: Specifies that a \fImargin\fR character \fIc\fR appear a distance
307: \fIN\fR to the right of the right margin
308: after each non-empty text line (except those produced by \fBtl\fR).
309: If the output line is too-long (as can happen in nofill mode)
310: the character will be appended to the line.
311: If \fIN\fR is not given, the previous \fIN\fR is used; the initial \fIN\fR is
312: 0.2|inches in \*(NR and 1\|em in \*(TR.
313: The margin character used with this paragraph was a 12-point box-rule.
314: .br
315: .mc
316: .bt
317: \fB&tm\fI|string\fR - newline - \
318: After skipping initial blanks, \fIstring\fR (rest of the line) is read in \fIcopy mode\fR
319: and written on the user's terminal. (see \(sc21).
320: .bt
321: \fB&ig\fI|yy\fR - \fI.yy=\fB..\fR - Ignore \
322: input lines.
323: \fBig\fR behaves exactly like \fBde\fR (\(sc7) except that the
324: input is discarded.
325: The input is read in \fIcopy mode\fR, and any auto-incremented
326: registers will be affected.
327: .bt
328: \fB&pm\fI|t\fR - all - \
329: Print macros.
330: The names and sizes of all of the defined macros and strings are printed
331: on the user's terminal;
332: if \fIt\fR is given, only the total of the sizes is printed.
333: The sizes is given in \fIblocks\fR
334: of 128 characters.
335: .bt
336: \fB&ab\fI|string\fR - - - \
337: Print \fIstring\fR on standard error and terminate immediately. The
338: default \fIstring\fR is "User Abort". Does not cause a break. Only output
339: preceding the last break is written.
340: .bt
341: .lg0
342: \fB&fl\fR - - B \c
343: .lg
344: Flush output buffer.
345: Used in interactive debugging to force output.
346: .mh
347: Output and Error Messages.
348: .pg
349: The output from \fBtm\fR, \fBpm\fR, \fBab\fR and the prompt from \fBrd\fR,
350: as well as various \fIerror\fR messages are written onto
351: \s-1UNIX\s+1's \fIstandard error\fR output.
352: The latter is different from the \fIstandard output\fR,
353: where \*(NR formatted output goes.
354: By default, both are written onto the user's terminal,
355: but they can be independently redirected.
356: .pg
357: Various \fIerror\fR conditions may occur during
358: the operation of \*(NR and \*(TR.
359: Certain less serious errors having only local impact do not
360: cause processing to terminate.
361: Two examples are \fIword overflow\fR, caused by a word that is too large
362: to fit into the word buffer (in fill mode), and
363: \fIline overflow\fR, caused by an output line that grew too large
364: to fit in the line buffer;
365: in both cases, a message is printed, the offending excess
366: is discarded,
367: and the affected word or line is marked at the point of truncation
368: with a \(** in \*(NR and a \(lh in \*(TR.
369: The philosophy is to continue processing, if possible,
370: on the grounds that output useful for debugging may be produced.
371: If a serious error occurs, processing terminates,
372: and an appropriate message is printed.
373: Examples are the inability to create, read, or write files,
374: and the exceeding of certain internal limits that
375: make future output unlikely to be useful.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.