Annotation of 43BSDReno/share/man/man7/mdoc.samples.7, revision 1.1.1.1

1.1       root        1: .\" Copyright (c) 1990 The Regents of the University of California.
                      2: .\" All rights reserved.
                      3: .\"
                      4: .\" Redistribution and use in source and binary forms are permitted provided
                      5: .\" that: (1) source distributions retain this entire copyright notice and
                      6: .\" comment, and (2) distributions including binaries display the following
                      7: .\" acknowledgement:  ``This product includes software developed by the
                      8: .\" University of California, Berkeley and its contributors'' in the
                      9: .\" documentation or other materials provided with the distribution and in
                     10: .\" all advertising materials mentioning features or use of this software.
                     11: .\" Neither the name of the University nor the names of its contributors may
                     12: .\" be used to endorse or promote products derived from this software without
                     13: .\" specific prior written permission.
                     14: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
                     15: .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
                     16: .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
                     17: .\"
                     18: .\"     @(#)mdoc.samples.7     5.2 (Berkeley) 6/22/90
                     19: .\"
                     20: .\"    This sampler invokes every macro in the package several
                     21: .\"    times and is garanteed to give a worst case performance
                     22: .\"    for an already slow package.
                     23: .Dd June 22, 1990
                     24: .Os BSD 4.4
                     25: .Dt MDOC.SAMPLES 7
                     26: .Sh NAME
                     27: .Nm mdoc.sample
                     28: .Nd detailed samples utilizing
                     29: the
                     30: .Nm -mdoc
                     31: macro package
                     32: .Sh SYNOPSIS
                     33: .Nm man mdoc.sample
                     34: .Sh DESCRIPTION
                     35: A fairly complete sampler of how the
                     36: .Nm \-mdoc
                     37: macro package is used.
                     38: .Sh TROFF IDIOSYNCRASIES
                     39: Although this is a content based formatting package, and
                     40: theoretically one should not have to learn
                     41: .Xr troff 1
                     42: to use it, there are a few
                     43: limitations which are unavoidable and best gotten out
                     44: of the way. And, too, be forewarned, this package is slow.
                     45: Its purpose is to allow translation of man pages from
                     46: .Xr troff 1
                     47: to
                     48: .Xr TeX Coming\ Soon
                     49: and vice versa.
                     50: .Ss Macro Usage
                     51: As in
                     52: .Xr troff 1 ,
                     53: a macro (request) is called by placing a
                     54: .Li \&\.
                     55: (dot character)
                     56: at the beginning of
                     57: a line followed by the two character name for the macro.
                     58: Arguments may follow the request separated by spaces.
                     59: It is the dot character at the beginning of the line which causes
                     60: .Xr troff 1
                     61: to interpret the next two characters as a request.
                     62: To place a
                     63: .Li \&\.
                     64: (dot character)
                     65: at the beginning of a line in some context other than
                     66: a macro request, precede the
                     67: .Li \&\.
                     68: (dot) with a
                     69: .Li \e&.
                     70: In this macro package, some macros may be given the
                     71: name of another macro as an argument. In this case
                     72: the argument, although the name of a macro,
                     73: is not preceded by a
                     74: .Li \&\.
                     75: (dot),
                     76: and will be executed
                     77: with the remaining arguments.
                     78: It is in this manner that some requests are nested, such
                     79: as the
                     80: .Li \&.Op
                     81: request may
                     82: .Em call
                     83: the flag request
                     84: .Li \&.Fl .
                     85: .Dp Op Fl ls
                     86: is produced by
                     87: .Li \&.Op Fl ls
                     88: .Dp
                     89: The only requests which check to see if the first argument
                     90: is executable are:
                     91: .Ds I
                     92: .Cw \&.Cx\ Complex\ Expressions
                     93: .Cl \&.Cl\ Column Line Entry   \&.Dp Display Examples (tagged paragraph)
                     94: .Cl \&.Cx\ Complex\ Expressions        \&.Op\ Option Request
                     95: .Cl \&.Dl\ Display (one) Line  \&.Sq Single Quotes
                     96: .Cl \&.Dq\ Double Quotes       \&.Tp Tagged Paragraphs
                     97: .Cw
                     98: .De
                     99: .Pp
                    100: The eligible first arguments are:
                    101: .Ds I
                    102: .Cw \&.Cx\ Complex\ Expressions
                    103: .Cl \&.Ad Addresses    \&.Fn Functions
                    104: .Cl \&.Ar Arguments    \&.Ic Interactive Commands
                    105: .Cl \&.Cl Column Entries       \&.Li Literals
                    106: .Cl \&.Cm Command Modifiers    \&.Nm Names, subjects
                    107: .Cl \&.Cw Column Widths        \&.Op Options
                    108: .Cl \&.Cx Complex Expressions  \&.Pa Pathnames
                    109: .Cl \&.Em Emphasis     \&.Sy Symbolic
                    110: .Cl \&.Er Errno's      \&.Tp Tagged Paragraphs
                    111: .Cl \&.Ev Environment  \&.Va Variables
                    112: .Cl \&.Fl Flags        \&.Xr Cross References
                    113: .Cw
                    114: .De
                    115: .Pp
                    116: Requests which cannot be called, or call any other macro:
                    117: .Ds I
                    118: .Cw \&.Cx\ Complex\ Expressions
                    119: .Cl \&.Di Display Indent       \&.Dw Display Tag Width
                    120: .Cl \&.De Display End  \&.Pp Paragraph Start
                    121: .Cl \&.Df Display Filled       \&.Tw Tagged Paragraph Tag Width
                    122: .Cl \&.Df Display unfilled
                    123: .Cw
                    124: .De
                    125: .Pp
                    126: The macro
                    127: .Li .Op
                    128: is unusual that it can call more than one request on the same
                    129: line.
                    130: .Ss Passing Space Characters in an Argument
                    131: To pass an argument
                    132: to a macro request which contains spaces, the space must be preceded
                    133: by a
                    134: .Li \e
                    135: to escape special interpretation:
                    136: .Dw int\ *fetch()
                    137: .Dp Fn int\ *fetch
                    138: is created by
                    139: .Li \&.Fn int\e *fetch
                    140: .Dp
                    141: For critical spaces at the end of a line, as might be needed
                    142: with the request
                    143: .Li \&.Cx ,
                    144: following the space with
                    145: .Li \e&
                    146: is a good guarantee the space will not be stripped (e.g.
                    147: .Li \e \e&) .
                    148: A blank space at the end of a line is otherwise an open invitation
                    149: to party for
                    150: .Xr troff 1 .
                    151: .Ss Escaping Special Characters
                    152: Special characters
                    153: like the newline character
                    154: .Li \en ,
                    155: are handled by replacing the
                    156: .Li \e
                    157: with
                    158: .Li \ee
                    159: (e.g.
                    160: .Li \een )
                    161: to preserve
                    162: the backslash.
                    163: .Sh HEADER REQUESTS
                    164: Three header macros designate the document title or manual page title,
                    165: the operating system,
                    166: and the date of authorship (if not derived from
                    167: .Xr sccs 1
                    168: or
                    169: .Xr rcs 1 ) .
                    170: These macros are one called once at the very beginning of the document
                    171: and are used to construct the headers and footers only.
                    172: .Tp Li \&.Dt DOCUMENT_TITLE section# [volume]
                    173: The document title is the
                    174: subject of the man page and must be in CAPITALS due to troff
                    175: limitations.
                    176: The section number may be 1,...,8,
                    177: and if it is specified,
                    178: the volume title may be omitted.
                    179: A volume title may be arbitrary or one of the following:
                    180: .\" .Cl
                    181: .\" USD        UNIX User's Supplementary Documents
                    182: .\" .Cl
                    183: .\" PS1        UNIX Programmers's Supplementary Documents
                    184: .Cw SMM
                    185: .Cl AMD        UNIX Ancestral Manual Documents
                    186: .Cl SMM        UNIX System Manager's Manual
                    187: .Cl URM        UNIX Reference Manual
                    188: .Cl PRM        UNIX Programmers's Manual
                    189: .Cw
                    190: .\" .Cl
                    191: .\" MMI        UNIX Manual Master Index
                    192: .\" .Cl
                    193: .\" CON        UNIX Contributed Software Manual
                    194: .\" .Cl
                    195: .\" LOC        UNIX Local Manual
                    196: .Tp Li \&.Os operating_system release#
                    197: The name of the operating system
                    198: should be the common acronym, e.g. BSD
                    199: or ATT.  The release should be the standard release
                    200: nomenclature for the system specified, e.g. 4.3, 4.3+tahoe, V.3,
                    201: V.4. Unrecognized arguments are displayed as given in the page footer.
                    202: For instance, for the footer on this page, the 4.4 Berkeley Distribution
                    203: was produced by:
                    204: .Pp
                    205: .Dl Li \&.Os BSD 4.4
                    206: .Tp Li \&.Dd month day, year
                    207: The date should be written formally:
                    208: .Pp
                    209: .Dl January 25, 1989
                    210: .\" June 22, 1990 is not a standard SCCS id-key. ??
                    211: .Tp
                    212: .Sh TEXT MACROS
                    213: The following macro requests have similar
                    214: syntax; the exceptions being the behaviour of the
                    215: request if called without an argument, and the
                    216: behaviour of the requests
                    217: .Li \&.Fn ,
                    218: .Li \&.Pa ,
                    219: and
                    220: .Li \&.Xr ,
                    221: which expect a specific format.
                    222: The other requests can handle up to 9 arguments
                    223: and will format punctuation properly as
                    224: long as the punctuation is placed in the last
                    225: arguments.  Punctuation placed in the middle
                    226: of a string of text arguments will result
                    227: in a out of place space character.
                    228: .Pp
                    229: Any argument which may be tested for punctuation
                    230: and contains a member of the mathematical, logical or
                    231: quotation
                    232: set
                    233: {+,\-,/,*,%,<,>,<=,>=,=,==,&,`,',"}
                    234: should have
                    235: the character escaped.
                    236: .Pp
                    237: .Ss Address Request
                    238: The address request constructs and address
                    239: of the form addr1[,addr2[,addr3]].
                    240: .Pp
                    241: .Dl \&.Ad Usage: .Ad address ... \*(Pu
                    242: .Dw \&.Ad\ f1\ ,\ f2\ ,\ f3\ :
                    243: .Dp Li \&.Ad addr1
                    244: .Ad addr1
                    245: .Dp Li \&.Ad addr1\ .
                    246: .Ad addr1 .
                    247: .Dp Li \&.Ad addr1\ , file2
                    248: .Ad addr1 , file2
                    249: .Dp Li \&.Ad f1\ , f2\ , f3\ :
                    250: .Ad f1 , f2 , f3 :
                    251: .Dp Li \&.Ad addr\ )\ )\ ,
                    252: .Ad addr ) ) ,
                    253: .Dp
                    254: It is an error to call
                    255: .Li \&.Ad
                    256: without arguments.
                    257: The request may be called by
                    258: .Li \&.Cl ,
                    259: .Li \&.Cx ,
                    260: .Li \&.Dl ,
                    261: .Li \&.Dp ,
                    262: .Li \&.Op
                    263: or
                    264: .Li \&.Tp .
                    265: .Ss Argument Request
                    266: The
                    267: .Li \&.Ar
                    268: argument request may be used whenever
                    269: a command line argument is referenced.
                    270: .Pp
                    271: .Dl Usage: .Ar argument ... \*(Pu
                    272: .Dw Tx
                    273: .Dp Li \&.Ar
                    274: .Ar
                    275: .Dp Li \&.Ar file1
                    276: .Ar file1
                    277: .Dp Li \&.Ar file1\ .
                    278: .Ar file1 .
                    279: .Dp Li \&.Ar file1 file2
                    280: .Ar file1 file2
                    281: .Dp Li \&.Ar f1 f2 f3\ :
                    282: .Ar f1 f2 f3 :
                    283: .Dp Li \&.Ar file\ )\ )\ ,
                    284: .Ar file ) ) ,
                    285: .Dp
                    286: .Pp
                    287: If
                    288: .Li \&.Ar
                    289: is called with no arguments
                    290: .Ar
                    291: is assumed. The
                    292: .Li \&.Ar
                    293: request cannot call other macros, but may
                    294: be called by
                    295: .Li \&.Cl ,
                    296: .Li \&.Cx ,
                    297: .Li \&.Dl ,
                    298: .Li \&.Dp ,
                    299: .Li \&.Op
                    300: or
                    301: .Li \&.Tp .
                    302: See the
                    303: .Li \&.Op
                    304: request for an example of using
                    305: .Li \&.Ar
                    306: in combination with the
                    307: .Li \&.Fl
                    308: request.
                    309: .Ss Double Quote Request
                    310: The
                    311: .Li \&.Dq
                    312: double quote request may be used to surround
                    313: a string with double quotes. Punctuation is
                    314: placed after the edn quote.  To place punctuation
                    315: in inside the quotes it must be escaped with
                    316: .Li \&\e& .
                    317: .Pp
                    318: .Dl Usage: .Dq string ... \*(Pu
                    319: .Dw \&.Dq\ fools\ and\ follies
                    320: .Dp Li \&.Dq
                    321: .Dq
                    322: .Dp Li \&.Dq string
                    323: .Dq string
                    324: .Dp Li \&.Dq string\ .
                    325: .Dq string .
                    326: .Dp Li \&.Dq fools and follies
                    327: .Dq fools and follies
                    328: .Dp Li \&.Dq Ar pattern\ )\ )\ ,
                    329: .Dq Ar pattern ) ) ,
                    330: .Dp
                    331: .Pp
                    332: If
                    333: .Li \&.Dq
                    334: is called with no arguments
                    335: .Dq
                    336: is assumed. The
                    337: .Li \&.Dq
                    338: request may call or be called by
                    339: .Li \&.Cl ,
                    340: .Li \&.Cx ,
                    341: .Li \&.Dl ,
                    342: .Li \&.Dp ,
                    343: .Li \&.Op
                    344: .Li \&.Sq ,
                    345: or
                    346: .Li \&.Tp .
                    347: .Pp
                    348: The
                    349: .Li \&.Sq
                    350: provides single quotes
                    351: in the same manner as
                    352: .Li \&.Dq .
                    353: Neither request can nest with in itself, but
                    354: .Li \&.Dq
                    355: and
                    356: .Li \&.Sq
                    357: can be nested with in each other.
                    358: .Ss Emphasis Request
                    359: A portion of text may be stressed or emphasized with the .Em
                    360: request.  The font used is commonly italic.
                    361: .Pp
                    362: .Dl Usage: .Em argument ... \*(Pu
                    363: .Dw \&.Em\ vide\ infra\ )\ )\ ,
                    364: .Dp Li \&.Em does not
                    365: .Em does not
                    366: .Dp Li \&.Em exceed 1024\ .
                    367: .Em exceed 1024 .
                    368: .Dp Li \&.Em vide infra\ )\ )\ ,
                    369: .Em vide infra ) ) ,
                    370: .Dp
                    371: .Pp
                    372: It is an error to call
                    373: .Li \&.Em
                    374: without arguments.
                    375: The request cannot call other macros, but
                    376: may be invoked by
                    377: .Li \&.Cl ,
                    378: .Li \&.Cx ,
                    379: .Li \&.Dl ,
                    380: .Li \&.Dp ,
                    381: .Li \&.Op
                    382: or
                    383: .Li \&.Tp .
                    384: .Ss Errno's (Section's two and three only)
                    385: The
                    386: .Li \&.Er
                    387: errno request specifies the error return value
                    388: for section two and three library routines. The second example
                    389: below shows
                    390: .Li \&.Er
                    391: used with the
                    392: .Li \&.Op
                    393: request, as it would be used in the error
                    394: section of a section two manual page.
                    395: .Pp
                    396: .Dl Usage: .Er ERRNOTYPE ... \*(Pu
                    397: .Dw Tx
                    398: .Dp Li \&.Er ENOENT
                    399: .Er ENOENT
                    400: .Dp Li \&.Op \&Er ENOTDIR
                    401: .Op Er ENOTDIR
                    402: .Dp
                    403: .Pp
                    404: It is an error to call
                    405: .Li \&.Er
                    406: without arguments.
                    407: The request cannot call other macros, but
                    408: may be invoked by
                    409: .Li \&.Cl ,
                    410: .Li \&.Cx ,
                    411: .Li \&.Dl ,
                    412: .Li \&.Dp ,
                    413: .Li \&.Op
                    414: or
                    415: .Li \&.Tp .
                    416: .Ss Environment Variables
                    417: The
                    418: .Li \&.Ev
                    419: request specifies a environment variable.
                    420: .Pp
                    421: .Dl Usage: .Ev argument ... \*(Pu
                    422: .Dw \&.Ev\ PRINTER\ )\ )\ ,
                    423: .Dp Li \&.Ev DISPLAY
                    424: .Ev  DISPLAY
                    425: .Dp Li \&.Ev PATH\ .
                    426: .Ev PATH .
                    427: .Dp Li \&.Ev PRINTER\ )\ )\ ,
                    428: .Ev PRINTER ) ) ,
                    429: .Dp
                    430: .Pp
                    431: It is an error to call
                    432: .Li \&.Ev
                    433: without arguments.
                    434: The request cannot call other macros, but
                    435: may be invoked by
                    436: .Li \&.Cl ,
                    437: .Li \&.Cx ,
                    438: .Li \&.Dl ,
                    439: .Li \&.Dp ,
                    440: .Li \&.Op
                    441: or
                    442: .Li \&.Tp .
                    443: .Ss Flags
                    444: The
                    445: .Li \&.Fl
                    446: request handles command line flags. It prepends
                    447: a dash,
                    448: .Li \- ,
                    449: to the flag. For interactive command flags, which
                    450: are not prepended with a dash, the
                    451: .Li \&.Cm
                    452: request is identical, but with out the dash.
                    453: The
                    454: .Li \&.Cm
                    455: stands for command modifier.
                    456: .Pp
                    457: .Dl Usage: .Fl argument ... \*(Pu
                    458: .Dw Tx
                    459: .Dp Li \&.Fl
                    460: .Fl
                    461: .Dp Li \&.Fl cfv
                    462: .Fl cfv
                    463: .Dp Li \&.Fl cfv\ .
                    464: .Fl cfv .
                    465: .Dp Li \&.Fl s v t
                    466: .Fl s v t
                    467: .Dp Li \&.Fl -\ ,
                    468: .Fl - ,
                    469: .Dp Li \&.Fl xyz\ )\ ,
                    470: .Fl xyz ) ,
                    471: .Dp
                    472: .Pp
                    473: The
                    474: .Li \&.Fl
                    475: request without any arguments results
                    476: in a dash sign representing stdin/stdout.
                    477: Note that giving
                    478: .Li \&.Fl
                    479: a single dash, will result in two dashes.
                    480: The request cannot call other macros, but
                    481: may be invoked by
                    482: .Li \&.Cl ,
                    483: .Li \&.Cx ,
                    484: .Li \&.Dl ,
                    485: .Li \&.Dp ,
                    486: .Li \&.Op
                    487: or
                    488: .Li \&.Tp .
                    489: .Pp
                    490: .Ss Functions (library routines)
                    491: The .Fn request is modeled on ANSI C conventions. It
                    492: may fail on old style parameter lists.
                    493: .Pp
                    494: Usage: .Fn [type\e\ ] function [[type\e\ ] params ... \*(Pu
                    495: .Dw \&.Fn\ void\e\ push\ int\e\ p\ int\e\ *ptr,
                    496: .Di L
                    497: .Dp Li \&.Fn getchar
                    498: .Fn getchar
                    499: .Dp Li \&.Fn strlen\ )\ ,
                    500: .Fn strlen ) ,
                    501: .Dp Li \&.Fn strcpy char\e\ *dst char\e\ *src
                    502: .Fn strcpy char\ *dst char\ *src
                    503: .Dp Li \&.Fn int\e\ align int\e\ word
                    504: .Fn int\ align int\ word
                    505: .Dp Li \&.Fn void\e\ push int\e\ p int\e\ *ptr\ ,
                    506: .Fn void\ push int\ p int\ *ptr ,
                    507: .Dp
                    508: .Pp
                    509: It is an error to call
                    510: .Li \&.Fn
                    511: without any arguments.
                    512: At the moment,
                    513: .Li \&.Fn
                    514: does not check its word boundaries
                    515: against troff line lengths.  It may split across a
                    516: line ungracefully. This will be fixed in the near future.
                    517: In the examples above, arguments with more than one word
                    518: escape the blank spaces with a
                    519: .Li \e .
                    520: The
                    521: .Li \&.Fn
                    522: request cannot execute any macro
                    523: names given as the first argument.
                    524: It may be called by the
                    525: .Li \&.Cl ,
                    526: .Li \&.Cx ,
                    527: .Li \&.Dl ,
                    528: .Li \&.Dp ,
                    529: .Li \&.Op
                    530: or
                    531: .Li \&.Tp .
                    532: .Ss Literals
                    533: The
                    534: .Li \&.Li
                    535: literal request may be used for special characters,
                    536: variable constants, anything which should be displayed as it
                    537: would be typed.
                    538: .Pp
                    539: .Dl Usage: .Li argument ... \*(Pu
                    540: .Dw Tx
                    541: .Dp Li \&.Li \een
                    542: .Li \en
                    543: .Dp Li \&.Li M1 M2 M3\ ;
                    544: .Li M1 M2 M3 ;
                    545: .Dp Li \&.Li cntrl-D\ )\ ,
                    546: .Li cntrl-D ) ,
                    547: .Dp Li \&.Li 1024\ ...
                    548: .Li 1024 ...
                    549: .Dp
                    550: .Pp
                    551: It is an error to call
                    552: .Li \&.Li
                    553: without arguments.
                    554: The request cannot call other macros, but
                    555: may be invoked by
                    556: .Li \&.Cl ,
                    557: .Li \&.Cx ,
                    558: .Li \&.Dl ,
                    559: .Li \&.Dp ,
                    560: .Li \&.Op
                    561: or
                    562: .Li \&.Tp .
                    563: .Ss Name Request
                    564: The
                    565: .Li \&.Nm
                    566: request is used for the document title or subject name.
                    567: It has the peculiarity of remembering  the first
                    568: argument it was called with, which should
                    569: always be the subject name of the page.  When called without
                    570: arguments,
                    571: .Li \&.Nm
                    572: regurgitates this initial name for the sole purpose
                    573: of making less work for the author.
                    574: Beyond the NAME section of the man page, a section two
                    575: or three document function name is addressed with the
                    576: .Li \&Fn
                    577: request, while
                    578: .Li \&.Nm
                    579: can continue to be used for any other sections.
                    580: For interactive commands, such as the
                    581: .Li while
                    582: command keyword in
                    583: .Xr csh 1 ,
                    584: the
                    585: .Li \&.Ic
                    586: request should be used.
                    587: While the
                    588: .Li \&.Ic
                    589: is nearly identical
                    590: to
                    591: .Li \&.Nm ,
                    592: it can not recall the first argument it was invoked with.
                    593: .Pp
                    594: .Dl Usage: .Nm argument ... \*(Pu
                    595: .Dw Tx
                    596: .Dp Li \&.Nm mdoc.sample
                    597: .Nm  mdoc.sample
                    598: .Dp Li \&.Nm \-mdoc
                    599: .Nm \-mdoc .
                    600: .Dp Li \&.Nm foo\ )\ )\ ,
                    601: .Nm foo ) ) ,
                    602: .Dp Li \&.Nm
                    603: .Nm
                    604: .Dp
                    605: .Pp
                    606: The
                    607: .Li \&.Nm
                    608: request cannot call other macros, but
                    609: may be called by
                    610: .Li \&.Cl ,
                    611: .Li \&.Cx ,
                    612: .Li \&.Dl ,
                    613: .Li \&.Dp ,
                    614: .Li \&.Op
                    615: or
                    616: .Li \&.Tp .
                    617: .Ss Pathnames
                    618: The
                    619: .Li \&.Pa
                    620: request formats path or file names.  It has two
                    621: different behaviours. In any section of the man page
                    622: .Em except
                    623: the section FILES, it
                    624: expects at most one path or file name, and any amount
                    625: of punctuation. In the section FILES,
                    626: it is often desirable to have a column of pathnames
                    627: and a column of pathname descriptions.
                    628: .Pp
                    629: .Dl Usage: .Pa pathname \*(Pu
                    630: .Dw \&.Pa\ /tmp/fooXXXXX\ )\ .
                    631: .Dp Li \&.Pa /usr/share
                    632: .Pa /usr/share
                    633: .Dp Li \&.Pa /tmp/fooXXXXX\ )\ .
                    634: .Pa /tmp/fooXXXXX ) .
                    635: .Dp
                    636: .Pp
                    637: From within section FILES, use the
                    638: .Li \&.Dw
                    639: and
                    640: .Li \&.Dp
                    641: requests to format the pathnames
                    642: and their descriptions.
                    643: .Li \&.Pa
                    644: request cannot call other macros, but
                    645: may be called by
                    646: .Li \&.Cl ,
                    647: .Li \&.Cx ,
                    648: .Li \&.Dl ,
                    649: .Li \&.Dp ,
                    650: .Li \&.Op
                    651: or
                    652: .Li \&.Tp .
                    653: .Ss Single Quotes
                    654: See the request
                    655: .Li \&.Dq
                    656: above.  The single quoting request
                    657: .Li \&.Sq
                    658: works in the same manner as
                    659: .Li \&.Dq.
                    660: .Ss Symbolic
                    661: The symbolic request is really a boldface request.
                    662: The need for this macro has not been established,
                    663: it is included 'just in case'.
                    664: .Pp
                    665: .Dl Usage: .Sy symbol ... \*(Pu
                    666: .Dw \&.Sy\ something\ bold
                    667: .Dp Li \&.Sy something bold
                    668: .Sy something bold
                    669: .Dp
                    670: .Pp
                    671: The
                    672: .Li \&.Sy
                    673: request cannot call other macros, but can be called
                    674: by
                    675: .Li \&.Cl ,
                    676: .Li \&.Cx ,
                    677: .Li \&.Dl ,
                    678: .Li \&.Dp ,
                    679: .Li \&.Op
                    680: or
                    681: .Li \&.Tp .
                    682: .Ss Variables
                    683: Generic variable reference:
                    684: .Pp
                    685: .Dl Usage: .Va variable ... \*(Pu
                    686: .Dw \&.Va char\ s\ ]\ )\ )\ ,
                    687: .Dp Li \&.Va count
                    688: .Va count
                    689: .Dp Li \&.Va settimer ,
                    690: .Va settimer ,
                    691: .Dp Li \&.Va int\ *prt\ )\ :
                    692: .Va int\ *prt ) :
                    693: .Dp Li \&.Va char\ s\ ]\ )\ )\ ,
                    694: .Va char\ s ] ) ) ,
                    695: .Dp
                    696: .Pp
                    697: .Ss Cross References
                    698: The
                    699: .Li \&.Xr
                    700: request expects the first argument to be
                    701: a manual page name, and the second argument, if it exists,
                    702: to be either a section page number or punctuation.  Any
                    703: remaining arguments are assumed to be punctuation.
                    704: .Pp
                    705: .Dl Usage: .Xr manpage [1,...,8] \*(Pu
                    706: .Dw Tx
                    707: .Dp Li \&.Xr mdoc
                    708: .Xr mdoc
                    709: .Dp Li \&.Xr mdoc\ ,
                    710: .Xr mdoc ,
                    711: .Dp Li \&.Xr mdoc 7
                    712: .Xr mdoc 7
                    713: .Dp Li \&.Xr mdoc 7\ )\ )\ ,
                    714: .Xr mdoc 7 ) ) ,
                    715: .Dp
                    716: .Pp
                    717: The
                    718: .Li \&.Xr
                    719: request cannot call other macros, but may be called
                    720: by
                    721: .Li \&.Cl ,
                    722: .Li \&.Cx ,
                    723: .Li \&.Dl ,
                    724: .Li \&.Dp ,
                    725: .Li \&.Op
                    726: or
                    727: .Li \&.Tp .
                    728: It is an error to call
                    729: .Li \&.Xr
                    730: without
                    731: any arguments.
                    732: .Pp
                    733: .\" ---
                    734: .Sh PAGE LAYOUT MACROS
                    735: .Ss Section Headers
                    736: Several
                    737: .Li \&.Sh
                    738: section header requests are required in every
                    739: man page. The
                    740: .Li \&.Sh
                    741: request can take up to nine arguments.
                    742: .Tp \&.Sh NAME
                    743: The
                    744: .Li \&.Sh NAME
                    745: request is mandatory. If not specified,
                    746: the headers, footers and page layout defaults
                    747: will not be set and things will be rather unpleasant.
                    748: The NAME section consists of at least three items.
                    749: The first is the
                    750: .Li \&.Nm
                    751: name request naming the subject of the man page.
                    752: The second is the Name Description request,
                    753: .Li \&.Nd ,
                    754: which separates the subject
                    755: name from the third item, which is the description. The
                    756: description should be the most terse and lucid possible,
                    757: as the space available is small.
                    758: .Tp \&.Sh SYNOPSIS
                    759: The SYNOPSIS section describes the typical usage of the
                    760: subject of a man page. The  requests required
                    761: are either
                    762: .Li \&.Nm
                    763: or
                    764: .Li \&.Fn .
                    765: The function name
                    766: request
                    767: .Li \&.Fn
                    768: is required
                    769: for manual page sections 2 and 3, the command and general
                    770: name request
                    771: .Li \&.Nm
                    772: is required for the remaining sections 1, 4, 5, 6, 7, 8.
                    773: Several other requests may be necessary to produce
                    774: the synopsis line as shown below:
                    775: .Pp
                    776: .Nm cat
                    777: .Op Fl benstuv
                    778: .Op Fl
                    779: .Ar
                    780: .Pp
                    781: The following requests were used:
                    782: .Pp
                    783: .Dl \&.Nm cat
                    784: .Dl \&.Op Fl benstuv
                    785: .Dl \&.Op Fl
                    786: .Dl \&.Ar
                    787: .Pp
                    788: Note, the
                    789: .Li \&.Op
                    790: request has accepted as its first
                    791: argument the name of another macro
                    792: .Em \&Fl .
                    793: Upon discovering the first argument is callable,
                    794: .Li \&.Op
                    795: calls it with the remaining arguments
                    796: and returns the formatted text in option brackets.
                    797: .Tp \&.Sh DESCRIPTION
                    798: In most cases the first text in the DESCRIPTION section
                    799: is a brief paragraph on the command, function or file,
                    800: followed by a lexical list of options and respective
                    801: explanations. To create such a list, the
                    802: .Li \&.Tp
                    803: request is used in conjunction with text macros, such
                    804: as the
                    805: .Li \&.Fl
                    806: macro (see
                    807: the EXAMPLES section below).
                    808: .Tp
                    809: .Pp
                    810: Other user specified
                    811: .Li \&.Sh
                    812: sections may be added,
                    813: for instance, in this manual page
                    814: .Pp
                    815: .Dl Li \&.Sh PAGE LAYOUT MACROS
                    816: .Pp
                    817: was used for this section.
                    818: .Pp
                    819: The following
                    820: .Li \&.Sh
                    821: section headers are part of the
                    822: preferred manual page layout and must be used appropriately
                    823: to maintain consistency. They are listed in the order
                    824: in which they would be used.
                    825: .Tp \&.Sh ENVIRONMENT
                    826: The ENVIRONMENT section should reveal any related
                    827: environment
                    828: variables and clues to their behaviour and/or usage.
                    829: .Tp \&.Sh EXAMPLES
                    830: There are several ways to create examples. See
                    831: the EXAMPLES section below
                    832: for details.
                    833: .Tp \&.Sh FILES
                    834: Files which are used or created by the man page subject
                    835: should be listed via the
                    836: .Li \&.Pa
                    837: request in the FILES section.
                    838: .Tp \&.Sh SEE ALSO
                    839: References to other material on the man page topic and
                    840: cross references to other relevant man pages should
                    841: be placed in the SEE ALSO section.  Cross references
                    842: are specified using the
                    843: .Li \&.Xr
                    844: request.  At this time
                    845: .Xr refer 1
                    846: style references are not accommodated.
                    847: .Tp \&.Sh STANDARDS
                    848: If the command, library function or file adheres to a
                    849: specific implementation such as POSIX 1003.1 or
                    850: ANSI C X3.159-1989 this should be noted here.  If the
                    851: command does not adhere to any standard, its history
                    852: should be noted in the HISTORY section.
                    853: .Tp \&.Sh HISTORY
                    854: Any command which does not adhere to any specific standards
                    855: should be outlined historically in this section.
                    856: .Tp \&.Sh AUTHORS
                    857: Credits, if need be, should be placed here.
                    858: .Tp \&.Sh DIAGNOSTICS
                    859: Diagnostics from a command should be placed in this section.
                    860: .Tp \&.Sh ERRORS
                    861: Specific error handling, especially from library functions
                    862: (man page sections 2 and 3) should go here.  The
                    863: .Li \&.Er
                    864: request is used to specify an errno.
                    865: .Tp \&.Sh BUGS
                    866: Blatant problems with the topic go here...
                    867: .Tp
                    868: .Pp
                    869: .Ss Paragraphs and Line Spacing.
                    870: .Tp \&.Pp
                    871: The \&.Pp paragraph command may
                    872: be used to specify a line space where necessary.
                    873: The request is not necessary after a
                    874: .Li \&.Sh
                    875: or
                    876: .Li \&.Ss
                    877: request or before
                    878: a
                    879: .Li \&.Tp
                    880: or
                    881: .Li \&.Dp
                    882: request.
                    883: .Tp
                    884: .Ss Complex Expressions
                    885: A complex expression is one combined of many
                    886: different elements of text. It is usually only necessary
                    887: in particularly nasty man pages, such as
                    888: .Xr adb 1
                    889: or
                    890: .Xr ex 1 ,
                    891: where combinations of commands, addresses and symbols
                    892: may be needed.
                    893: When pieces of text are processed,
                    894: .Xr troff 1
                    895: assumes
                    896: that a space character will be desired after each word
                    897: making it difficult to combine expressions where
                    898: different requests are used.
                    899: .Li \&.Cx
                    900: merely glues text together without spaces.  Where
                    901: a space is required, it must be specified.
                    902: A few examples:
                    903: .Pp
                    904: This first example shows how to construct a simple
                    905: expression with no spacing in between:
                    906: .Pp
                    907: .Ds I
                    908: .Cw (ax+bx+c) \ is\ produced\ by\ \&
                    909: .\".Cw (ax+bx+c) \&.Va_by_) \&_and_\& \&[?/]m_b1_e1_f1[?/]\&
                    910: .Cl Cx \t\t
                    911: .Li \&.Cx\ (
                    912: .Cx
                    913: .Cl Cx \t\t
                    914: .Li \&.Va ax
                    915: .Cx
                    916: .Cl Cx \t\t
                    917: .Li \&.Sy \+
                    918: .Cx
                    919: .Cl Cx \&(\&
                    920: .Va ax
                    921: .Cx +
                    922: .Va by
                    923: .Cx +
                    924: .Va c )
                    925: .Cx \t
                    926: .Em is produced by
                    927: .Cx \t
                    928: .Li \&.Va by
                    929: .Cx
                    930: .Cl Cx \t\t
                    931: .Li \&.Sy \+
                    932: .Cx
                    933: .Cl Cx \t\t
                    934: .Li \&.Va c )
                    935: .Cx
                    936: .Cl Cx \t\t
                    937: .Li \&.Cx
                    938: .Cx
                    939: .Cw
                    940: .De
                    941: .Pp
                    942: This example shows the same equation in a different format. The spaces
                    943: around the
                    944: .Li \&+
                    945: signs were forced with
                    946: .Li \e :
                    947: .Pp
                    948: .Ds I
                    949: .Cw (ax\ +\ bx\ +\ c) \ is\ produced\ by\ \&
                    950: .\".Cw (ax+bx+c) \&.Va_by_) \&_and_\& \&[?/]m_b1_e1_f1[?/]\&
                    951: .Cl Cx \t\t
                    952: .Li \&.Cx\ (
                    953: .Cx
                    954: .Cl Cx \t\t
                    955: .Li \&.Va a
                    956: .Cx
                    957: .Cl Cx \t\t
                    958: .Li \&.Sy x
                    959: .Cx
                    960: .Cl Cx \t\t
                    961: .Li \&.Cx \e\ +\e\ \e&
                    962: .Cx
                    963: .Cl Cx \&(\&
                    964: .Va a
                    965: .Sy x
                    966: .Cx \ +\ \&
                    967: .Va b
                    968: .Sy y
                    969: .Cx \ +\ \&
                    970: .Va c )
                    971: .Cx \t
                    972: .Em is produced by
                    973: .Cl Cx \t\t
                    974: .Li \&.Va b
                    975: .Cx
                    976: .Cl Cx \t\t
                    977: .Li \&.Sy y
                    978: .Cx
                    979: .Cl Cx \t\t
                    980: .Li \&.Cx \e\ +\e\ \e&
                    981: .Cx
                    982: .Cl Cx \t\t
                    983: .Li \&.Va c )
                    984: .Cx
                    985: .Cl Cx \t\t
                    986: .Li \&.Cx
                    987: .Cx
                    988: .Cw
                    989: .De
                    990: .Pp
                    991: The incantation below was
                    992: lifted from the
                    993: .Xr adb 1
                    994: manual page:
                    995: .Pp
                    996: .Ds I
                    997: .Cw \&[?/]m_b1_e1_f1[?/]\& is\ produced\ by
                    998: .Cl Cx \t\t
                    999: .Li \&.Cx Op Sy ?/
                   1000: .Cx
                   1001: .Cl Cx \t\t
                   1002: .Li \&.Nm m
                   1003: .Cx
                   1004: .Cl Cx Op Sy ?/
                   1005: .Nm m
                   1006: .Ad \ b1 e1 f1
                   1007: .Op Sy ?/
                   1008: .Cx \t
                   1009: .Em is produced by
                   1010: .Cx \t
                   1011: .Li \&.Ar \e\ b1 e1 f1
                   1012: .Cx
                   1013: .Cl Cx \t\t
                   1014: .Li \&.Op Sy ?/
                   1015: .Cx
                   1016: .Cl Cx \t\t
                   1017: .Li \&.Cx
                   1018: .Cx
                   1019: .Cw
                   1020: .De
                   1021: .Pp
                   1022: .Ss Examples and Displays
                   1023: There are three types of displays, an indented one line display
                   1024: .Li \&.Dl ,
                   1025: a non\-filled block display
                   1026: .Li Ds
                   1027: and a filled block display.
                   1028: .Pp
                   1029: .Tw \&.Dl
                   1030: .Tp Li \&.Dl
                   1031: Display one line of indented text.
                   1032: The
                   1033: .Li \&.Dl
                   1034: example request has been used throughout this
                   1035: file.  It's
                   1036: basic use is to indent (display) one line of text for quick
                   1037: one line examples. Its default font is set to
                   1038: constant width, however,
                   1039: .Li \&.Dl
                   1040: checks the first argument to see if it is callable. It cannot process
                   1041: more than nine arguments.
                   1042: .Pp
                   1043: .Ds I
                   1044: .Li \&.Dl % ls -ldg /usr/local/bin
                   1045: .Pp
                   1046: produces:
                   1047: .Dl % ls -ldg /usr/local/bin
                   1048: .Pp
                   1049: .Li \&.Dl Fl ldghfstru
                   1050: .Pp
                   1051: produces:
                   1052: .Dl  Fl ldghfstru
                   1053: .De
                   1054: .Pp
                   1055: Calling either the request
                   1056: .Li \&.Tp
                   1057: or
                   1058: .Li \&.Dp
                   1059: from
                   1060: .Li \&.Dl
                   1061: is redundant and may cause unpredictable errors.
                   1062: .Tp Li \&.Ds
                   1063: Display a block of text as typed,
                   1064: right margin edges are left ragged.
                   1065: Nesting
                   1066: .Li \&.Ds
                   1067: requests seems to work,
                   1068: so they can be used outside and within
                   1069: tagged paragraphs. Each
                   1070: .Li \&.Ds
                   1071: request must be ended with a
                   1072: .Li \&De
                   1073: request.
                   1074: .Li \&.Ds
                   1075: takes can be manipulated to indent
                   1076: with the
                   1077: .Li \&L , \&C , \&R ,
                   1078: and
                   1079: .Li \&I
                   1080: flags.
                   1081: .Dw 4n
                   1082: .Dp Li L
                   1083: Align block on the current left margin,
                   1084: this is the default mode of
                   1085: .Li \&.Ds
                   1086: if called without arguments.
                   1087: .Dp Li C
                   1088: Supposedly center the block. At this time
                   1089: unfortunately, the block merely gets
                   1090: left aligned about an imaginary center margin.
                   1091: This will be fixed some time inthe near future.
                   1092: .Dp Li I
                   1093: Indent from left margin default amount (usually
                   1094: about a three quarters of an inch or eight
                   1095: constant width characters).
                   1096: .Dp Li R
                   1097: This left aligns the block about two inches from
                   1098: the right side of the page. It too, alas, needs
                   1099: work.
                   1100: .Dp
                   1101: .Tp Li \&.De
                   1102: Ends a
                   1103: .Li \&.Ds
                   1104: request.
                   1105: .Tp Li \&.Df
                   1106: Display a filled (formatted) block.  Identical to
                   1107: .Li \&.Ds ,
                   1108: except the block of text is formatted (the edges are
                   1109: not left ragged).  Takes the same modifers as
                   1110: .Li Ds .
                   1111: .Tp
                   1112: .Ss Tagged paragraphs and Columns
                   1113: The commands
                   1114: .Li \&.Tp
                   1115: and
                   1116: .Li \&.Dp
                   1117: create tagged paragraph
                   1118: lists.
                   1119: Like the
                   1120: .Li \&.Cx
                   1121: request,
                   1122: both require a begin and end.  When
                   1123: .Li \&.Tp
                   1124: or
                   1125: .Li \&.Dp
                   1126: are called with arguments, they collect and
                   1127: create the tag portion from
                   1128: the arguments.
                   1129: Anything after the tag is placed in
                   1130: the paragraph portion.
                   1131: The
                   1132: .Li \&.Dp
                   1133: macro is essentially the same as
                   1134: the \&.Tp
                   1135: macro, but with a few added features.
                   1136: These are discussed following the
                   1137: .Li \&.Tp
                   1138: example.
                   1139: .Li \&.Tp
                   1140: and
                   1141: .Li \&.Dp
                   1142: can call several macros,
                   1143: these are:
                   1144: .Pp
                   1145: .Dl \&.Ad, \&.Ar, \&.Cm, \&.Em, \&.Er, \&.Ev, \&.Fl, \&.Fn, \&.Ic,
                   1146: .Dl \&.Li, \&.Nm, \&.Sy, \&.Va and \&.Xr.
                   1147: .Pp
                   1148: The
                   1149: .Li \&.Tp
                   1150: request can be nested, and values for determining
                   1151: the width of each tag are based on which macro
                   1152: .Li \&.Tp
                   1153: is calling, if it is calling one, or by specifying
                   1154: a width with the
                   1155: .Li \&.Tw
                   1156: request.
                   1157: The default width for an unknown tag type is set to just
                   1158: about one and three quarter inches, or 20 characters in a
                   1159: constant width font.
                   1160: If the default width is unsatisfactory,
                   1161: .Li \&.Tw
                   1162: can be used as follows:
                   1163: .Dp Li \&.Tw Fl
                   1164: sets the width to the default flag width
                   1165: .Li \&.Fl ,
                   1166: which is
                   1167: set to ten constant width characters or about five sixth of
                   1168: an inch.
                   1169: .Dp Li \&.Tw 24n
                   1170: sets the width to 24 constant width characters or about two
                   1171: inches.  The
                   1172: .Li n
                   1173: is absolutely necessary for the scaling to work correctly.
                   1174: .Dp Li \&.Tw ENAMETOOLONG
                   1175: sets the width to the constant width length of the
                   1176: string given.
                   1177: .Dp Li \&.Tw  int\e\ mkfifo
                   1178: again, the width is set to the constant width of the string
                   1179: given, and the space is protected with a preceding
                   1180: .Li \e .
                   1181: .Dp
                   1182: .Pp
                   1183: A nesting
                   1184: .Li \&.Tp
                   1185: Example:
                   1186: .Pp
                   1187: .Tp Nm Name1
                   1188: This is the first call to
                   1189: .Li \&.Tp
                   1190: with
                   1191: .Li \&.Nm .
                   1192: .Tp Nm Name2
                   1193: Another call with
                   1194: .Li \&.Nm .
                   1195: .Tp Va Variable1
                   1196: An example of the
                   1197: .Li \&.Va
                   1198: request with
                   1199: .Li \&.Tp .
                   1200: Since the first argument was callable
                   1201: and different from the last one, the
                   1202: tag was indented.
                   1203: .Tp Va Variable2
                   1204: Another
                   1205: .Li \&.Va
                   1206: example.
                   1207: .Tp Fl Flag1
                   1208: A third nest (indent) using the
                   1209: .Li \&.Fl
                   1210: request.
                   1211: .Tp Fl Flag2
                   1212: Again the
                   1213: .Li \&.Fl
                   1214: .Tp
                   1215: .Pp
                   1216: A
                   1217: .Li \&.Tp
                   1218: with no arguments stops the current nest
                   1219: and exdents back to the previous level.
                   1220: .Tp Va Variable3
                   1221: Another call with the
                   1222: .Li \&.Va
                   1223: request.
                   1224: .Tp
                   1225: .Pp
                   1226: Again a
                   1227: .Li \&.Tp
                   1228: without arguments exdents.  This will put
                   1229: us back at the first level.
                   1230: .Tp Nm Name3
                   1231: Another
                   1232: .Li \&.Nm
                   1233: request. This request is followed
                   1234: by the last call to
                   1235: .Li \&.Tp
                   1236: without arguments.
                   1237: .Tp
                   1238: .Pp
                   1239: The above was created from:
                   1240: .Pp
                   1241: .Ds I
                   1242: \&.Tp Nm Name1
                   1243: This is the first call to
                   1244: \&.Li \&.Tp
                   1245: with
                   1246: \&.Li \&.Nm .
                   1247: \&.Tp Nm Name2
                   1248: Another call with
                   1249: \&.Li \&.Nm .
                   1250: \&.Tp Va Variable1
                   1251: An example of the
                   1252: \&.Li \&.Va
                   1253: request with
                   1254: \&.Li \&.Tp .
                   1255: Since the first argument was callable and different from
                   1256: the last one, the tag was indented.
                   1257: \&.Tp Va Variable2
                   1258: Another
                   1259: \&.Li \&.Va
                   1260: example.
                   1261: \&.Tp Fl Flag1
                   1262: A third nest (indent) using the
                   1263: \&.Li \&.Fl
                   1264: request.
                   1265: \&.Tp Fl Flag2
                   1266: Again the
                   1267: \&.Li \&.Fl
                   1268: \&.Tp
                   1269: A
                   1270: \&.Li \&.Tp
                   1271: with no arguments stops the current nest
                   1272: and exdents back to the previous level.
                   1273: \&.Tp Va Variable3
                   1274: Another call with the
                   1275: \&.Li \&.Va
                   1276: request.
                   1277: \&.Tp
                   1278: Again a
                   1279: \&.Li \&.Tp
                   1280: without argments exdents.
                   1281: This will put us back at the first level.
                   1282: \&.Tp Nm Name3
                   1283: Another
                   1284: \&.Li \&.Nm
                   1285: request. This request is followed by the last call to
                   1286: \&.Li \&.Tp
                   1287: without arguments.
                   1288: \&.Tp
                   1289: .De
                   1290: .Pp
                   1291: An example of
                   1292: .Li \&.Dp:
                   1293: .Pp
                   1294: .Dw PAGEIN\ 10
                   1295: .Dp SL 10
                   1296: sleep time of the process (seconds blocked)
                   1297: .Dp PAGEIN 10
                   1298: number of disk i/o's resulting from references by the process
                   1299: to pages not loaded in core.
                   1300: .Dp UID 10
                   1301: numerical user-id of process owner
                   1302: .Dp PPID 10
                   1303: numerical id of parent of process
                   1304: process priority (non-positive when in non-interruptible wait)
                   1305: .Dp
                   1306: .Pp
                   1307: The raw text:
                   1308: .Pp
                   1309: .Ds I
                   1310: .Li \&.Dw PAGEIN\ 10
                   1311: .Li \&.Dp SL 10
                   1312: sleep time of the process (seconds blocked)
                   1313: .Li \&.Dp PAGEIN 10
                   1314: number of disk i/o's resulting from references by the process
                   1315: to pages not loaded in core.
                   1316: .Li \&.Dp UID 10
                   1317: numerical user-id of process owner
                   1318: .Li \&.Dp PPID 10
                   1319: numerical id of parent of process
                   1320: process priority (non-positive when in non-interruptible wait)
                   1321: .Li \&.Dp
                   1322: .De
                   1323: .Pp
                   1324: The default behaviour of
                   1325: .Li \&.Dp
                   1326: is to indent a small amount from the current margin before
                   1327: processing the tag.  This margin can be changed with the
                   1328: request
                   1329: .Li \&.Di
                   1330: which takes as its first argument either a numerical
                   1331: argument (e.g. a scaled number like 24n) or a letter
                   1332: .Li \&L
                   1333: or
                   1334: .Li \&I .
                   1335: The
                   1336: .Li \&L
                   1337: forces a left margin, which is useful if something doesn't
                   1338: quite fit (as in the example for the
                   1339: .Li \&.Fn
                   1340: macro in the TEXT MACRO section above).
                   1341: The
                   1342: .Li \&I
                   1343: is the default, but may be used for a return to the default
                   1344: if necessary.  Like all the tagged widths, the indents
                   1345: are pushed on a stack, and when that stack (or level)
                   1346: is expired, the previous values are used (this happens
                   1347: whenever a
                   1348: .Li \&.Dp
                   1349: or
                   1350: .Li \&.Tp
                   1351: is called without arguments).
                   1352: In this example,
                   1353: .Li \&.Dw
                   1354: has been used to set the width of the tag.
                   1355: It is identical to the request
                   1356: .Li \&.Tw
                   1357: discussed above.
                   1358: .Ss Columns
                   1359: The column request is made up of a width request,
                   1360: .Li \&.Cw ,
                   1361: and a column line request,
                   1362: .Li \&.Cl .
                   1363: From one to four simple columns can be created
                   1364: and all but the last column, are simple
                   1365: single entry style columns.
                   1366: The last (rightmost) column can overflow into
                   1367: a indented paragraph.
                   1368: .Pp
                   1369: The
                   1370: .Li \&.Cw
                   1371: request takes at most three arguments
                   1372: as width indicators.  The number of columns is
                   1373: always one more than given to
                   1374: .Li \&.Cw .
                   1375: the
                   1376: .Li \&.Cl
                   1377: request should have its arguments
                   1378: on the next line and the columns should be
                   1379: separated by a tab character.
                   1380: .Pp
                   1381: An example of two columns:
                   1382: .Cw Macros
                   1383: .Cl Macros     Description
                   1384: .Cl \&.Tp      List Request
                   1385: .Cl \&.Nm      Name Request
                   1386: .Cw
                   1387: .Pp
                   1388: The requests used to format the
                   1389: columns above (the jagged edges are from tabs which can
                   1390: also be represented by
                   1391: .Li \et ) :
                   1392: .Pp
                   1393: .Dl \&.Cw Macros
                   1394: .Dl \&.Cl Macros       Description
                   1395: .Dl \&.Cl \e&.Tp        List Request
                   1396: .Dl \&.Cl \e&.Nm        Name Request
                   1397: .Dl \&.Cw
                   1398: .Pp
                   1399: There some problems with columns at the moment, while they
                   1400: work well in nested lists, they are otherwise difficult
                   1401: to offset via example.
                   1402: .Ss Options
                   1403: The
                   1404: .Li \&.Op
                   1405: request ain't quite working perfectly.
                   1406: The (eventual) goal of
                   1407: .Li \&.Op
                   1408: is to place brackets around the given arguments, and place any
                   1409: punctuation outside the brackets.  In the case of
                   1410: .Li \&.Cx,
                   1411: trailing punctuation on the same request line as the
                   1412: .Li \&.Op
                   1413: should be placed outside the brackets.
                   1414: The multiple macro calls are one of the reasons this request is so moody.
                   1415: Is is the only macro which attempts to call other macros on the
                   1416: request line. Its not doing too badly, just not perfect:
                   1417: .Dw \&.Op\ Fl\ c\ Ar\ objfil\ Op\ Ar\ corfil\ ,
                   1418: .Dp Li \&.Op
                   1419: .Op
                   1420: .Dp Li \&.Op Fl k
                   1421: .Op Fl k
                   1422: .Dp Li \&.Op Fl k\ )\ .
                   1423: .Op Fl k ) .
                   1424: .Dp Li \&.Op Fl k Ar kookfile
                   1425: .Op Fl k Ar kookfile
                   1426: .Dp Li \&.Op Fl k Ar kookfile\ ,
                   1427: .Op Fl k Ar kookfile ,
                   1428: .Dp Li \&.Op Ar objfil Op Ar corfil
                   1429: .Op Ar objfil Op Ar corfil
                   1430: .Dp Li \&.Op Fl c Ar objfil Op Ar corfil\ ,
                   1431: .Op Fl c Ar objfil Op Ar corfil ,
                   1432: .Dp Li \&.Op word1 word2
                   1433: .Op word1 word2
                   1434: .Dp
                   1435: .Pp
                   1436: The punctuation on the second to last example is
                   1437: improperly placed and should be fixed some day.
                   1438: .Sh FILES
                   1439: .\" .Pa /usr/share/tmac/tmac.doc.style site specific layout
                   1440: .Dw /usr/share/man0/template.doc
                   1441: .Di L
                   1442: .Dp Pa /usr/share/tmac/tmac.doc
                   1443: manual macro package
                   1444: .Dp Pa /usr/share/man0/template.doc
                   1445: template for writing a man page
                   1446: .Dp
                   1447: .Sh HISTORY
                   1448: 4.4 BSD
                   1449: .Sh SEE ALSO
                   1450: .Xr mdoc.samples 7 ,
                   1451: .Xr man 1 ,
                   1452: .Xr troff 1
                   1453: .Sh BUGS
                   1454: .Pp
                   1455: Punctuation may be broken on
                   1456: .Li \&.Op
                   1457: again.
                   1458: .Pp
                   1459: Undesirable hyphenation on the dash of a flag
                   1460: argument is not yet resolved, and causes
                   1461: occasional mishaps in the DESCRIPTION section.
                   1462: .Pp
                   1463: Predefined strings are not declared in documentation.
                   1464: .Pp
                   1465: Section 3f has not been added to the header routines.
                   1466: .Pp
                   1467: .Li \&.Nm
                   1468: font should be changed in NAME section.
                   1469: .Pp
                   1470: .Li \&.Fn
                   1471: needs to have a check to prevent splitting up
                   1472: if the line length is too short. Right now it
                   1473: separates the last parenthesis, and sometimes
                   1474: looks ridiculous if a line is in fill mode.
                   1475: .Pp
                   1476: The method used to prevent header and footer page
                   1477: breaks (other than the initial header and footer) when using
                   1478: nroff seems to be putting out a partially filled line
                   1479: at the bottom of the page leaving an unsightly blank space.
                   1480: .Pp
                   1481: The tagged paragraph, display and column requests to not do any keeps
                   1482: and certainly should be able to.
                   1483: .Pp
                   1484: Occasionally there maybe a problem with mathematical
                   1485: or logical interpretation of characters from the
                   1486: set
                   1487: {+,\-,/,*,%,<,>,<=,>=,=,==,&}
                   1488: found as the second
                   1489: character in an argument string which may be checked for punctuation.
                   1490: This is a relatively rare occurrence, as a lot of checking is
                   1491: done to prevent it,
                   1492: but if it should happen
                   1493: escape the characters
                   1494: with
                   1495: .Li \e& .

unix.superglobalmegacorp.com

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