Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
STYLE.MDOC(5)		      File Formats Manual		 STYLE.MDOC(5)

NAME
       style.mdoc -- FreeBSD manual page style guide

DESCRIPTION
       This file specifies the preferred style for manual pages	in the FreeBSD
       source tree.

   Code	Examples
       - Use literal formatting	for examples and literal shell commands, e.g.:

	       Then run
	       .Ql make	install	clean .

	 which renders as:

	       Then run	`make install clean'.

	 The  incorrect	way would be to	use macros like	Nm to stylize the com-
	 mand invocation:

	       Then run
	       .Ql Nm make Cm install Cm clean .

	 which renders as:

	       Then run	`make install clean'.

       - The Ql	macro is the preferred macro  for  formatting  literal	inline
	 fragments.  Historically, Dq Li was the preferred way before the dep-
	 recation of Li.

   HARDWARE Section
       Driver  manuals	in  section  four should have a	"HARDWARE" section de-
       scribing	hardware known to work with the	driver.	 This section is drawn
       verbatim	into the Release Hardware Notes, therefore there  are  several
       things to note:

       - The introductory sentence should be in	the form:

	       The
	       .Nm
	       driver supports the following $device_class:

	 Followed by the list of supported hardware.

	 This  defines	what driver the	subsection is referring	to, and	allows
	 the reader to search through the Hardware Notes not only for the  de-
	 vice  models they have, but also for the device type they are looking
	 to acquire.

       - The supported hardware	should be listed as a bullet list, or if  com-
	 plexity  requires,  a	column list.  These two	list types create very
	 neat subsections with clean starting and stopping points.

   EXAMPLES Section
       - Format	the "EXAMPLES" section in the following	way:

	       .Bl -tag	-width 0n
	       .It Sy Example 1\&: Doing Something
	       .Pp
	       The following command does something.
	       .Bd -literal -offset 2n
	       .Ic # make -VLEGAL
	       .Ed
	       .It Sy Example 2\&: Doing Something Different
	       .Pp
	       The following command does something different.
	       .Bd -literal -offset 2n
	       .Ic # bectl list
	       .Ed
	       .Pp
	       It is good to know this command.
	       .El

	 which renders as:

	 Example 1: Doing Something

	   The following command does something.

	     # make -VLEGAL

	 Example 2: Doing Something Different

	   The following command does something	different.

	     # bectl list

	   It is good to know this command.

   Lists
       - The -width argument to	the .Bl	macro should match the length  of  the
	 longest rendered item in the list, e.g.:

	       .Bl -tag	-width "-a address"
	       .It Fl a	Ar address
	       Set the address.
	       .It Fl v
	       Print the version.
	       .El

	 In  case the longest item is too long and hurts readability, the rec-
	 ommendation is	to set the -width argument to `indent',	e.g.:

	       .Bl -tag	-width "indent"
	       .It Cm build
	       Build the port.
	       .It Cm install
	       Install the port.
	       .It Fl install-missing-packages
	       Install the missing packages.
	       .El

   Synopsis Formatting
       - Do not	put whitespace between alternative parameters separated	with a
	 pipe ("|"), e.g.:

	       .Cm compression Cm on Ns	| Ns Cm	off
	       .Cm install Fl -all Ns |	Ns Ar portname Ar ...

	 which in the SYNOPSIS section is rendered as:

	       compression on|off
	       install --all|portname ...

       - Use Cm	to stylize characters that are command modifiers  (e.g.,  ",",
	 "@" or	"=").  For example:

	       .Sm off
	       .Fl -meet Cm = Ar who Oo	Cm , Ar	who " "	Ar "..." Oc Cm @ Ar where
	       .Sm on

	 which renders as:

	       --meet=who[,who ...]@where

	 instead of:

	       .Sm off
	       .Fl -meet No = Ar who Oo	, Ar who " " Ar	"..." Oc @ Ar where
	       .Sm on

	 which would render as:

	       --meet=who[,who ...]@where

	 It  is	important to realize that in the correct example, ",", "@" and
	 "=" are stylized with Cm.  At the  same  time,	 the  square  brackets
	 ("[]")	 are  not  stylized as they do not belong to the syntax	of the
	 --meet	flag.

   Quoting
       - Use the Dq ("") macro for quoting.  Use the Sq	(`') macro for quoting
	 inside	quotes.	 The use of the	Qq ("")	macro is  usually  not	neces-
	 sary.

   Variables
       - Use Va	instead	of Dv for sysctl(8) variables like kdb.enter.panic.

       -  Use  the angle brackets Aq ("<>") macro for arguments	(Ar) when they
	 are mixed with	similarly stylized macros like Pa or Va, e.g.:

	       .Va critical_filesystems_ Ns Aq Ar type

	 which renders as:

	       critical_filesystems_<type>

	 instead of:

	       .Va critical_filesystems_ Ns Ar type

	 that would be rendered	as:

	       critical_filesystems_type

SEE ALSO
       man(1), mandoc(1), mdoc(7), roff(7), style(9)

HISTORY
       This manual page	first appeared in FreeBSD 13.0.

AUTHORS
       Mateusz Piotrowski <0mp@FreeBSD.org>

FreeBSD	14.3		       December	21, 2024		 STYLE.MDOC(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=style.mdoc&sektion=5&manpath=FreeBSD+14.3-RELEASE+and+Ports>

home | help