LilyPond Contributor's Guide: 5.4.3 Sectioning commands

### 5.4.3 Sectioning commands

The Notation Reference uses section headings at four, occasionally five, levels.

- Level 1: @chapter
- Level 2: @section
- Level 3: @subsection
- Level 4: @unnumberedsubsubsec
- Level 5: @subsubsubheading

The first three levels are numbered in HTML, the last two are not. Numbered sections correspond to a single HTML page in the split HTML documents.

The first four levels always have accompanying nodes so they can be referenced and are also included in the ToC in HTML.

Most of the manual is written at level 4 under headings created with

>     @node Foo
>     @unnumberedsubsubsec Foo

Level 3 subsections are created with

>     @node Foo
>     @subsection Foo

Level 4 headings and menus must be preceded by level 3 headings and menus, and so on for level 3 and level 2. If this is not what is wanted, please use:

>     @subsubsubheading Foo

Please leave two blank lines above a `@node`; this makes it easier to find sections in texinfo.

Do not use any `@` commands for a `@node`. They may be used for any `@sub...` sections or headings however.

>     not:
>     @node @code{Foo} Bar
>     @subsection @code{Foo} Bar

>     but instead:
>     @node Foo Bar
>     @subsection @code{Foo} Bar

No punctuation may be used in the node names. If the heading text uses punctuation (in particular, colons and commas) simply leave this out of the node name and menu.

>     @menu
>     * Foo Bar::
>     @end menu

>     @node Foo Bar
>     @subsection Foo: Bar

Backslashes must not be used in node names or section headings. If the heading text should include a backslash simply leave this out of the node name and menu and replace it with `@bs{}` in the heading text.

>     @menu
>     * The set command
>     @end menu

>     @node The set command
>     @subsection The @code{@bs{}set} command

References to such a node may use the third argument of the `@ref` command to display the texually correct heading.

>     @ref{The set command,,The @code{@bs{}set command}

With the exception of `@` commands, `\` commands and punctuation, the section name should match the node name exactly.

Sectioning commands (`@node` and `@section`) must not appear inside an `@ignore`. Separate those commands with a space, ie `@n` `ode`.

Nodes must be included inside a

>     @menu
>     * foo::
>     * bar::
>     @end menu

construct. These can be constructed with scripts: see Stripping whitespace and generating menus.

#### LilyPond — Contributor’s Guide v2.22.2 (stable-branch).