这是一份用来检验 Yggdrasil 渲染管线的综合性文章:每一节对应站点的一项写作能力,包括排版、提示块、表格、多语言代码高亮、可在浏览器里运行的代码、KaTeX 与化学公式、二十余种 Mermaid 图表、脚注、图片灯箱和折叠内容。页面里任何一处显示异常,都说明对应环节出了回归。
一、标题层级
页面标题已经占用 H1,正文从 H2 开始,目录和锚点由系统自动生成。下面依次展开 H3 到 H6。
三级标题 H3
四级标题 H4
五级标题 H5
六级标题 H6
二、行内样式
粗体、斜体、粗斜体、删除线,也可以嵌套 斜体 使用。行内代码:运行 make dev 启动开发服务器,用 cargo build --release 构建发布版。
部分行内 HTML 会保留下来:快捷键 Ctrl + K 打开搜索,高亮标记用来强调,下划线、新增、删除,化学式 H2O 与 CO2,面积单位 m2,以及 漢字 这样的注音。
行尾加两个空格可以强制换行,
这一行就是换行之后的内容。
三、提示块与引用
GitHub 风格的五种提示块都有各自的配色与图标:
补充说明:读者即使略读,也不会错过这里的信息。
小技巧:
make dev-assets可以在不重启服务器的情况下刷新前端资源。
关键信息:
server与hydrate两个 feature 互斥,不要同时启用。
风险提示:运行器镜像升级前,先确认旧容器已经退出。
危险操作:
DROP TABLE之后数据无法恢复。
普通引用块可以包含强调、链接与行内代码,也可以嵌套:
这是一级引用,里面有 粗体、
行内代码和 链接。这是嵌套的二级引用。
引用里同样可以放列表和代码:
- 第一项
- 第二项
let answer = 42;
四、列表
无序与有序列表
- 第一项
- 第二项
- 嵌套项 2.1
- 嵌套项 2.2
- 更深一层 2.2.1
- 第三项
- 克隆仓库
- 安装依赖
- 安装 Rust 工具链
- 安装 Bun 与 cargo-leptos
- 启动服务
任务列表
- 配置 Rust 工具链
- 准备 PostgreSQL
-
运行
make dev - 编写单元测试
- 部署到生产环境
五、表格
对齐方式
| 左对齐 | 居中对齐 | 右对齐 |
|---|---|---|
| Left | Center | Right |
| 第二行 | 第二行 | 123.45 |
| 第三行 | 第三行 | 6.7 |
单元格里的行内元素
| 功能 | 渲染位置 | 示例 |
|---|---|---|
| 代码高亮 | 服务端(syntect) | fn main() {} |
| 数学公式 | 服务端(KaTeX) | |
| 脚注 | 服务端 | 见此处1 |
| Mermaid | 浏览器,进入视口时懒加载 | 二十余种图表 |
| 可运行代码 | 服务端 Docker 沙箱 | 运行器 |
六、代码高亮
服务端用 syntect 着色,页面不需要额外的高亮脚本,每个代码块右上角带复制按钮。没有语言标记的围栏按纯文本显示。
系统与后端语言
use HashMap;
package main
const std = @import("std");
pub fn main() void {
std.debug.print("Hello, !\n", .{"Zig"});
}
:
:
=
return 移动端与前端语言
data
{
listOf(User(, 30), User(, 25))
.filter
.forEach
}struct Greeting {
let message: String
func say(to name: String) -> String {
}
}
print(Greeting(message: ).say(to: ))interface Todo {
id: number;
title: string;
done: boolean;
}
const toggle = (todo: Todo): Todo => ({ ...todo, done: !todo.done });import { useState } from "react";
export function Counter() {
const [count, setCount] = useState(0);
return
Hello
你好,世界
}
{
}
}配置、数据与脚本
services:
app:
image: yggdrasil:latest
environment:
DATABASE_URL: postgres://user:pass@db:5432/yggdrasil
ports:
- "8080:8080"SELECT t.name, COUNT(*) AS posts
FROM tags t
JOIN post_tags pt ON pt.tag_id = t.id
GROUP BY t.name
ORDER BY posts DESC
LIMIT 10;# 构建并部署
- let timeout = 5;
+ let timeout = 10;
run(timeout);
fn uv: vec2<f32>) -> (0) vec4<f32> {
return vec4<f32>(uv, 0.5, 1.0);
}没有语言标记的代码块,
按纯文本显示,不做语法高亮。七、数学公式
公式由 KaTeX 在服务端渲染成 HTML,页面不依赖 MathML,也不需要额外的脚本。
行内公式
质能方程 ,欧拉恒等式 ,黄金比例 ,排序算法的时间复杂度 。
块级公式
对齐与矩阵
项目内置的物理与集合宏
数集:、、、、。微积分:、、、、。向量与范数:、、、。
量子力学记号:、、内积 、期望 。
化学式与单位
行内化学式 、,温度 ,浓度 。
标题中的公式
勾股定理
标题和目录里的公式也应该正常渲染。
八、Mermaid 图表
站点在浏览器里渲染 Mermaid,进入视口时才加载渲染器,自动适配明暗主题,点击图表可以放大、缩放和平移。下面按用途分组展示。
流程图
时序图
类图
状态图
实体关系图
甘特图与时间线
Git 分支图
思维导图
数据图表
Mermaid 的桑基图词法只接受 ASCII 节点名,写中文节点会解析失败,上图因此使用英文标签。
用户旅程与看板
架构与块图
浏览器
服务端
数据库
路由
渲染
缓存
浏览器
服务端
数据库
路由
渲染
缓存
需求图与 C4 上下文图
需求图的元素名与关系只能用 ASCII 标识符,中文放进带引号的 text 与 type 里。
<<satisfies>>
<<contains>>
<<Requirement>>
runnable_code
ID: 1
Text: 阅读器可以执行代码块
Risk: High
Verification: Test
<<Functional Requirement>>
limits
ID: 1.1
Text: 限制 CPU、内存与超时
Risk: Medium
Verification: Inspection
<<Element>>
sandbox
Type: Docker 容器
<<satisfies>>
<<contains>>
<<Requirement>>
runnable_code
ID: 1
Text: 阅读器可以执行代码块
Risk: High
Verification: Test
<<Functional Requirement>>
limits
ID: 1.1
Text: 限制 CPU、内存与超时
Risk: Medium
Verification: Inspection
<<Element>>
sandbox
Type: Docker 容器
其他图表
九、脚注
正文里可以引用 PostgreSQL2,也可以引用渲染管线用到的 pulldown-cmark3。同一条脚注可以被引用多次2,每次引用在定义末尾都有对应的返回链接。
脚注的标签可以含空格4,也可以写成多段,续段缩进四个空格5。
十、链接与图片
链接
- 行内链接:Leptos 官网
- 带标题的链接:pulldown-cmark
- 自动链接:https://github.com/VOD-Studio/yggdrasil
- 站内链接:回到文章列表
- 页内锚点:跳到可运行代码块
图片与灯箱
图片带模糊占位与延迟加载,点击进入灯箱,可以缩放和拖动。






十一、可运行代码块
在围栏语言后加 runnable,阅读器就会在代码块下方挂出运行器:代码在服务端的 Docker 沙箱里执行,只读文件系统、无网络,输出以流的形式显示在终端里。每个示例都是独立的单文件程序。
Python
预期输出:the: 3、quick: 1、brown: 1。
Node.js
围栏末尾可以追加紧凑的 JSON 来调整资源,五个字段必须写全,且不能含空白:
预期输出:fib(90) = 2880067194370816120 与 1, 4, 9, 16。
TypeScript(Bun)
预期输出:5。
Go
预期输出:[0 1 4 9 16]。
Rust
预期输出:go: 2、python: 1、rust: 3。
运行器不提供标准输入,也不开放网络。需要联网或读取本地文件的示例,请用不带
runnable的普通代码块展示。
十二、折叠内容
点击展开:推导 1 + 2 + … + n
把求和式倒序再写一遍,两式相加,每一列的和都是 ,一共 列:
折叠区域里可以继续使用 Markdown、行内代码,也可以放代码块:
# 5050点击展开:参考答案
答案是 42。
十三、分割线与转义
上方文字
中间文字
下方文字
以下字符前加反斜杠可以原样输出:* 星号、_ 下划线、` 反引号、# 井号、[ 方括号 ]、\ 反斜杠、$ 美元符号。
十四、Unicode 与多语言
- 中文:世界,你好!
- 日本語:こんにちは世界
- 한국어:안녕하세요 세계
- العربية:مرحبا بالعالم
- Русский:Привет, мир
- Emoji:🚀 🦀 🌳 ✨ 📝 🔥
十五、混合排版压力测试
- 引用 + 有序列表 + 强调
- 同时包含
行内代码与链接。
下面这段同时出现公式 、inline code、强调、超链接和脚注6:
Markdown 源码
解析
HTML
KaTeX 公式
syntect 高亮
Mermaid 占位
HTML 清理
SSR 缓存
客户端水合
Mermaid 懒加载渲染
Markdown 源码
解析
HTML
KaTeX 公式
syntect 高亮
Mermaid 占位
HTML 清理
SSR 缓存
客户端水合
Mermaid 懒加载渲染
测试结束:如果以上内容都渲染正确,说明 Markdown 管线工作正常。
评论
按时间排序