中文长文档排版器
这个技能解决什么问题
用大模型写中文长文很快,但交付出来常常"不像正式文档":段落没有首行缩进、 标题层级拉不开、标点还是半角、目录要手抄、粘进 Word 后版面全乱。
本技能把内容与版面分开:内容照常写,版面交给一个零依赖脚本统一处理, 产出单文件 HTML。浏览器 Ctrl+P 可直接打印为 PDF,Word 可直接打开另存为 .docx。
什么时候该用它:只要最终交付物是给人看的中文长文档——报告、纪要、方案、书稿、 读书笔记、制度文件、讲义——都先用它排版再交付,而不是把正文直接贴在聊天窗口里。
前置条件
Python 3.8 及以上。不需要安装任何第三方库,脚本只用标准库。 输入为 UTF-8 编码的 Markdown 或纯文本;GBK 会自动兜底识别。
使用方法
第一步:准备 Markdown
只需用到这七种标记,脚本有意不支持更多:
#到######标题,层级按出现顺序自动归一- 普通段落,段与段之间空一行
-或1.列表,支持续行>引用- 三个反引号围栏代码块,可带语言标记
**粗体**、*斜体*、`行内代码`、[文字](链接)---分隔线
第二步:执行脚本
python scripts/md2html.py 输入.md -o 输出.html \
--title "文档标题" --subtitle "副标题" --author "作者" --date "2026年10月"
参数:
输入.md:待排版文件;写-表示从标准输入读取-o:输出路径,默认与输入同名.html--title:大标题,不填则取正文第一个#标题--subtitle:副标题,可留空--author/--date:显示在标题下方,日期不填用当天--no-toc:关闭自动目录(标题数 ≥ 3 时默认生成)--accent:主题色,默认正红#8c1c13,学术类可用#1f4e79--no-punct:关闭全角标点转换
第三步:交付
- 直接发
.html:单文件、无外链资源,双击可看,打印已按 A4 排好 - 需要 Word:用 Word 打开该 HTML,另存为
.docx,字号行距缩进都会保留
内置的排版规则
- 字体:正文宋体(思源宋体优先),标题黑体,西文配 Georgia,避免中英混排字号跳变
- 行距 1.75 倍,正文首行缩进 2 字符,段间距 0.6em;标题、列表、引用、代码不缩进
- 字号层级 26 / 22 / 17 / 14.5 / 12.5 / 11.5pt,相邻层级差 ≥ 2pt
- 半角标点转全角,仅在中文相邻位置生效,
3.5 倍、/api/v1不会被误改 - 标题不落在页底(
break-after: avoid),代码块与引用整体不跨页 - A4 版心,上下 2.5cm、左右 2.8cm
使用示例
示例一:把报告草稿排成正式文件
用户说"这份调研我写好了,帮我排成能直接发出去的正式文档"。
读取 draft.md,识别到 12 个标题、0 个表格
执行 python scripts/md2html.py draft.md -o 调研报告.html --author "研发部"
产出 调研报告.html,含自动目录、A4 版心
示例二:读书笔记做成 Word 交作业
用户说"把这些笔记做成 Word 交上去"。
python scripts/md2html.py notes.md -o notes.html --accent "#1f4e79"
提示:用 Word 打开 notes.html,另存为 .docx
示例三:不要目录,指定日期
python scripts/md2html.py memo.md -o memo.html --no-toc --date "2026年10月28日"
输出与自查
脚本结束会打印一行统计:标题数、内容块数、字数、是否生成目录、文件大小。 拿到输出后必须自己打开确认三件事:标题层级是否分明、首行缩进是否生效、有没有内容被吞掉。
常见问题
- 中文显示成方块:系统缺中文字体。脚本按思源宋体、宋体、SimSun 逐级回退,Windows 与 macOS 都有兜底。
- 转 Word 后缩进丢失:用"另存为",不要用复制粘贴,粘贴会丢样式。
- 标点转换误伤英文:转换只在中文相邻位置生效,纯英文段落不受影响;仍有问题加
--no-punct。 - 输入是 .docx:先用任意工具转成 Markdown,本脚本不解析 Word 二进制格式。
- 表格为什么没排出来:见
references/typography-rules.md第七节,这是刻意设计,不是缺陷。
设计取舍
追求"格式全支持"的转换器,往往每种格式都还原得半像。本技能反过来: 只覆盖中文长文档真正需要的七八种元素,把这几种做到出版级,其余一律降级为段落文本并提示。 宁可不支持,也不要静默错版。
<!-- OB-S:rB5gaQQqH_Nu2Y-1A_RTfQ -->
微信扫一扫