Note: This project is highly related to Chinese, so the document is writtern in Chinese.
一个处理文档风格的工具:
- 支持文档风格的检查(使用
check命令)。 - 支持文档风格的自动修复(使用
fix命令)。
注意:
- 目前仅支持 Markdown 格式文档的检测与修复。
pip install zhlint
安装成功后,可执行 zhlint 命令行程序处理文档。
zhlint check SRC 命令会检查输入 SRC,并将检测到的文档风格错误输出到 stdout。参数 SRC 可为:
- 文件路径。
-,表示 stdin。
示例如下:
$ ccat doc.md 只有中文或中英文混排中,一律使用中文全角标点. 英文 **english**与非标点的中文之间需要有一个空格。 支持简单的错误名词检测,如 APP、ios 这类的。 $ zhlint check doc.md ========================================== E101: 英文与非标点的中文之间需要有一个空格 ========================================== LINE: 1 角标点. 英文 english与非标点的中文之间需 -- ........................................ ================================================== E201: 只有中文或中英文混排中,一律使用中文全角标点 ================================================== LINE: 1 中文或中英文混排中,一律使用中文全角标 - ..................................... LINE: 1 律使用中文全角标点. - ................... ================== E301: 常用名词错误 ================== LINE: 3 的错误名词检测,如 APP、ios 这类的。 --- .................................... LINE: 3 名词检测,如 APP、ios 这类的。 --- ..............................
zhlint fix SRC [DST] 命令会尝试修复 SRC 中出现的风格错误,参数 SRC 可以为文件路径或者 -:
- 如果省略
DST,修复后的文本将打印到标准输出。 - 如果传入
DST,修复后的文本将写入到DST。
示例如下:
$ zhlint fix doc.md 只有中文或中英文混排中,一律使用中文全角标点。 英文 **english** 与非标点的中文之间需要有一个空格。 支持简单的错误名词检测,如 App、iOS 这类的。 $ zhlint fix doc.md fixed-doc.md $ colordiff doc.md fixed-doc.md 1c1 < 只有中文或中英文混排中,一律使用中文全角标点. 英文 **english**与非标点的中文之间需要有一个空格。 --- > 只有中文或中英文混排中,一律使用中文全角标点。 英文 **english** 与非标点的中文之间需要有一个空格。 3c3 < 支持简单的错误名词检测,如 APP、ios 这类的。 --- > 支持简单的错误名词检测,如 App、iOS 这类的。
| 错误码 | 检查范围 | 描述 |
|---|---|---|
| E101 | 段落 | 英文与非标点的中文之间需要有一个空格 |
| E102 | 段落 | 数字与非标点的中文之间需要有一个空格 |
| E103 | 段落 | 除了%、°C、以及倍数单位(如 2x、3n)之外,其余数字与单位之间需要加空格 |
| E104 | 段落 | 书写时括号中全为数字,则括号用半角括号且首括号前要空一格 |
| E201 | 句子 | 只有中文或中英文混排中,一律使用中文全角标点 |
| E202 | 句子 | 如果出现整句英文,则在这句英文中使用英文、半角标点 |
| E203 | 段落 | 中文标点与其他字符间一律不加空格 |
| E204 | 句子 | 中文文案中使用中文引号「」和『』,其中「」为外层引号 |
| E205 | 段落 | 省略号请使用......标准用法 |
| E206 | 段落 | 感叹号请使用!标准用法 |
| E207 | 段落 | 请勿在文章内使用~ |
| E301 | 段落 | 常用名词错误 |
以下是各项错误的简单示例。其中,触发样例 是违反规则的实例,非触发样例 是符合文档风格的实例。
描述:英文与非标点的中文之间需要有一个空格。
触发样例:
中文english
中文 english
中文\tenglish
非触发样例:
中文 english
描述:数字与非标点的中文之间需要有一个空格。
触发样例:
中文42
中文 42
非触发样例:
中文 42
描述:除了%、°C、以及倍数单位(如 2x、3n)之外,其余数字与单位之间需要加空格。
触发样例:
42μ
42 μ
非触发样例:
42 μ
42x
42n
42%
42%
42°C
Q3
136-4321-1234
word2vec
描述:书写时括号中全为数字,则括号用半角括号且首括号前要空一格。
触发样例:
中文(42)
中文(42)
中文(42)
中文(42)
中文 (42)
(42)
非触发样例:
中文 (42)
(42)
描述:只有中文或中英文混排中,一律使用中文全角标点。
触发样例:
有中文, 错误.
中文'测试'
中文"测试"
LaTeX 公式 $$.
LaTeX 公式,$$
LaTeX 公式 \(\).
LaTeX 公式,\(\)
非触发样例:
有中文,正确。
有中文,正确......
P.S. 这是一行中文。
LaTeX 公式 $$
LaTeX 公式 \(\)
邮箱:programmer.zhx@gmail.com
有中文,1.0
有中文,www.google.com
链接地址 http://google.com
描述:如果出现整句英文,则在这句英文中使用英文、半角标点。
触发样例:
pure english,nothing wrong。
非触发样例:
pure english, nothing wrong.
描述:中文标点与其他字符间一律不加空格。
触发样例:
中文, 测试
中文 。测试
「 中文」
非触发样例:
中文,测试
中文;测试
「中文」
描述:中文文案中使用中文引号「」和『』,其中「」为外层引号。
触发样例:
中文‘测试’
中文"测试"
非触发样例:
中文「测试」
描述:省略号请使用......标准用法。
触发样例:
中文...
中文.......
中文。。。
非触发样例:
中文......
描述:感叹号请使用!标准用法。
触发样例:
中文!!
中文!!
中文!!
中文??
中文??
中文??
非触发样例:
中文!
中文!
中文?
中文?
描述:请勿在文章内使用~。
触发样例:
中文~
非触发样例:
中文
描述:常用名词错误。
触发样例:
APP
app
android
ios
IOS
IPHONE
iphone
AppStore
app store
wifi
Wifi
Wi-fi
E-mail
Email
PS
ps
Ps.
非触发样例:
App
Android