1. The manpages are generated by processing *.m4 files using m4.
  2. Manpages are written in "roff", which is an ancient text formatting/markup system and language
  3. with a lot of peculiarities. For the Dinit manpages we try to stick to the subset documented here.
  4. Roff formatting guide:
  5. Inline formatting ("escapes"):
  6. \fB - set bold
  7. \fI - set italic (shows as underlined when output on console)
  8. \fR - set regular (i.e. unset bold & italic)
  9. Special characters:
  10. '\ ' - (backslash followed by space) - non-breaking space
  11. \& - zero-width space
  12. \- - non-breaking dash (avoid automatic line-splitting due to hyphen)
  13. \(em - em-dash (GNU groff accepts "\[em]" as well but it may not be portable)
  14. \(en - en-dash
  15. \(bu - bullet point
  16. Line commands ("requests"):
  17. .\" - begins a comment line (may be used for spacing in source document without the effect that having a
  18. line would)
  19. .sp - vertical space (i.e. blank line without breaking paragraph); not really necessary since you can get
  20. the same effect with a blank line in the source document.
  21. .in - set or adjust indent (if given an argument). Argument should be "7m" for example (m = em's,
  22. i = inches) i.e. ".in 7m"; "+7m" increases, "-7m" decreases current indent by specified amount.
  23. Without argument is supposed to restore indent from before previous .in, but mandoc gets this wrong
  24. and always just restores initial indent value.
  25. ... and macros (which behave like requests). Arguments can be quoted ("...") if they contain
  26. spaces.
  27. .TH <title> <section> [<up to three extras>] - title macro. See "structure" notes below.
  28. .SH <name> - section heading for <name> (name usually capitalised). If name is omitted the
  29. next line is used.
  30. .LP - begin a new normal paragraph
  31. .HP - begin a hanging paragraph (lines after the first are indented)
  32. .TP - begin an indented paragraph with unindented label (label is on the next line)
  33. .IP \(bu - indented paragraph with bullet point
  34. .RS - increase left margin by one level (and reset indentation). Should typically used instead of ".in".
  35. .RE - decrease left margin by one level
  36. Structure:
  37. Documents should start with a .TH header line ("8" is the man section):
  38. .TH DINIT "8" "October 2022" "Dinit 0.16.1" "Dinit - service management system"
  39. This should be followed by a NAME section:
  40. .SH NAME
  41. dinit \- supervise processes and manage services
  42. Gotchas:
  43. * Sentences should always end at the end of a line (this affects spacing in output).
  44. * hyphens which are actually part of a word (part of a setting name for example) should be
  45. preceded by a backslash ("\-") which will prevent the literal from being split over multiple lines.
  46. * A blank line doesn't technically start a new paragraph (but does produce a blank line in the output).
  47. It's probably better to use .LP/.HP/.TP for example to start a paragraph.
  48. * There are effectively two ways to indent text: one is to set the indent (.in), another is to set the
  49. left margin (.RS/.RE). The latter is usually preferred.
  50. For synopsis:
  51. .PD 0 -- no space between paragraphs
  52. .nh -- disable hyphenation
  53. .HP -- begin hanging paragraph
  54. (command goes here)
  55. .HP
  56. (next command variant)
  57. .PD -- default paragraph spacing
  58. .hy -- default hyphenation