ms basic information (The GNU Troff Manual)

#### 4.6.1.1 Basic information

`ms` documents are plain text files; prepare them with your preferred text editor. If you’re in a hurry to start, know that `ms` needs one of its macros called at the beginning of a document so that it can initialize. A macro is a formatting instruction to `ms`. Put a macro call on a line by itself. Use ‘`.PP`’ if you want your paragraph’s first line to be indented, or ‘`.LP`’ if you don’t.

After that, start typing normally. It is a good practice to start each sentence on a new line, or to put two spaces after sentence-ending punctuation, so that the formatter knows where the sentence boundaries are. You can separate paragraphs with further paragraphing macros, or with blank lines, and you can indent with tabs. When you need one of the features mentioned earlier (see `ms`), return to this part of the manual.

Format the document with the `groff` command. `nroff` can be useful for previewing.

    $ editor radical.ms
    $ nroff -ww -z -ms radical.ms # check for errors
    $ nroff -ms radical.ms | less -R
    $ groff -T ps -ms radical.ms > radical.ps
    $ see radical.ps

Our `radical.ms` document might look like this.

    .LP
    Radical novelties are so disturbing that they tend to be
    suppressed or ignored, to the extent that even the
    possibility of their existence in general is more often
    denied than admitted.

    →That's what Dijkstra said, anyway.

`ms` exposes many aspects of document layout to user control via `groff`’s registers and strings, which store numbers and text, respectively. Measurements in `groff` are expressed with a suffix called a scaling unit.

`i`

  inches

`c`

  centimeters

`p`

  points (1/72 inch)

`P`

  picas (1/6 inch)

`v`

  vees; current vertical spacing

`m`

  ems; width of an “M” in the current font

`n`

  ens; one-half em

Set registers with the `nr` request and strings with the `ds` request. Requests are like macro calls; they go on lines by themselves and start with the control character, a dot (`.`). The difference is that they directly instruct the formatter program, rather than the macro package. We’ll discuss a few as applicable. It is wise to specify a scaling unit when setting any register that represents a length, size, or distance.

    .nr PS 10.5p \" Use 10.5-point type.
    .ds FAM P    \" Use Palatino font family.

In the foregoing, we see that `\"` begins a comment. This is an example of an escape sequence, the other kind of formatting instruction. Escape sequences can appear anywhere. They begin with the escape character (`\`) and are followed by at least one more character. `ms` documents tend to use only a few of `groff`’s many requests and escape sequences; see Request Index and Escape Sequence Index or the groff(7) man page for complete lists.

`\"`

  Begin comment; ignore remainder of line.

`\n[reg]`

  Interpolate value of register reg.

`\*[str]`

  Interpolate contents of string str.

`\*s`

  abbreviation of `\*[s]`; the name s must be only one character

`\[char]`

  Interpolate glyph of special character named char.

`\&`

  dummy character

`\~`

  Insert an unbreakable space that is adjustable like a normal space.

`\|`

  Move horizontally by one-sixth em (“thin space”).

Prefix any words that start with a dot ‘`.`’ or neutral apostrophe ‘`'`’ with `\&` if they are at the beginning of an input line (or might become that way in editing) to prevent them from being interpreted as macro calls or requests. Suffix ‘`.`’, ‘`?`’, and ‘`!`’ with `\&` when needed to cancel end-of-sentence detection.

    My exposure was \&.5 to \&.6 Sv of neutrons, said Dr.\&
    Wallace after the criticality incident.