---
name: vitepress-markdown
description: Markdown extensions including frontmatter, custom containers, tables, anchors, and file includes
---
# Markdown Extensions
VitePress extends standard markdown with additional features for documentation.
## Frontmatter
YAML metadata at the top of markdown files:
```md
---
title: Page Title
description: Page description for SEO
layout: doc
outline: [2, 3]
---
# Content starts here
```
Access frontmatter in templates:
```md
# {{ $frontmatter.title }}
```
Or in script:
```vue
```
## Custom Containers
Styled callout blocks:
```md
::: info
This is an info box.
:::
::: tip
This is a tip.
:::
::: warning
This is a warning.
:::
::: danger
This is a dangerous warning.
:::
::: details Click to expand
Hidden content here.
:::
```
Custom titles:
```md
::: danger STOP
Do not proceed!
:::
::: details Click me {open}
Open by default with {open} attribute.
:::
```
## GitHub-flavored Alerts
Alternative syntax using blockquotes:
```md
> [!NOTE]
> Highlights information users should know.
> [!TIP]
> Optional information for success.
> [!WARNING]
> Critical content requiring attention.
> [!CAUTION]
> Negative potential consequences.
```
## Header Anchors
Headers get automatic anchor links. Custom anchors:
```md
# My Heading {#custom-anchor}
[Link to heading](#custom-anchor)
```
## Table of Contents
Generate a TOC with:
```md
[[toc]]
```
## GitHub-Style Tables
```md
| Feature | Status |
|---------|--------|
| SSR | ✅ |
| HMR | ✅ |
```
## Emoji
Use shortcodes:
```md
:tada: :rocket: :100:
```
## File Includes
Include content from other files:
```md
```
With line ranges:
```md
```
With regions:
```md
Usage content here
```
## Code Snippet Import
Import code from files:
```md
<<< @/snippets/example.js
```
With line highlighting:
```md
<<< @/snippets/example.js{2,4-6}
```
With language override:
```md
<<< @/snippets/example.cs{1,2 c#:line-numbers}
```
Import specific region:
```md
<<< @/snippets/example.js#regionName{1,2}
```
## Code Groups
Tab groups for code variants:
````md
::: code-group
```js [config.js]
export default { /* ... */ }
```
```ts [config.ts]
export default defineConfig({ /* ... */ })
```
:::
````
Import files in code groups:
```md
::: code-group
<<< @/snippets/config.js
<<< @/snippets/config.ts
:::
```
## Math Equations
Requires setup:
```bash
npm add -D markdown-it-mathjax3@^4
```
```ts
// .vitepress/config.ts
export default {
markdown: {
math: true
}
}
```
Then use LaTeX:
```md
Inline: $E = mc^2$
Block:
$$
\frac{-b \pm \sqrt{b^2-4ac}}{2a}
$$
```
## Image Lazy Loading
```ts
export default {
markdown: {
image: {
lazyLoading: true
}
}
}
```
## Raw Container
Prevent VitePress style conflicts:
```md
::: raw
:::
```
## Key Points
- Frontmatter supports YAML or JSON format
- Custom containers support info, tip, warning, danger, details
- `[[toc]]` generates table of contents
- `@` in imports refers to source root (or `srcDir` if configured)
- Code groups create tabbed code blocks
- Math support requires markdown-it-mathjax3 package