rumdl 0.2.62

A fast Markdown linter written in Rust (Ru(st) MarkDown Linter)
Documentation
# MD026 - Keep headings clean and professional

Aliases: `no-trailing-punctuation`

## What this rule does

Removes trailing punctuation from the end of headings to maintain a clean, professional appearance. Question marks are allowed by default for FAQ-style headings.

## Why this matters

- **Professional appearance**: Clean headings look more polished and professional
- **Better readability**: Unnecessary punctuation can distract readers
- **Consistent style**: Maintains a uniform look throughout your document
- **Navigation clarity**: Clean headings work better in tables of contents and outlines

## Examples

### ✅ Correct

```markdown
# Introduction

## What is Markdown?

### FAQ: Frequently Asked Questions

#### Step 1: Getting Started

##### Chapter 2: Configuration
```

### ❌ Incorrect

<!-- rumdl-disable MD026 -->

```markdown
# This is a sentence.

## Random heading;

### This seems wrong,

#### Important!

##### Ending with colon:
```

<!-- rumdl-enable MD026 -->

### 🔧 Fixed

```markdown
# This is a sentence

## Random heading

### This seems wrong

#### Important

##### Ending with colon
```

## Configuration

```toml
[MD026]
punctuation = ".,;:!"  # Characters to remove from heading endings (default: ".,;:!")
```

To allow exclamation marks in headings, remove `!` from the list:

```toml
[MD026]
punctuation = ".,;:"
```

## Automatic fixes

This rule will:

- Remove periods, commas, semicolons, colons, and exclamation marks from heading endings (default: `.,;:!`)
- Preserve question marks for FAQ-style headings ("What is Markdown?")
- You can customize the punctuation list if you want to allow certain characters

## Markdown with Gherkin

Under the `mdg` flavor, the ASCII colon leaves the `punctuation` set, whether it
arrived from the default or from an explicit configuration. A Gherkin structure
is an ATX heading spelled `Keyword: name`, so the colon after the keyword is
what makes the keyword a keyword, and this rule must never be able to delete it.

Because MD026 matches punctuation only at the very end of a heading, dropping
the colon from the set is complete: no heading whose last character is a colon
is inspected at all, so `## Scenario!:` is left exactly as written. Only the
ASCII colon leaves the set — a full-width `:` carries no structural meaning, so
a `punctuation` value that lists one keeps enforcing it.

When MD026 reaches relevant content with an explicit `punctuation` value
containing a colon, it prints one `[config warning]` line on stderr; the colon
is dropped either way.

See [Markdown with Gherkin Flavor](flavors/mdg.md) for the full flavor
specification.

## Learn more

- [CommonMark Spec: ATX headings]https://spec.commonmark.org/0.31.2/#atx-headings
- [CommonMark Spec: Setext headings]https://spec.commonmark.org/0.31.2/#setext-headings

## Related rules

- [MD001 - Keep heading levels organized]md001.md
- [MD003 - Use consistent heading styles]md003.md
- [MD025 - Keep your document organized with one main title]md025.md