· 2 min read · Test Markdown

Markdown 渲染测试

一份渲染测试文档,后续将删除

标题层级展示

以下展示从 H2 到 H4 各级标题在正文中的视觉层次。

这是三级标题 H3

三级标题用于二级标题下的子章节划分,字号小于 H2,颜色带有主题色调。

这是四级标题 H4

四级标题用于更细的小节。正文段落紧跟其后,应可清晰区分标题与正文。

这是一段普通正文。正文行距应当宽松舒适,适合长文阅读。段落之间应有明显的间距,不会让读者感到文字堆叠在一起。


文本样式

这段文字包含 粗体斜体粗斜体删除线,以及行内代码 const x = 42;

这里有一个 超链接示例,鼠标悬停应有视觉反馈。

这是一段引用。引用块应当有明显的左侧边框和背景色,与正文区分开来。

引用可以包含多段文字,内部也可以有 粗体斜体

以下是一段嵌套引用:

外层引用

内层引用——应当有更深的缩进。


列表

无序列表

  • 第一项
  • 第二项,包含 行内代码
  • 第三项,包含 粗体文本
    • 嵌套子项 A
    • 嵌套子项 B
      • 更深层嵌套

有序列表

  1. 安装依赖
  2. 配置环境变量
  3. 运行开发服务器
    1. 执行 hugo server -D
    2. 打开浏览器访问 localhost:1313
  4. 开始写作

任务列表

  • 创建 Hugo 站点
  • 安装主题
  • 自定义配色
  • 撰写第一篇文章

代码

行内代码

在终端中运行 hugo server --buildDrafts 以启动本地预览。变量 $theme 的默认值为 "modern-archivist"

代码块(Go)

package main

import "fmt"

func fibonacci(n int) []int {
    seq := make([]int, n)
    seq[0], seq[1] = 0, 1
    for i := 2; i < n; i++ {
        seq[i] = seq[i-1] + seq[i-2]
    }
    return seq
}

func main() {
    result := fibonacci(10)
    fmt.Println("Fibonacci:", result)
}

代码块(Python)

import numpy as np
from typing import List

def gradient_descent(
    f, grad_f, x0: np.ndarray,
    lr: float = 0.01,
    epochs: int = 1000
) -> List[np.ndarray]:
    """简单的梯度下降实现。"""
    path = [x0.copy()]
    x = x0.copy()
    for _ in range(epochs):
        x -= lr * grad_f(x)
        path.append(x.copy())
    return path

代码块(JavaScript)

async function fetchPosts(page = 1) {
  const res = await fetch(`/api/posts?page=${page}`);
  if (!res.ok) throw new Error(`HTTP ${res.status}`);
  const { data, total } = await res.json();
  return { posts: data, hasMore: data.length * page < total };
}

代码块(Shell)

#!/bin/bash
echo "Building site..."
hugo --minify --gc
echo "Deploying to server..."
rsync -avz --delete public/ user@server:/var/www/blog/
echo "Done!"

数学公式

行内公式

质能方程 $E = mc^2$ 是物理学中最著名的公式之一。欧拉公式 $e^{i\pi} + 1 = 0$ 连接了五个基本数学常数。对于正态分布,概率密度函数为 $f(x) = \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}}$。

块级公式

贝叶斯定理:

$$P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)}$$

梯度下降更新规则:

$$\theta_{t+1} = \theta_t - \eta \nabla_\theta \mathcal{L}(\theta_t)$$

多元高斯分布的概率密度函数:

$$f(\mathbf{x}) = \frac{1}{(2\pi)^{k/2} |\Sigma|^{1/2}} \exp\left(-\frac{1}{2}(\mathbf{x}-\boldsymbol{\mu})^T \Sigma^{-1} (\mathbf{x}-\boldsymbol{\mu})\right)$$

Softmax 函数:

$$\sigma(\mathbf{z})_i = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}} \quad \text{for } i = 1, \dots, K$$

交叉熵损失:

$$\mathcal{L} = -\sum_{i=1}^{N} \left[ y_i \log(\hat{y}_i) + (1-y_i)\log(1-\hat{y}_i) \right]$$

表格

简单表格

特性 Hugo Jekyll Hexo
语言 Go Ruby Node.js
构建速度 极快 中等
模板引擎 Go Template Liquid EJS / Pug
学习曲线 中等

对齐表格

左对齐 居中对齐 右对齐
内容A 内容B 100
更长的内容 2,000
示例 数据 35,678

图片

以下是一张网络图片测试(如无法加载,说明环境无网络):

Placeholder Image


脚注

这段文字包含一个脚注引用1,以及另一个引用2


混合排版示例

下面模拟一段真实的技术博客段落,综合使用多种元素:

在训练 Transformer 模型时,注意力机制的核心公式为:

$$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$$

其中 $Q$、$K$、$V$ 分别是 Query、Key、Value 矩阵,$d_k$ 是 Key 的维度。实现代码如下:

import torch
import torch.nn.functional as F

def scaled_dot_product_attention(Q, K, V, mask=None):
    d_k = Q.size(-1)
    scores = torch.matmul(Q, K.transpose(-2, -1)) / d_k ** 0.5
    if mask is not None:
        scores = scores.masked_fill(mask == 0, float('-inf'))
    weights = F.softmax(scores, dim=-1)
    return torch.matmul(weights, V), weights

注意:在实际应用中,通常还会加入 Dropout 层以防止过拟合。详见 Attention Is All You Need

训练过程中各阶段的损失值参考:

阶段 Epoch Loss 备注
预热 1-5 4.21 → 2.87 学习率线性增长
稳定训练 6-50 2.87 → 0.43 余弦退火
微调 51-60 0.43 → 0.31 降低学习率

  1. 这是第一个脚注的内容,会显示在页面底部。 ↩︎

  2. 脚注也可以使用文字标识符而非数字。 ↩︎