这是一份用于测试静态博客生成器 Markdown 渲染能力的综合文件。

1. 标题 (Headings)

以下是所有级别的标题,请检查它们的层级、大小和边距是否符合预期。

H1: 一级标题

H2: 二级标题

H3: 三级标题

H4: 四级标题

H5: 五级标题
H6: 六级标题

另外,这是 H1 和 H2 的备用语法:

H1 备用语法

H2 备用语法

2. 段落与文本格式 (Paragraphs & Text Formatting)

这是一个普通的段落。Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

换行测试: This is the first line and the second line. 这是第一行。 这是第二行。 在 Markdown 源文件中它们是连续的两行,根据 CommonMark 规范,它们应该被渲染为单行。 英文之间的换行符应该被渲染为一个空格,而中文之间的换行符则应该被忽略,不应该存在空格。

如果需要强制换行,可以在行尾使用两个或更多的空格。
就像这样,这是一个强制换行。 或者,您也可以使用 HTML 的 <br> 标签。
这是使用 <br> 标签的换行。

文本样式:

  • 粗体 (Bold) 使用 **双星号**
  • 粗体 (Bold) 使用 __双下划线__
  • 斜体 (Italic) 使用 *单星号*
  • 斜体 (Italic) 使用 _单下划线_
  • 粗斜体 (Bold & Italic)
  • 删除线 (Strikethrough)
  • 行内代码 (Inline Code),例如 const a = 1;
  • 高亮 (Highlight) (这是一个扩展特性,不一定所有渲染器都支持)

3. 列表 (Lists)

无序列表 (Unordered List)

使用 *, +, 或 - 创建。部分 Markdown 渲染器可能会使用不同符号创建的列表有不同的 Bullet 样式。 而有的渲染器只会依据层级来确定 Bullet 样式。

  • 列表项 A
  • 列表项 B
    • 嵌套列表项 B1
      • 更深层的嵌套 B1a
    • 嵌套列表项 B2
  • 列表项 C
  • 列表项 D (使用 +)
  • 列表项 E (使用 -)

有序列表 (Ordered List)

  1. 第一项
  2. 第二项
  3. 第三项
    1. 嵌套的有序列表项 3.1
    2. 嵌套的有序列表项 3.2
  4. 第四项 (即使在源文件中这里是 1.,也应该被渲染为 4.)

任务列表 (Task List / GFM)

这是一个 GitHub Flavored Markdown (GFM) 的扩展特性。

  • 已完成的任务
  • 未完成的任务
  • 待办事项
    • 已完成的子任务
    • 未完成的子任务

5. 图片 (Images)

图片渲染是博客的关键功能。

行内图片: 这是一个占位图的 Alt 文本

引用式图片: 这是引用式图片的 Alt 文本

带链接的图片: 一个可点击的占位图

本地图片: 本地图片

6. 引用块 (Blockquotes)

这是一个引用块。

— 佚名

嵌套引用块:

第二层引用。

第三层引用。

引用块内可以包含其他元素

  • 例如列表项 1
  • 例如列表项 2

代码

console.log("Hello, World!");

7. 代码块 (Code Blocks)

行内代码已经展示过,例如 <div>

下面是围栏代码块 (Fenced Code Block) 并测试语法高亮。

JavaScript 示例:

// main.js
function greet(name) {
  console.log(`Hello, ${name}!`);
}
 
greet('World');

Python 示例:

# script.py
def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)
 
print(factorial(5))

无特定语言的代码块:

这是一个没有指定语言的代码块。
它不应该有任何语法高亮。
Plain text.

8. 水平分隔线 (Horizontal Rules)

可以使用三个或更多的 *, -, 或 _ 来创建。




9. 扩展语法 (Extended Syntax)

表格 (Tables)

这是一个 GFM 扩展。请检查对齐方式。

左对齐标题居中对齐标题右对齐标题
内容单元格 1内容单元格 2内容单元格 3
codebolditalic
链接另一行

脚注 (Footnotes)

在现代博客中,脚注非常有用。1 这是一个脚注的引用。这是另一个。2

定义列表 (Definition Lists)

这个特性并非所有解析器都支持。

Markdown : 一种轻量级的标记语言。

HTML : 超文本标记语言,用于创建网页。

10. Mermaid 图表渲染

如果您的生成器支持 Mermaid,下面的图表应该能被正确渲染。

流程图 (Flowchart)

graph TD;
    A[开始] --> B{条件判断};
    B -- Yes --> C[操作一];
    B -- No --> D[操作二];
    C --> E[结束];
    D --> E;

序列图 (Sequence Diagram)

sequenceDiagram
    participant Alice
    participant Bob
    Alice->>John: Hello John, how are you?
    loop Healthcheck
        John->>John: Fight against hypochondria
    end
    Note right of John: Rational thoughts<br/>prevail...
    John-->>Alice: Great!
    John->>Bob: How about you?
    Bob-->>John: Jolly good!

甘特图 (Gantt Chart)

gantt
    title 项目开发甘特图
    dateFormat  YYYY-MM-DD
    section 项目A
    需求分析           :done,    des1, 2025-01-01, 7d
    设计与开发         :active,  des2, after des1, 20d
    测试与部署         :         des3, after des2, 5d

11. LaTeX 数学公式

检查您的生成器是否集成了 MathJax 或 KaTeX。

行内公式 (Inline)

质能方程是 。当 时,二次方程 的解为

块级公式 (Block)

使用 $$ 包裹公式。

麦克斯韦方程组 (Maxwell’s Equations):

12. HTML 标签嵌入测试

Markdown 规范允许嵌入原始 HTML。检查以下常用标签是否能正常工作。

基础标签: 这是 strong 标签em 标签下划线标签

键盘按键样式: 请按 Ctrl + C 复制文本。

上下标: H2O, E=mc2 (使用 HTML 标签)。 (对比 Markdown 扩展语法: H2O, E=mc^2^,如果支持的话)

折叠内容: 这是一个非常有用的标签,用于隐藏长代码块或次要内容。

点击这里展开/折叠详细信息

这里是隐藏的详细内容。它可以是任何内容,包括段落、列表、代码块等。

// 隐藏的代码块
function hidden() {
  console.log("You found me!");
}

带样式的 Div (测试 style 属性是否被过滤):

这是一个带内联样式的 `div` 容器。如果它有蓝色边框和浅蓝色背景,说明 `style` 属性没有被移除。

13. 鲁棒性与边界情况测试 (Robustness & Edge Cases)

这一部分专门用于测试那些容易导致渲染错误的复杂和模糊的语法组合。

测试 13.1: _* 在不同上下文中的歧义

下划线 _ 和星号 * 既可用于表示斜体/粗体,也经常出现在代码和文本中。一个好的解析器应该能正确区分它们。

  • 代码中的下划线: 行内代码 const my_variable = "hello_world"; 中的下划线不应被渲染为斜体。 代码块中的也不应该:

    def my_function_with_long_name():
        # A_very_long_comment
        pass
  • 公式中的下划线: LaTeX 公式 中的下划线是下标,不应被渲染为斜体。

  • 单词内的下划线和星号: 这个单词 a_b_c 中间的下划线不应触发斜体。 这个单词 abc 中间的星号不应触发斜体。 Perform_Action_Now 不应有任何斜体。 Perform*Action*Now 也不应有任何斜体。 只有当它们包围单词时才应该生效,像这样:斜体斜体

测试 13.2: 列表内复杂元素的缩进

在列表项中嵌入代码块、引用块或其他列表时,缩进至关重要。

  • 列表项内嵌套引用块:

    1. 这是一个列表项。 这是列表项的第一段。

      这是一个正确缩进的引用块 (通常需要 4 个空格或 1 个 tab),它属于上方列表项。

    2. 这是第二个列表项。

    这个引用块没有正确缩进,它可能会中断上面的列表。

    1. 这是第一个列表项。
  • 列表项内嵌套代码块:

    • 在无序列表中嵌入代码块:

      // 这个代码块需要被正确缩进
      // 才能成为列表项的一部分
      console.log("Indented correctly!");
    • 一个包含多段和代码的列表项:

      这是一个段落。

      这是属于同一个列表项的第二个段落,因为它有正确的缩进。

      # 同样,这个代码块也属于上面的列表项
      import os

      这是一个引用块,它也属于上面的列表项。

      // 这个代码块属于上面的引用块
  • 列表项内嵌套另一个列表:

    • A
      1. A.1
      2. A.2
    • B

测试 13.3: 字符转义

测试是否可以使用反斜杠 \ 来显示 Markdown 的特殊字符。

  • 我想显示字面的星号: *而不是斜体*
  • 我想显示字面的下划线: _而不是斜体_
  • 我想显示字面的反引号: `code`
  • 我想显示字面的井号: H1
  • 我想显示字面的反斜杠: \

测试 13.4: 潜在的列表项歧义

有些行看起来像列表项,但实际上不是。

  1. 这是一个以数字和点号开头的句子,它不应该被渲染成一个序号为 2024 的列表项。

测试 13.5: HTML 与 Markdown 混合处理

测试在块级 HTML 标签内部,Markdown 语法是否会被解析。根据 CommonMark 规范,在很多块级标签内,Markdown 应该被继续解析。

这是在 div 标签内部的文本。 这应该是斜体。 这应该是粗体。

这是一个在 div 内的引用块。

但是,在 <pre><script> 标签内,Markdown 不应被解析。

    **这里不应该是粗体**
    *这里不应该是斜体*

测试 13.6: 链接和图片的边缘情况

14. Obsidian 特有 Markdown 扩展测试 (Obsidian-Specific)

注意: 此部分包含 Obsidian MD 的特有语法。除非你的静态博客生成器有专门的插件或配置来解析这些语法 (例如 remark-obsidian 之类的工具),否则它们很可能无法正确渲染。这是一个兼容性测试。

测试 14.1: Callouts (标注)

Callouts 是 Obsidian 中用于高亮特定信息块的强大功能。它们基于引用块语法,并增加了特殊的标记。

Info

这是一个带有 Callout 的引用块。它可以用于强调重要信息。 Callout 类型为 info。

tip

这是一个 tip

Can callouts be nested?

Yes!, they can.

You can even use multiple layers of nesting.

测试不同类型的 Callouts:

abstract, summary, tldr

Info

Todo

tip, hint, important

success, check, done

question, faq, help

warning, caution, attention

failure, fail, missing

danger, error

Bug

Example

quote, cite

测试带自定义标题的 Callout:

这里是自定义的标题

Callout 的内容从这里开始。

测试可折叠的 Callout:

测试包含复杂内容的 Callout:

报告一个复杂 Bug

  1. 复现步骤一: 打开应用。
  2. 复现步骤二: 点击按钮。
    • 嵌套列表

代码示例:

function problematic() {
  return 1 / 0; // Infinity
}

结论: 程序崩溃。

WikiLinks 是 Obsidian 的核心,用于在笔记之间快速建立链接。

  • 基本链接:
  • 文档链接: Markdown 功能测试 - 被跳转目标 - 这应该被解析成一个指向另一页面的有效链接。
  • 带别名的链接: 点击这里查看 - 链接文本应该是 “点击这里查看”。
  • 链接到标题: 测试章节 1 - 这应该链接到目标页面的特定标题位置。
  • 链接到块: ^d4k2h - 这应该链接到页面中 ID为 ^d4k2h 的块。当然,目标块需要这样定义: 这是一个段落。 ^d4k2h

测试 14.3: 嵌入与块引用 (Embeds & Transclusion)

这用于将一个笔记或笔记的一部分内容直接嵌入到当前笔记中。

  • 嵌入整个笔记:

    Markdown 功能测试 - 被跳转目标

    这是一个用于测试 Markdown 链接渲染的文档。 原始测试请前往Markdown 功能测试

    Lorem ipsum dolor sit amet, consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

    测试章节 1

    Lorem ipsum dolor sit amet, consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

    测试段落

    测试章节 2

    Lorem ipsum dolor sit amet, consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

    指向原始笔记的链接
  • 嵌入笔记中的一个章节:

    测试章节 1

    Lorem ipsum dolor sit amet, consectetur adipisci elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

    测试段落

    指向原始笔记的链接

如果渲染正确,你应该能在此处看到 要嵌入的笔记 的内容。如果不支持,你可能会看到一个损坏的图片图标或者纯文本。

测试 14.4: 标签 (Tags)

Obsidian 对标签的支持非常灵活,特别是嵌套标签。

  • 这是一个包含 测试标签 的段落。
  • 这是一个包含 测试标签 的段落,这在组织内容时非常有用。

测试 14.5: Obsidian 注释

Obsidian 使用 % % 来包裹注释,这些注释在阅读视图下应该完全不可见。(连续两个 % 在渲染时的优先级似乎高于 `

这条文本前后都有 Obsidian 注释,但你应该只能看到这条文本本身。


测试结束。 如果以上所有内容都按预期显示,那么您的静态博客生成器对 Markdown 的支持非常棒!

Footnotes

  1. 这是脚注的具体内容。它可以包含多段。

  2. 这是另一个脚注的详细解释。