Markdown Support

Accent CMS renders CommonMark markdown with several GFM (GitHub Flavored Markdown) extensions enabled. This page is a complete reference of every supported construct.

CommonMark Baseline

These are the core markdown constructs available in all content pages.

Headings

ATX-style headings use # prefixes:

# Heading 1
## Heading 2
### Heading 3
#### Heading 4
##### Heading 5
###### Heading 6

Closing hashes are optional and ignored: ## Title ## renders the same as ## Title.

Setext-style headings use underlines:

Heading 1
=========

Heading 2
---------

All headings automatically receive anchor IDs based on their text content for deep linking.

Paragraphs

Consecutive lines of text form a single paragraph. Separate paragraphs with a blank line:

First paragraph text.

Second paragraph text.

Text Formatting

SyntaxRenders as
*italic* or _italic_italic
**bold** or __bold__bold
***bold italic***bold italic
`inline code`inline code
~~strikethrough~~strikethrough

Inline links:

[Link text](https://example.com)
[Link with title](https://example.com "Title text")

Reference links:

[Link text][ref-id]

[ref-id]: https://example.com

Autolinks:

<https://example.com>

Renders as a clickable link with the URL as the link text.

Images

![Alt text](/path/to/image.jpg)
![Alt text](/path/to/image.jpg "Optional title")

Lists

Unordered lists use -, *, or +:

- Item one
- Item two
  - Nested item
  - Another nested item
- Item three

Ordered lists use numbers followed by a period:

1. First item
2. Second item
3. Third item

Ordered lists can start at any number:

3. Starts at three
4. Continues from there

This produces <ol start="3">.

Nested lists are created by indenting with two or more spaces:

- Parent item
  - Child item
    - Grandchild item
- Another parent

Blockquotes

> This is a blockquote.
>
> It can span multiple paragraphs.

Blockquotes can be nested:

> Outer quote
> > Inner quote
> > > Deeply nested

Code Blocks

Fenced code blocks use triple backticks with an optional language identifier:

```rust
fn main() {
    println!("Hello, world!");
}
```

The language identifier sets a class="language-rust" attribute on the output, which is used for syntax highlighting.

Indented code blocks use four spaces of indentation:

    fn main() {
        println!("Hello!");
    }

Horizontal Rules

Any of these produce a horizontal rule:

---
***
___

Line Breaks

Hard break – two trailing spaces at the end of a line force a line break (<br />):

First line
Second line

Soft break – a single newline within a paragraph does not produce a <br />. The text flows together.

Backslash Escapes

Use a backslash to render literal characters that would otherwise be interpreted as markdown:

\*not italic\*
\# not a heading
\[not a link\]

Raw HTML

Inline and block HTML is passed through to the output:

This has <span style="color: red">red text</span> in it.

<div class="custom">
  Block-level HTML is also preserved.
</div>

GFM Extensions

Accent CMS enables these GitHub Flavored Markdown extensions.

Tables

Tables use pipes and hyphens:

| Header 1 | Header 2 | Header 3 |
|----------|----------|----------|
| Cell 1   | Cell 2   | Cell 3   |
| Cell 4   | Cell 5   | Cell 6   |

Column alignment is controlled by colons in the separator row:

| Left     | Center   | Right    |
|:---------|:--------:|---------:|
| left     | center   | right    |
  • :--- aligns left
  • :---: aligns center
  • ---: aligns right

Tables support inline formatting within cells (bold, italic, code, links). Literal pipes inside code spans (`a|b`) are handled correctly.

Strikethrough

Wrap text in double tildes:

~~deleted text~~

Renders as: deleted text

Single tildes (~text~) produce subscript by default (not strikethrough); double tildes (~~text~~) produce strikethrough.

Task Lists

- [ ] Unchecked item
- [x] Checked item
- [ ] Another unchecked item

Produces checkboxes (disabled by default). Regular list items without [ ] or [x] are unaffected.

Footnotes

Reference a footnote in text and define it elsewhere:

This claim needs a source[^1].

Another point[^note].

[^1]: Source citation here.
[^note]: Footnotes can have any label.

Footnotes are collected and rendered as a section at the end of the page with back-references.

Heading Attributes

Custom IDs and classes can be added to headings:

# Title {#custom-id}
## Section {.highlight}
### Both {#my-id .my-class}
## Multiple Classes {.a .b}

This produces <h1 id="custom-id">, <h2 class="highlight">, etc. Custom IDs override the auto-generated anchor ID.

Additional Extensions

Smart punctuation, math, definition lists, superscript, subscript, and wikilinks are all enabled by default, alongside footnotes, task lists, heading attributes, admonitions, and metadata blocks. Each is individually toggleable via the markdown: block in config.yaml. See the Markdown Extensions guide for the full syntax and configuration of each extension.

Edge Cases

  • Empty input produces empty output
  • Unicode is fully preserved in headings, paragraphs, and all constructs
  • Deeply nested blockquotes and lists are supported without depth limits
  • Long headings render correctly regardless of length
  • Special characters in URLs (e.g., %20) are preserved as-is in link href attributes