这一页是写给自己的备忘录:需要哪种排版,直接从这里复制写法。文中所有示例都是真实渲染的,不是截图。
标题层级
正文用 ## 起步比较合适——文章标题本身已经占掉了最高一级。
三级标题
四级标题
标题会自动生成锚点,鼠标悬停时右侧出现 #,侧栏目录也会按层级同步展开。
文本与强调
加粗、斜体、删除线、行内代码、普通链接、上标式写法如 H2O 与 x^2^(部分语法取决于渲染器,不保证全部生效)。
需要打断行时,行尾两个空格即可,例如这一行结尾有两个空格,
所以这一句出现在了新的一行。
列表
无序列表:
- 第一项
- 第二项
- 嵌套一层
- 再嵌套一层
- 第三项
有序列表:
- 收集素材
- 写出草稿
- 通读一遍并删掉三分之一
任务列表(GitHub 风格):
- 建好目录结构
- 接入搜索
- 补齐示例内容
- 换个自己的域名
引用
引用适合放别人的观点、规范原文或需要特别强调的一段话。
引用内部同样支持行内样式与列表:
- 一个要点
- 另一个要点
表格
| 列名 | 类型 | 说明 |
|---|---|---|
title | 字符串 | 左对齐是默认值 |
pinned | 布尔 | 居中对齐 |
published | 日期 | 右对齐 |
表格支持对齐语法(:---、:---:、---:),单元格里可以用行内代码与链接。
代码块
多语言示例
1// JavaScript:把文章按发布时间倒序排列2export function sortByPublished(posts) {3 return [...posts].sort((a, b) => new Date(b.published) - new Date(a.published));4}1// TypeScript:给内容集合的字段加上类型2interface PostFrontmatter {3 title: string;4 published: Date;5 tags: string[];6 pinned?: boolean;7}8
9export function isPinned(post: PostFrontmatter): boolean {10 return post.pinned === true;11}1# Python:粗略统计每个标签出现的次数2from collections import Counter3
4def tag_cloud(posts):5 counter = Counter(tag for post in posts for tag in post["tags"])6 return counter.most_common(10)1{2 "title": "示例条目",3 "tags": ["Markdown", "排版"],4 "visible": true5}1/* CSS:给引用块加一条左侧色带 */2blockquote {3 border-inline-start: 3px solid var(--primary);4 padding-inline-start: 1rem;5}1# 构建并在本地预览产物2npm run build3npm run preview标题、行号与文本高亮
给代码块加上 title 会显示文件名栏,showLineNumbers=true 打开行号,ins / del / mark 可以标记新增、删除与重点行:
1```js title="sort-posts.js" showLineNumbers=true ins={4} del={2} mark={6}2```渲染效果如下:
1function sortPosts(posts) {2 return posts.sort((a, b) => a.date - b.date);3 const items = [...posts];4 return items.sort((a, b) => new Date(b.published) - new Date(a.published));5 // 下面这一行是这次改动的重点6 console.log("排序完成", items.length);7}可折叠代码段
内容很长的代码块可以折叠起来,读者点一下「展开」再看细节。语法是在代码块信息串里写 collapse={起始行-结束行}:
1```ts collapse={2-6}2```实际效果:
1export const siteMeta = {5 collapsed lines
2 name: "younisekai",3 version: "1.0.0",4 generator: "Astro",5 search: "pagefind",6 comments: false,7};8
9export function describe() {10 return `${siteMeta.name} v${siteMeta.version}`;11}脚注
链接与图片
行内链接:Astro 官方文档、Pagefind 搜索。
图片可以直接引用 public 目录下的占位图:
也可以引用与文章放在一起的图片,写法是 ./路径(相对于当前 Markdown 文件):

Tip相对路径(
./xxx.png)适合会跟着文章一起搬家的素材;public目录下的绝对路径(/assets/...)适合全站复用的封面与头像。注意相对路径引用的是图片文件本身,构建时会被一并处理;一旦路径写错,构建会直接报ImageNotFound而不是静默跳过。
GitHub 仓库卡片
写一行指令就能得到一张会实时拉取数据的仓库卡片:
1::github{repo="withastro/astro"}Note卡片里的 star 数、协议、语言等信息由访客浏览器现场请求 GitHub API 获取,所以第一次打开时会短暂显示「Waiting…」。仓库名必须写成
作者/仓库的格式。
提示框
五种类型
Notenote:需要读者留意、但即使跳读也不该错过的信息。
Tiptip:能让人少走弯路的可选建议。
Importantimportant:完成某件事所必需的关键信息。
Warningwarning:存在风险、需要立刻注意的内容。
Cautioncaution:某个操作可能带来的负面后果。
如上所示,写法是三个冒号包住一段内容:
1:::note2需要读者留意的信息。3:::自定义标题
在类型后面接方括号即可覆盖默认标题:
这里的标题是我自己写的标题支持中英文与行内样式,正文部分照常支持 Markdown。
1:::note[这里的标题是我自己写的]2标题支持中英文与行内样式。3:::GitHub 风格提示框
习惯 GitHub 写法的话,用引用块加类型标记也可以:
Tip这种写法在 GitHub 上能正确渲染,在本站同样会被识别成提示框。
1> [!TIP]2> 这种写法在本站同样会被识别成提示框。隐藏文本
需要防剧透或者放一点小彩蛋时,用行内指令:
这段内容的结论是
1这段内容的结论是 :spoiler[其实答案就在这里]。组合使用的建议
- 少即是多:一篇文章里提示框超过五个,读者就会开始忽略它们。
- 代码块给语言名:
bash、json、ts这些标记不仅有配色,也让复制按钮与语言角标更准确。 - 长代码折叠:超过 20 行的示例,用
collapse折叠,把注意力留给结论。 - 图片要写替代文本:方括号里的描述对无障碍阅读与 RSS 都很重要,别留空。
语法速查就到这里。图表与公式见图表与数学公式。
Footnotes#
部分信息可能已经过时