中文排版规范:标点、空格、引号与数字的实用规则
中文排版常被当成审美问题,其实八成是几类固定规则:中英文之间的空格、标点全半角、引号与括号的嵌套、数字与单位。规则统一之后,页面看起来就「像样」了,跟字体和配色关系不大。
下面的写法以通行的中文出版规范为依据(标点符号用法见 GB/T 15834,出版物上的数字用法见 GB/T 15835),并标出网络写作里常见的放宽做法。核心原则只有一条:同一篇文章里保持一致。
中英文之间留一个半角空格
汉字与英文单词、阿拉伯数字相邻时,中间加一个半角空格。这条规则在网页与移动端阅读里几乎是默认做法,因为它能明显降低混排的拥挤感。
- 正确:用 Markdown 写 3000 字,导出 WebP 图片。
- 错误:用Markdown写3000字,导出WebP图片。
三类例外不要加空格:
- 汉字与全角标点之间:「写完,然后」不写成「写完 ,然后」。
- 数值与百分号、角度符号之间:写 30%、45°,不写 30 %。
- 专有名词内部:iPhone 15、GitHub Actions 里的空格是原名的一部分,不要拆。
至于数值与单位,国际单位制的写法是留一个空格(10 GB、25 ms),这条在技术文档里比较通行;「10GB」不算错,但同一篇里不要两种混用。
标点:正文全角,代码与网址半角
中文正文用全角标点,这是硬规则。唯一需要切换的是代码、命令行、网址、文件名——这些必须保持半角,否则复制出去就跑不起来。
| 场景 | 写法 | 说明 |
|---|---|---|
| 正文句读 | ,。;:?! | 全角,占一个汉字宽度 |
| 行内代码 | npm run build | 半角,代码内标点保持原样 |
| 英文句子 | Use it, then stop. | 整句英文用半角标点 |
| 引号 | 「引文」或“引文” | 全文统一,不混用 |
| 省略号 | …… | 六点,占两个字宽 |
| 破折号 | —— | 两条,占两个字宽 |
半角逗号和句号混进中文段落是最常见的错误,来源通常是输入法没切回来,或者从英文文档里粘贴。它们混在中文里视觉上几乎看不出来,但会让整段的行距不均匀。
引号:选一种,然后一直用它
中文有两套常用引号:直角引号「」和弯引号“”。两者都成立,区别在场合——「」在中文排版里更清晰,嵌套时也不会和英文引号打架;“”在网页和社交媒体上更常见,输入成本低。
嵌套规则:外层「」,内层用『』;如果用弯引号,外层“”,内层‘’。三层以上就该改写句子了。
引号还有两个细节:句末标点放在引号内还是外,取决于引文是否独立成句。整句引用,句号放引号内;引文只作为句子成分,句号放引号外。不确定时,把引文改短,问题就消失了。
括号与嵌套,越少越好
中文括号用全角(),括号内的内容如果整段是英文或代码,可以用半角。括号嵌套时,外层全角、内层半角是常见做法:请先看说明(详见 docs/setup.md)。
但更实用的建议是别嵌套。一段话里出现两层括号,通常说明这句该拆成两句,或者该单独成段。括号里的信息如果重要,就给它一个句子;如果不重要,删掉。
数字、范围与日期
数字用法的规则不多,但违反之后很显眼。
- 范围用波浪号:3~5 天、10%~20%。不要用连字符
-,会和减号、日期混淆。 - 日期用年月日或短横线:2026 年 10 月 22 日,或 2026-10-22。不要写 2026.10.22。
- 时间用冒号:14:30,不写 14 点 30 分(口语引用除外)。
- 概数不用阿拉伯数字混搭:三四天、十几个,不写 3、4 天。
- 千分位:中文出版通行不加逗号(10000),技术文档可用空格分组;同一篇统一即可。
标题层级与编号
标题不加句号,问句可以保留问号。层级符号不要混用——「一、」和「1.」出现在同一页里,会让人以为有两套结构。
网页里还有一个额外约束:H1 只出现一次,通常由文章标题占位,正文从 H2 开始。为了让目录自动生成,H2 与 H3 之间不要跳级。小标题的写法(结论句而非名词)属于结构问题,见文章结构怎么安排。
常见错误对照表
| 错误写法 | 正确写法 | 问题 |
|---|---|---|
| 用Markdown写 | 用 Markdown 写 | 中英文之间缺空格 |
| 好的, 我知道了. | 好的,我知道了。 | 中文句子用了半角标点 |
| “他说:“走吧”” | 他说:「走吧。」 | 引号嵌套未分层 |
| 3-5天 | 3~5 天 | 范围符号与空格 |
| 30 % | 30% | 百分号前多余空格 |
| 等等... | 等等…… | 省略号应为六点 |
| 这是一个——很重要的点 | 这是一个很重要的点 | 破折号滥用,句子可直说 |
| 2026.10.22 | 2026-10-22 | 日期分隔符不规范 |
| (详见 setup.md) | (详见 setup.md) | 文件名应用行内代码 |
把规则变成设置,而不是记忆力
靠记规则不可持续,把它交给工具更省事。
- 输入法:中文状态下默认全角标点,需要写代码时临时切英文。多数输入法可以设置「中文时使用英文标点」,写代码多的人可以常开,写完再统一替换。
- 编辑器检查:支持中文文案检查的 lint 工具能自动标出中英文空格、全半角混用、重复标点,接入编辑器后保存即提示。
- 批量替换要谨慎:全局把半角逗号换成全角,会连代码块和网址一起改坏。替换前先限定范围,替换后抽查代码段。
- 发布前通读一遍:工具查不出的问题(引号嵌套、破折号滥用)只能靠读。
Markdown 的语法符号必须保持半角,这一条和正文标点规则相反,容易搞混。写之前先把语法过一遍:Markdown 语法入门。
发布前五分钟检查
- 中英文之间是否统一加了空格,有没有一处加一处不加。
- 中文段落里是否混进了半角逗号和句号。
- 引号是否全文只用一种,嵌套是否分层。
- 省略号是否六点、破折号是否两条。
- 范围号是否用波浪号,日期格式是否统一。
- 代码、文件名、网址是否保持半角并用行内代码标出。
- 标题是否没有句号,H2/H3 是否没有跳级。