man vs mdoc - blinkkin/blinkkin.github.com GitHub Wiki

Simple comparison of man(7) and mdoc(7) macros.

Example should look like this (common in SYNOPSIS section of manuals):

foo [-bar] [-c config-file ] file ...

First man(7) format:

.B foo [-bar] [-c
.I config-file
.B ]
.I file
.I ...

B macro stands for bold text, I for italic text.

Now mdoc(7) format:

.Nm foo
.Op Fl bar
.Op Fl c Ar config-file
.Ar file
.Ar

Nm stands for manual name, Op for command-line option, Fl for command-line flag, Ar for command-line argument.

It's easy to recognize that man(7) is all about presentation formatting, where mdoc(7) is structural format. What this means?

  • with groff pretty much nothing - both formats are translated to roff and structural data from mdoc(7) is lost.
  • with mdocml it matters. mdocml turns whole paradigm upside down: end format is mdoc/man, and roff macros (if there're any) are just additions. This way structural data from mdoc(7) isn't lost and can be used for html/pdf/ps output (nice looking docs without additional steps).

Links: