=================================================================== RCS file: /cvs/mandoc/Attic/manuals.7,v retrieving revision 1.1 retrieving revision 1.3 diff -u -p -r1.1 -r1.3 --- mandoc/Attic/manuals.7 2009/03/22 08:52:27 1.1 +++ mandoc/Attic/manuals.7 2009/03/22 14:28:08 1.3 @@ -1,39 +1,263 @@ .Dd $Mdocdate: March 22 2009 $ -.Dt "Writing Unix Documentation" paper +.Dt manuals 7 .Os +.\" SECTION .Sh NAME -.Nm Writing Unix Documentation -.Nd a guide to writing Unix manuals +.Nm Writing UNIX Documentation +.Nd a guide to writing UNIX manuals +.\" SECTION .Sh DESCRIPTION -

- Writing Unix Documentation -

+.Em A utility without good documentation is of no utility at all . +.\" PARAGRAPH +.Pp +A system component's documentation describes the utility of that +component, whether it's a device driver, an executable or, most +importantly, a game. Although there are plenty of documents available +on how to read +.Ux +documents, or where to find them, few focus on composition. +.\" PARAGRAPH +.Pp +This document serves as a tutorial to writing +.Ux +documentation +.Pq Dq manuals . +If you add something to your operating system, whether it's a new file +format or directory structure or device driver, it needs documentation. +.\" SECTION +.Sh CLASSIFICATION +Classify your system component. In +.Ux , +each component has a +.Dq manual section , +which categorises the component's function. The section of a manual is +usually listed in parenthesis next to the component name, such as +.Xr ps 1 , +section 1. You can query a manual explicitly by its section: +.Pp +.Dl % man \-s 1 ps +.Pp +The following table lists classifications and the applicable manual +sections: +.Pp +.Bl -tag -width "XXXXXXXXXXXX" -offset indent -compact +.It Em Section +.Em Description +.It 1 +operator utilities +.It 2 +system calls +.It 3, 3p, 3f +programming libraries (C, Perl, Fortran) +.It 5 +file and wire protocol formats +.It 6 +games +.It 7 +tutorials, documents and papers +.It 8 +administrator utilities +.It 9 +in-kernel routines +.El +.Pp +Some examples in regular name/section form: +.Pp +.\" LIST +.Bl -tag -width "File-formatX" -offset indent -compact +.It Em Manual +.Em Description +.It Xr dc 4 +DEC/Intel 10/100 Ethernet device +.It Xr usermod 8 +modify user login information +.It Xr cc 1 +the C compiler +.It Xr fortune 6 +print a random adage +.It Xr open 2 +open or create a file for reading or writing +.It Xr isspace 3 +whitespace character test +.It Xr Pod::Man 3p +convert POD data to formatted roff +.It Xr tsleep 9 +process context sleep +.It Xr passwd 5 +format of the password file +.It Xr symlink 7 +symbolic link handling +.El +.\" SECTION +.Sh COMPOSITION +Prepare your composition environment. +.\" SUBSECTION +.Ss Naming +Your component will need a name by which to query its contents via +.Xr man 1 . +Keep it simple. You may want to look for other manuals by that same +name before committing: +.Pp +.Dl % apropos myname +.Pp +Conventionally, manual files are named +.Pa myname.section , +such as +.Pa manuals.7 +for this document. +.\" SUBSECTION +.Ss Input Language +Manuals should +.Em always +be written in the +.Xr mdoc 7 +formatting language. +.Pp +There exist other documentation-specific languages, such as the +historical +.Xr me 7 , +.Xr ms 7 +and +.Xr man 7 +packages of +.Xr roff 7 ; +newer languages such as DocBook, texinfo or schema-driven XML; or even +ad-hoc conventions such as README files. +.Em Stay away from these methods! +Historical formats fail to capture a manual's semantic content, instead +only modelling its style. Newer methods requires special, +system-specific tools and may change or become obsolete over the +life-time of your component. +.Pp +There are two canonical references for writing mdoc manuals: +.Pp +.\" LIST +.Bl -tag -width XXXXXXXXXXXXXXXX -offset indent -compact +.It Xr mdoc 7 +formal language reference +.It Xr mdoc.samples 7 +macro reference +.El +.Pp +Don't merely copy existing manuals! Most systems distribute an mdoc +template to help you get started in +.Pa /usr/share/misc/mdoc.template . +.\" SUBSECTION +.Ss Development Tools +While writing, make sure that your manual is correctly structured: +.Pp +.Dl % mandoc \-Tlint \-Wall name.1 +.Pp +You may spell-check your work as follows: +.Pp +.Dl % deroff name.1 | spell +.Dl % ispell \-n name.1 +.Pp +Use +.Xr cvs 1 +or, if not available, +.Xr rcs 1 +to version-control your work. If you wish the last check-in to effect +your document's date, use the following RCS tag for the date macro: +.Pp +.Dl \&.Dd $Mdocdate: March 22 2009 $ +.Pp +.\" SUBSECTION +.Ss Viewing +mdoc documents may be paged to your terminal with traditional +tools such as +.Xr nroff 1 , +.Xr groff 1 , +or with newer, more powerful tools such as +.Xr mandoc 1 : +.\" DISPLAY +.Bd -literal -offset indent +% nroff \-mandoc name.1 | less +% groff \-Tascii \-mandoc name.1 | less +% mandoc name.1 | less +.Ed +.Pp +Other output formats are also supported: +.\" DISPLAY +.Bd -literal -offset indent +% groff \-Tps \-mandoc name.1 | less +% mandoc \-Thtml name.1 | less +.Ed +.\" SUBSECTION +.Ss Automation +Consider adding your mdoc documents to +.Xr make 1 +Makefiles in order to automatically check your input and generate +output: +.Bd -literal -offset indent +\&.SUFFIXES: .html .txt .1 .in -

- A utility without documentation is of no utility at all. -

+\&.in.1: + mandoc -Wall,error -Tlint $< + cp -f $< $@ -

- A system component's documentation describes the utility of that component, whether it's a device - driver, an executable or, most importantly, a game. Although there are plenty of documents available on - how to read Unix documents, or where to find them, few focus on how to write them. -

+\&.1.html: + mandoc -Thtml $< >$@ -

- This document serves as a reference guide to writing Unix documentation. If you add something to your - operating system, whether it's a new file format or directory structure or device driver, it needs - documentation. -

- - - - -
- Copyright © 2009 Kristaps Džonsons, $Date: 2009/03/22 08:52:27 $ -
- - - - - - +\&.1.txt: + mandoc -Tascii $< | col -b >$@ +.Ed +.\" SECTION +.Sh BEST PRACTICES +The +.Xr mdoc 7 +and +.Xr mdoc.samples 7 +files will be indispensable in guiding composition. In this section, we +introduce some +.Ux +manual best practices: +.\" SUBSECTION +.Ss Language +.Bl -enum +.It +Use clear, concise language. Favour simplicity. +.It +Write your manual in non-idiomatic English. Don't worry about +Commonwealth or American spellings \(em just correct ones. +.It +Spell-check your manual, keeping in mind short-letter terms ( +.Xr iwi 4 +vs. +.Xr iwn 4 ) . +.It +If you absolutely must use special characters (diacritics, mathematical +symbols and so on), use the escapes dictated in +.Xr mdoc 7 . +.El +.\" SUBSECTION +.Ss References +Other components may be referenced with the +.Sq \&Xr , +and +.Sq \&Sx +macros. Make sure that these exist. If you intend to distribute your +manual, make sure +.Sq \&Xr +references are valid across systems (within reason). If you cross-link with +.Sq \&Sx , +make sure that the section reference exists. +.\" SUBSECTION +.Ss Citations +Cite your work. If your system references standards documents or other +publications, please use the +.Sq \&Rs/Re +block macros. +.\" SUBSECTION +.Ss Formatting +Let the front-ends worry about formatting for you, but if you must think +about formatting (at times necessary, especially for tagged and columnar +lists), assume that your output device is a fixed-width terminal window: +.Bd -literal -offset indent +\&.Bl \-tag \-width "-o outfile" +\&.It \&Fl \&Ar outfile +.Ed +.Pp +You may assume that the width calculated by the string literal +.Qq Fl o Ar outfile +will