2018-05-03 12:31:12 +00:00
|
|
|
Guidelines for updating and authoring new man pages.
|
|
|
|
|
|
|
|
|
|
|
|
Overview
|
|
|
|
========
|
|
|
|
|
|
|
|
The man pages are written in the roff formatting language. See roff(7) ("man
|
|
|
|
roff") for an overview. roff is implemented on modern Unix like systems by
|
|
|
|
groff (GNU roff) which is a suite of programs and macro definition files that
|
|
|
|
make up the roff system.
|
|
|
|
|
|
|
|
Documentation written in roff can be transformed into a number of formats for
|
|
|
|
final publication. For the Hamlib project, the output formats are the classic
|
|
|
|
man(1) format to a terminal screen, HTML, and PDF. While groff includes a
|
Fix spelling errors
Fixed using the following command:
codespell --write-changes --summary --skip=*.m4 --ignore-words-list="develope,get's,quitt,setts,som,ue,vektor"
codespell --write-changes --summary --skip=aclocal.m4,lib --ignore-words-list="develope,get's,quitt,setts,som,ue,vektor"
Codespell home page: https://github.com/codespell-project/codespell
2020-07-24 07:02:12 +00:00
|
|
|
number of macro packages suitable for a variety of document styles, Hamlib
|
2018-05-03 12:31:12 +00:00
|
|
|
source files are written using the man(7) macro package. The layout of Hamlib
|
|
|
|
man pages generally follow the format specified in man-pages(7). The macros
|
2020-09-10 13:34:31 +00:00
|
|
|
used in the man pages format is specified in groff_man(7). Additional style
|
|
|
|
cues can be found in groff_man_style(7).
|
2018-05-03 12:31:12 +00:00
|
|
|
|
|
|
|
The use of mdoc from the BSD projects has been considered and may be used in
|
|
|
|
the future if the need arises. Conversely, the classic man macros are
|
|
|
|
reasonably well understood, fairly simple, easy to use, can be processed by a
|
|
|
|
wide range of tools, and fits the Hamlib philosophy of being as approachable
|
|
|
|
as possible. To be fair, mdoc is very comprehensive and would allow many more
|
|
|
|
formatting choices to be available for the various output formats. At some
|
|
|
|
point mdoc may well be the better choice.
|
|
|
|
|
|
|
|
The latest versions of the manual pages referenced above may be found at:
|
|
|
|
|
|
|
|
http://man7.org/linux/man-pages/dir_section_7.html
|
|
|
|
|
|
|
|
For information on mdoc, see:
|
|
|
|
|
|
|
|
http://mandoc.bsd.lv/
|
|
|
|
|
|
|
|
|
|
|
|
Recommended Practices
|
|
|
|
=====================
|
|
|
|
|
|
|
|
Sections
|
|
|
|
--------
|
|
|
|
|
|
|
|
The man pages are sorted into various sections depending on the part of the
|
|
|
|
system they document. For Hamlib, the man pages fall into one of three
|
|
|
|
categories. The placement is as follows:
|
|
|
|
|
|
|
|
Section Hamlib subject domain
|
|
|
|
1 Executables, rigctl, rotctl, etc.
|
|
|
|
3 Hamlib library constants and functions.
|
|
|
|
7 General Hamlib information.
|
|
|
|
|
|
|
|
Macros and escapes
|
|
|
|
------------------
|
|
|
|
|
|
|
|
The use of man macros to mark up the roff source files is strongly encouraged.
|
|
|
|
In some cases, the use of lower level troff font escapes, such as "\fBxxx\fP",
|
|
|
|
is required, but should be used sparingly. Such escapes are hard to read and
|
|
|
|
not all editors can highlight the escape correctly.
|
|
|
|
|
|
|
|
The default font for HTML and PDF is Roman (often Times Roman on the local
|
|
|
|
system) and rarely needs to be specified directly with the ".R" macro. Text
|
|
|
|
may be bolded using the ".B" macro or italicized using the ".I" macro. A set
|
|
|
|
of combination macros exist that combine alternating sequences of styled text
|
|
|
|
such as ".BR" for alternating Bold and Roman text.
|
|
|
|
|
|
|
|
In the OPTIONS and COMMANDS sections of the utility pages there are complex
|
|
|
|
constructs of the form of:
|
|
|
|
|
|
|
|
.BR M ", " set_mode " \(aq" \fIMode\fP "\(aq \(aq" \fIPassband\fP \(aq
|
|
|
|
|
|
|
|
The result is that the command strings will be in Bold, the punctuation will
|
|
|
|
be in Roman, and the names of the variables will be in Italics using the low
|
|
|
|
level troff font escapes. Quoted strings are required to ensure spacing
|
|
|
|
between items as the ".BR" macro uses (and other combination macros) spaces to
|
|
|
|
separate its arguments. As you can see, the font escapes are hard to read as
|
|
|
|
they must be run up tight against the text.
|
|
|
|
|
|
|
|
Special symbols such as copyright or trademark glyphs and styled quotation
|
|
|
|
marks do require roff escapes inlined with the text. Several such escapes
|
|
|
|
can be found in the Hamlib roff source files:
|
|
|
|
|
|
|
|
Escape Description
|
|
|
|
\(aq ASCII single quote
|
|
|
|
\(oq Styled opening single quote
|
|
|
|
\(cq Styled closing single quote
|
|
|
|
\(lq Styled opening double quote
|
|
|
|
\(rq Styled closing double quote
|
|
|
|
\(co Copyright symbol
|
|
|
|
|
|
|
|
Besides the macros documented in man(7), the following troff macros are used
|
|
|
|
in the Hamlib man pages:
|
|
|
|
|
|
|
|
Macro Description
|
|
|
|
.br Line break (analogous to '\n' in C)
|
|
|
|
.sp Line break plus an additional blank line
|
|
|
|
.nf Do not justify following text (encloses the .MT block)
|
|
|
|
.fi Resume justification
|
|
|
|
|
2020-09-10 13:34:31 +00:00
|
|
|
Note: ".br" and ".sp" should be used sparingly.
|
|
|
|
|
2018-05-03 12:31:12 +00:00
|
|
|
Structure
|
|
|
|
---------
|
|
|
|
|
|
|
|
In addition to the standard man page sections of NAME, SYNPOPSIS, etc., the
|
|
|
|
Hamlib utility (section 1) man pages add the sections COMMANDS, READLINE,
|
|
|
|
PROTOCOL, DIAGNOSTICS, COPYRIGHT, and COLOPHON depending on the individual
|
|
|
|
utility.
|
|
|
|
|
|
|
|
|
|
|
|
Layout Tips
|
|
|
|
===========
|
|
|
|
|
|
|
|
Keep in mind that roff documents are most often processed in a single pass,
|
2020-09-10 13:34:31 +00:00
|
|
|
i.e., the document processor reads the file from top to bottom and formats the
|
2018-05-03 12:31:12 +00:00
|
|
|
text per the macros and escapes found along the way. Anything that is not a
|
|
|
|
macro or an escape gets rendered into the output file and that includes blank
|
|
|
|
lines. As a result, best practice is to not include blank lines in the
|
|
|
|
running text. Instead use the ".PP" or ".IP" macros to indicate a paragraph
|
|
|
|
or an indented paragraph break. To provide vertical spac between elements of
|
|
|
|
the source document, a single '.' on a line will be discarded by the document
|
|
|
|
processor. This provides a way to visually separate paragraphs and headings.
|
|
|
|
|
|
|
|
Note: While the man macro package recognizes ".LP" and ".P" as synonyms for
|
|
|
|
".PP", some tools may only recognize ".PP". One such tool is the older
|
|
|
|
'man2html' converter.
|
|
|
|
|
2020-09-10 13:34:31 +00:00
|
|
|
Headings
|
|
|
|
--------
|
2018-05-03 12:31:12 +00:00
|
|
|
|
|
|
|
Normal section headings use the ".SH" macro which provides for vertical space
|
|
|
|
between the previous text and the heading and also begins the next block of
|
|
|
|
running text. All text blocks must follow a heading. Headings are normally
|
|
|
|
composed of one word in all capital letters.
|
|
|
|
|
|
|
|
Sub-headings use the ".SS" macro which provides vertical space above the
|
|
|
|
previous block of text and indents the sub-heading to about half the distance
|
|
|
|
from the left margin and the block of text that follows. Only one level of
|
|
|
|
sub-headings is provided.
|
|
|
|
|
2020-09-10 13:34:31 +00:00
|
|
|
Examples
|
|
|
|
--------
|
|
|
|
|
|
|
|
Examples should be indented from the blocks of text. The ".in +4n" macro is
|
|
|
|
used for indentation of four characters regardless of text indentation level.
|
|
|
|
|
|
|
|
Precede each such macro with either the ".PP" or the ".IP" macro, the latter
|
|
|
|
being used with a block indented using the ".TP" macro.
|
|
|
|
|
|
|
|
The indented block must be ended using the ".in" macro to return the next
|
|
|
|
block of text to the normal indentation level.
|
|
|
|
|
|
|
|
In the Hamlib man pages this indentation is combined with the ".EX" and ".EE"
|
|
|
|
macro pair. See the man1/rigctl.1 file for examples.
|
|
|
|
|
|
|
|
Blank lines should be included as part of an example block placed between the
|
|
|
|
".EX" and ".EE" macros. Lines between these macros are rendered in HTML and
|
|
|
|
PDF as blocks of constant width text and should be verbatim input or output
|
|
|
|
in the shell, programs, or blocks of source code.
|
|
|
|
|
|
|
|
Text intended to be typed at a shell or program prompt should be in bold and
|
|
|
|
program orshell output in normal weight. In some cases it will be necessary
|
|
|
|
to use the "\fB...\fP" font formatting calls especially where backslash
|
|
|
|
escapes ("\\") are required.
|
|
|
|
|
|
|
|
Notes
|
|
|
|
-----
|
|
|
|
|
|
|
|
Notes are those asides that bring attention to an important bit of
|
|
|
|
information.
|
|
|
|
|
|
|
|
Indent the note with the ".IP" macro in all levels of text.
|
|
|
|
|
|
|
|
Bold the word "Note" and set the colon in Roman, e.g., ".BR Note :".
|
|
|
|
|
|
|
|
|
|
|
|
Testing
|
|
|
|
=======
|
|
|
|
|
|
|
|
While writing a manual page it is very useful to check the output.
|
|
|
|
|
|
|
|
Terminal output
|
|
|
|
---------------
|
|
|
|
|
|
|
|
At the shell prompt this may be done with:
|
|
|
|
|
|
|
|
man ./manual_page.1
|
|
|
|
|
|
|
|
This will direct the man program to format the file in question rather than
|
|
|
|
searching through its database.
|
|
|
|
|
|
|
|
PDF and HTML output
|
|
|
|
-------------------
|
|
|
|
|
|
|
|
It is very useful to generate PDF and HTML files while writing a manual page
|
|
|
|
to assure the font effects and indentation are as you intend.
|
|
|
|
|
|
|
|
Use these commands to generate these files:
|
|
|
|
|
|
|
|
groff -mandoc -Tpdf >manual_page.1.pdf manual_page.1
|
|
|
|
groff -mandoc -Thtml >manual_page.1.html manual_page.1
|
|
|
|
|
|
|
|
Use your favorite PDF viewer and browser to view them.
|
|
|
|
|
2018-05-03 12:31:12 +00:00
|
|
|
|
|
|
|
Getting Help
|
|
|
|
============
|
|
|
|
|
|
|
|
If something is unclear on how to format a new or updated man page, simply
|
|
|
|
post your question to the mailing list:
|
|
|
|
|
|
|
|
hamlib-developer@lists.sourceforge.net
|
|
|
|
|
|
|
|
73!
|