# What renders

The converter's markdown dialect: CommonMark plus the GitHub extensions people actually use, typeset natively.

Page: https://legivel.com/docs/markdown

The dialect supports CommonMark and GitHub extensions, with paragraph-wide line breaking and font shaping. Automatic hyphenation uses your document language. Every feature below has a runnable [example](https://legivel.com/examples) you can download as-is or open in the editor.

## Blocks

- Headings `#` through `######` plus setext (`===`/`---`), auto-bookmarked in the PDF outline.
- Paragraphs with typographic quotes, dashes, and ellipsis (opt-out: `smart_typography`) and hard line breaks (two trailing spaces or a backslash).
- Blockquotes with nesting, including GitHub alert syntax (`> [!NOTE]`, `[!TIP]`, `[!IMPORTANT]`, `[!WARNING]`, `[!CAUTION]`).
- Fenced code blocks with syntax highlighting for fourteen languages, among them c, json, bash, python, javascript, rust, swift, go, java, html, css, sql, yaml, toml.
- Lists: bullets (two-space nesting), ordered (auto-renumbered), task lists (`- [ ]`/`- [x]` → clickable PDF checkboxes), definition lists.
- Tables with column alignment (`|:---:|`) and headers that repeat across page breaks.
- Horizontal rules (`---`).
- YAML front matter, stripped from the body and mapped to PDF document metadata (`title:`, `author:`). `theme: dark` or `theme: light` sets the page theme for every render of the document.

## Inline

- **Bold**, *italic*, `code`, strikethrough, ==highlight==, kbd, sup, sub; they nest freely.
- Links: inline `[text](url)`, reference `[text][label]`, autolinks `<https://…>`. Internal anchors (`[text](#heading)`) become real PDF GoTo jumps.
- Footnotes: `[^1]` references collect as numbered footnotes at the end of the document.
- Emoji: color emoji from a bundled COLR font, plus `:rocket:`-style shortcodes for ~140 common names (opt-out: `emoji`).
- Images: base64 data-URI `![alt](data:image/png;base64,…)` render inline (opt-out: `images`). Images linked from the web are loaded for signed-in accounts with documents left, each time you convert, and never stored; see [how we load images](https://legivel.com/fetcher).
- Minimal inline HTML: `<b> <i> <u> <s> <sup> <sub> <kbd> <mark> <br>`.

## Math

Math is written in LaTeX notation and typeset natively, as vector glyphs: `$…$` inline and `$…$` on its own line (opt-out: `math`). Fractions, radicals, sums and integrals, matrices (`pmatrix`, `bmatrix`, `vmatrix`), piecewise `cases`, `aligned` derivations, arrays, delimiters that grow to fit, and braces over and under terms. Formulas work in headings, lists, tables, quotes and footnotes; see the [math examples](https://legivel.com/examples/latex-math).

## Diagrams and charts

````mermaid` fences render as native vector drawings where they are written, scaled into the text column. The first line of the fence selects one of 33 kinds:

- Flow and structure: `flowchart`, `swimlane`, `block`, `architecture`, `agentflow`.
- Software: `sequenceDiagram`, `zenuml`, `classDiagram`, `stateDiagram`, `erDiagram`, `C4Context`, `requirementDiagram`, `packet`, `gitGraph`, `usecase`, `eventmodeling`, `railroad`.
- Planning and analysis: `gantt`, `timeline`, `journey`, `kanban`, `mindmap`, `treeView`, `ishikawa`, `cynefin`, `wardley`.
- Charts: `pie`, `xychart`, `quadrantChart`, `radar`, `sankey`, `treemap`, `venn`.

`graph` is the same as `flowchart`; the C4 family also takes `C4Container`, `C4Component`, `C4Dynamic` and `C4Deployment`; railroad diagrams take a grammar in ABNF, EBNF or PEG (`railroad-abnf`, `railroad-ebnf`, `railroad-peg`). A fence that does not parse prints as a code block, so a typo never breaks the document. With `mermaid` off, every fence prints as code.

Diagram pages are opt-in (`mermaid_appendix`). Each diagram then gets a **page of its own** after the document body, an A size from A4 to A0, landscape or portrait, whichever fits it at natural scale. In the text the fence leaves a link (`Diagram 3: Pipeline Overview →`); the page is captioned with a link back to that spot, and each diagram is a bookmark in the PDF outline. A diagram without a title is named after its kind. This keeps a very wide flowchart readable instead of squeezing it into the text column. See the [diagram](https://legivel.com/examples/mermaid-diagrams) and [chart](https://legivel.com/examples/mermaid-charts) examples.

## Barcodes and QR codes

A ````barcode` fence becomes a native vector barcode (opt-out: `barcode`). The body is `key: value` lines; `type` and `data` are required.

````markdown
```barcode
type: qr
data: https://example.com/menu
module-shape: rounded
ec: H
width: 220
```
````

21 types: QR, Micro QR, rectangular Micro QR, EAN-13, EAN-8, UPC-A, UPC-E, Code 128 (GS1-128 with `gs1: true`), Code 39, Code 93, Codabar, ITF, ITF-14, MSI, GS1 DataBar (omnidirectional, limited, expanded), Data Matrix, PDF417, Aztec and MaxiCode. QR codes take module and corner shapes, colors, gradients, a logo and the error-correction level; linear codes take label position, text, colors and size. An option a type cannot use is ignored with a warning; data the type rejects prints as a code block with the reason. See the [barcode examples](https://legivel.com/examples/barcodes-qr-codes).

## SVG graphics

A ````svg` fence renders as native vector art (opt-out: `svg`). The body is a full SVG document, bare path data that takes the text color, or `key: value` lines (`d`, `fill`, `stroke`, `stroke-width`, `width`, …). Gradients, clip paths, markers, `<use>` symbols and text on a path are drawn. A body that is not valid SVG prints as a code block. See the [SVG examples](https://legivel.com/examples/svg-graphics).

## Typography

Lines are broken across the whole paragraph, not one line at a time, so the spacing stays even. Mixed-direction scripts, such as Hebrew and Arabic, and Japanese and Chinese line breaking are supported. Fonts cover Latin, Greek, Cyrillic, Devanagari, Chinese, Japanese, Korean, Arabic, Hebrew, Thai, Khmer, Myanmar, Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Telugu, Kannada, Malayalam, Georgian, Armenian, Ethiopic, Coptic and color emoji. Chinese takes simplified shapes for a `zh-CN` document and traditional shapes for a `zh-TW` one; without a Chinese language, characters shared with Japanese take Japanese shapes. Choose light or dark pages with the editor's theme control, or with `theme:` in front matter, which wins over the control.

## Language and hyphenation

Automatic hyphenation is enabled by default. It works only when a document language is specified and matching language rules are available. Without a language, words wrap as before, without automatic hyphenation. Language is never guessed from the text or your browser settings.

Set `language` in the JSON render request or in Markdown front matter. Use a language tag such as `en-US`, `en-GB`, `de` or `ro`. The editor's output settings provide the same controls.

```yaml
---
language: en-GB
hyphenation: true
---

Your document starts here.
```

To disable automatic hyphenation, set `features.hyphenation` to `false` in JSON, or `hyphenation: false` in front matter. Existing hyphens and author-inserted soft hyphens remain available. Code and literal URLs are excluded from automatic hyphenation.

```json
{
  "markdown": "# Report\n\nYour document starts here.",
  "language": "en-GB",
  "features": { "hyphenation": false }
}
```

Each explicit request setting overrides its front-matter value. An omitted setting uses front matter, then the default. An unsupported language leaves automatic hyphenation inactive when the setting is omitted. Explicitly enabling it for an unsupported language returns `400 invalid_request`. A missing language always leaves automatic hyphenation inactive.

Supported hyphenation language tags

Tags are case-insensitive. Use a listed tag or alias; other regional variants do not automatically select a dictionary.

`af, as, be, bg, ca, cop, cs, cu, cy, da, de-1901, de-1996, de-CH-1901, el-monoton, el-polyton, en-GB, en-US, eo, es, et, eu, fi-x-school, fi, fr, fur, ga, gl, grc, gu, hr, hsb, hu, hy, ia, id, is, it, ka, kmr, kn, la-x-classic, la-x-liturgic, la, lt, lv, mk, ml, mn-Cyrl, mr, mul-Ethi, nl, nn, oc, or, pa, pi, pl, pms, pt, rm, ro, ru, sa, sh-Cyrl, sh-Latn, sk, sl, sq, sr-Cyrl, sv, ta, te, th, tk, tr, uk, zh-Latn-pinyin`

Aliases: `en` uses `en-US`; `en-UK` uses `en-GB`; `de`, `de-DE` and `de-AT` use `de-1996`. `fr-FR` and `fr-CA` use `fr`; `es-ES` and `es-MX` use `es`; `pt-PT` and `pt-BR` use `pt`. `ro-RO`, `ru-RU` and `uk-UA` use `ro`, `ru` and `uk` respectively.

Try any of it in the [editor](https://legivel.com/markdown-to-pdf), or start from an [example](https://legivel.com/examples).
