Annotation of 43BSDReno/share/doc/usd/24.troff/m4, revision 1.1.1.1

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&lt\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.

unix.superglobalmegacorp.com

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