Annotation of 43BSDReno/share/man/man7/mdoc.samples.7, revision 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.