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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions