mdbook-numbering
A mdBook preprocessor that adds numbering.
- Adds numbers prior to chapter titles.
- Configurable numbering formats (e.g., "1.", "1.1.", "I.", "A.", etc.).
- Adds numbers to lines in code blocks.
Configuration
Add the following to your book.toml:
[]
Then configure as needed (see NumberingConfig for details), for example:
[]
[] # Configuration for heading numbering
= true
= "consecutive" # "consecutive" or "top"
[] # Configuration for code block line numbering
= true
Or if you don't like the flattened style, which also occupies more lines, you can also write it like this:
[]
= { = true, = "consecutive" }
= { = true }
Configuration Details
heading: Configuration for heading numbering.enable: Whether to enable heading numbering. Default istrue.numbering-style: The numbering style for headings. Can be either"consecutive"or"top". Default is"consecutive"."consecutive": Top-level headings should have consistent numbering with their chapter numbers. For example:- If a chapter is numbered
2, its top-level heading should be# Title(<h1>in HTML). - If a chapter is numbered
2.3, its top-level heading should be## Title(<h2>in HTML).
- If a chapter is numbered
"top": Top-level headings should always be in the form of# Title(<h1>in HTML).
code: Configuration for code block line numbering.enable: Whether to enable line numbering for code blocks. Default istrue.
pulldown-cmark Features
There are several optional features of pulldown-cmark (via Options) that can be enabled via flags. Some features conflicting with mdbook are disabled currently.
| Feature | Flag | Enabled |
|---|---|---|
ENABLE_TABLES |
1 << 1 |
✅ |
ENABLE_FOOTNOTES |
1 << 2 |
✅ |
ENABLE_STRIKETHROUGH |
1 << 3 |
✅ |
ENABLE_TASKLISTS |
1 << 4 |
✅ |
ENABLE_SMART_PUNCTUATION |
1 << 5 |
|
ENABLE_HEADING_ATTRIBUTES |
1 << 6 |
✅ |
ENABLE_YAML_STYLE_METADATA_BLOCKS |
1 << 7 |
|
ENABLE_PLUSES_DELIMITED_METADATA_BLOCKS |
1 << 8 |
|
ENABLE_OLD_FOOTNOTES |
(1 << 9) | (1 << 2) |
|
ENABLE_MATH |
1 << 10 |
✅ |
ENABLE_GFM |
1 << 11 |
✅ |
ENABLE_DEFINITION_LIST |
1 << 12 |
✅ |
ENABLE_SUPERSCRIPT |
1 << 13 |
✅ |
ENABLE_SUBSCRIPT |
1 << 14 |
✅ |
ENABLE_WIKILINKS |
1 << 15 |
These options must be enabled, otherwise some features of mdbook may not work as expected. See pulldown-cmark-to-cmark/#106 for more details.
For example:
- If
ENABLE_TABLESis not enabled, tables in markdown files will not be rendered correctly. - If
ENABLE_MATHis not enabled,katexpreprocessor will not work correctly.
Updates
0.5.0
-
Wrap heading numbers in a
<span>element with classnumberingandheadingfor easier styling. -
Store heading numbers in a
data-numberingattribute of headings for easier access via JavaScript or CSS. -
Hide sections that are automatically added by
mdbookwhen there is no<h1>heading in a chapter, if heading numbering is enabled andheading.numbering-styleis set toconsecutive.This is done by setting
display: noneto headings without adata-numberingattribute via CSS. So if you want to keep those sections visible or have other automatically generated headings, you can add adata-numberingattribute to them or override the CSS.
0.4.1
- Fix a bug when there are inline code or inline formulas in chapter titles.
- Show a warning if a heading level is above the chapter level when
heading.numbering-styleis set toconsecutive.
0.4.0
- Support more
mdbookfeatures by enabling morepulldown-cmarkoptions.
0.3.1
- Fix misleading configuration examples in
README.md.
0.3.0
- Update to support
mdbookversion 0.5.0 and above. - Improve warning messages for better clarity.
- No longer skip chapters without chapter numbers when other features are enabled.
- Improve performance when popping heading levels.
0.2.1
- Show a warning if this preprocessor is not set to run after
katexpreprocessor whenkatexis used. - Minor code cleanup and documentation improvements.
- Minify the JavaScript file and the CSS file before including them in the preprocessed markdown.
0.2.0
- Added support for adding line numbers to code blocks using
highlightjs-line-numbers.js.
0.1.0
- Initial release with support for adding numbers to chapter titles.
Compatibility
mdBook Version
This preprocessor is compatible with mdbook version 0.5.0 and above.
| mdbook-numbering version | mdBook Version |
|---|---|
| 0.1.0, 0.2.0+ | 0.4.37+ |
| 0.3.0+, 0.4.0+, 0.5.0+ | 0.5.0+ |
Note
-
Using
highlightjs-line-numbers.jsto add line numbers to code blocks in the rendered HTML. The license ofhighlightjs-line-numbers.jsis MIT License, and is copied to src/highlightjs/LICENSE.Some modifications have been made to the original code to fit into this project.