跳转至

写作语法速查#

这一篇是给自己看的备忘:这个站点支持的全部写法,以及每一种长什么样。 写新文章的时候直接回来抄。

一、每篇文章的开头#

每个 .md 文件最上面要有一段被两行 --- 夹住的信息。 这段不是正文,是给程序读的:日期决定文章在时间线上的位置,分类决定它出现在哪个分类页。

---
date: 2026-08-13
slug: my-post-name
authors:
  - houzeyu
categories:
  - 工具
  - 单细胞
draft: false
---

# 文章标题

开头一两句话,这部分会显示在文章列表里当摘要。

<!-- more -->

正文从这里开始。

<!-- more --> 这一行是分界线:它上面的内容出现在列表页,下面的只有点进来才看得到。

slug 决定网址长什么样。上面这篇的网址会是 houzeyu.com/blog/2026/08/my-post-name/每篇都要写 slug,而且必须用英文小写加连字符。 不写的话程序会拿中文标题去生成网址, 变成 %E6%96%87%E7%AB%A0%E6%A0%87%E9%A2%98 这样一长串,分享出去很难看。

draft: true 的文章在本地预览时能看到,但执行发布命令时会被跳过。写到一半的文章加这一行就不会误发出去。

文件放在 docs/blog/posts/ 下面,文件名建议用 年-月-日-英文短名.md

二、文字#

**加粗***斜体*~~删除线~~,==高亮==,`行内代码`。

[链接文字](https://example.com)

> 引用块。左边会有一条竖线,文字颜色变浅。

加粗斜体删除线高亮行内代码

引用块。左边会有一条竖线,文字颜色变浅。

三、列表#

- 无序列表
- 第二项
    - 缩进四个空格是子项

1. 有序列表
2. 第二项

- [x] 已完成的任务
- [ ] 未完成的任务
  • 已完成的任务
  • 未完成的任务

四、代码#

三个反引号开头,写上语言名字,三个反引号结尾。 加 title= 可以在代码块上方显示文件名。

```python title="preprocess.py"
import scanpy as sc

adata = sc.read_h5ad("data.h5ad")
sc.pp.normalize_total(adata, target_sum=1e4)
sc.pp.log1p(adata)
```
preprocess.py
import scanpy as sc

adata = sc.read_h5ad("data.h5ad")
sc.pp.normalize_total(adata, target_sum=1e4)
sc.pp.log1p(adata)

右上角有复制按钮。支持的语言名很多,常用的:python r bash yaml json sql

五、表格#

| 方法 | PCC | 备注 |
|---|---:|---|
| GlobalMean | 0.80 | 基线 |
| CONCERT | 0.76 | 输给基线 |
方法 PCC 备注
GlobalMean 0.80 基线
CONCERT 0.76 输给基线

---: 表示这一列右对齐,:---: 是居中。数字列右对齐更好读。

六、提示框#

!!! note "标题可以自己写"
    缩进四个空格,写内容。

!!! warning "注意"
    这是警告框。

??? tip "点击才展开"
    默认折叠起来,适合放冗长的推导。

标题可以自己写

缩进四个空格,写内容。

注意

这是警告框。

点击才展开

默认折叠起来,适合放冗长的推导过程或者一大段报错日志。

可用的类型:note abstract info tip success question warning failure danger bug example quote

七、数学公式#

行内用一对 $,独立成行用一对 $$。语法就是 LaTeX。

相关系数 $r \in [-1, 1]$,定义为

$$
r = \frac{\sum_i (x_i - \bar{x})(y_i - \bar{y})}
         {\sqrt{\sum_i (x_i - \bar{x})^2} \sqrt{\sum_i (y_i - \bar{y})^2}}
$$

相关系数 \(r \in [-1, 1]\),定义为

\[ r = \frac{\sum_i (x_i - \bar{x})(y_i - \bar{y})} {\sqrt{\sum_i (x_i - \bar{x})^2} \sqrt{\sum_i (y_i - \bar{y})^2}} \]

八、图片#

把图片文件和 .md 放在同一个文件夹里,然后写:

![图注](figure1.png)

如果一篇文章有好几张图,建议改成一篇一个文件夹: 把 2026-08-13-xxx.md 改成 2026-08-13-xxx/index.md,图片放进同一个文件夹。 这样图片不会和别的文章混在一起。

九、脚注#

这句话需要一个注释[^1]。

[^1]: 注释内容会自动跑到页面最下面。

这句话需要一个注释1

十、键盘按键#

按 ++ctrl+c++ 中断。

Ctrl+C 中断。

十一、分栏#

=== "R"

    ```r
    m <- matrix(1:6, nrow = 2)
    t(m)
    ```

=== "Python"

    ```python
    import numpy as np
    m = np.arange(1, 7).reshape(2, 3)
    m.T
    ```
m <- matrix(1:6, nrow = 2)
t(m)
import numpy as np
m = np.arange(1, 7).reshape(2, 3)
m.T

十二、写完之后#

在博客文件夹里执行两条命令。

./preview.sh    # 本地预览,浏览器打开 http://127.0.0.1:8000,改完存盘自动刷新
./publish.sh    # 确认没问题之后,一条命令发布上线

预览的时候不联网也能用,改动只在自己电脑上。publish.sh 才会真的推上去。


  1. 注释内容会自动跑到页面最下面,并且带一个跳回去的箭头。