Skip to content

Per-heading unnumbered control under book-mode numbering #68

Description

@mmcky

Summary

Under numbering.book.enabled (and more generally when a heading depth is enabled), every heading at that depth is numbered, and there is no way to exclude an individual heading. LaTeX \section*{...} and \paragraph{...} are unnumbered by design, so converting them faithfully to MyST needs a per-heading opt-out. Today mystmd offers only all-or-nothing control per heading depth.

What I tried (mystmd v1.10.1, QuantEcon qe-v8 fork)

Neither of the attribute forms one might expect is parsed as an attribute on an ATX heading — the whole {…} block leaks into the rendered heading text:

Source Rendered heading text Heading id
## Summary {.unnumbered} Summary {.unnumbered} auto-slug of the leaked text (summary-unnumbered)
## Summary {#summary .unnumbered} Summary {#summary .unnumbered} comes only from a preceding (label)= target, never from the {#…} block

So ids are set via the (label)= target syntax, and there is no class/attribute channel on headings through which an "unnumbered" hint could be passed.

Request

A per-heading way to exclude a single heading from automatic numbering — for example honoring enumerated: false (or a .unnumbered class) on a heading node. This would let downstream tooling represent unnumbered sections faithfully while keeping them in the document/TOC.

Why it matters

This surfaced converting QuantEcon/book-dp2 from LaTeX. Each chapter's \section*{Summary} and the run-in \paragraph headings are unnumbered in the source/PDF, but in the MyST build they pick up section numbers (e.g. "Summary" numbered §1.5, pushing "Chapter Notes" to §1.6; a \paragraph carrying a full multi-level number like §8.3.1.2.1). With no per-heading opt-out, the only faithful alternatives both lose information: keep the heading and accept a wrong number, or demote it to bold run-in text and lose the TOC entry and anchor.

Happy to provide a minimal reproducing project if useful.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions