做试卷、学案的人迟早会遇到这么一件事:稿子是 8 开横版双栏,要交出去的是 16 开单栏四页。所有人第一反应都是"重新排版"——然后把字号、行距、换行位置、下划线长度、公式位置全重做一遍,一份四页的东西校对两个小时,还得逐行和原稿比对哪里被挤歪了。
我这次的答案是:一个字都不重排。只改三样东西——纸张尺寸、栏数、分页点。

一、能这么做的前提,是让"正文"尺寸严格相等
拆页之所以会变成重排,是因为多数人只换了纸张,正文框尺寸跟着变了:宽度一变,每行排几个字就变;高度一变,每页放几行就变。这两处一动,后面全是连锁反应。
所以整套方法只有一条硬规矩:
- 新页面的正文宽 = 原稿每一栏的栏宽 → 每行排几个字、在哪里换行,完全不变
- 新页面的正文高 = 原稿的正文高 → 每页放几行、在哪里分页,完全不变
两个条件同时满足,"拆页"就退化成一件很简单的事:把双栏的右栏整体搬到下一页。排版一个点都不会动,而且输出的是真文字,不是把原页拍成图片贴进去——打印要多清晰有多清晰,检索、复制、无障碍朗读全都不受影响。
二、动手之前先把三个数量出来
不量清楚就动手,十个有八个会翻车。要读的是这几个数:纸张宽高、方向、四边距、页眉页脚距离、栏数、栏宽、正文宽高、行距网格。
我这次的源稿实测是这个样子:
[原稿] 纸张 364.05 x 257.14 mm (landscape) | 边距 上24.39 下24.31 左16.00 右12.70 mm
| 栏数 2 | 栏宽 464.65 pt | 正文 950.60 x 590.85 pt | 网格 15.60 pt
真正要记住的只有两个数:栏宽 464.65 pt、正文高 590.85 pt。其余的边距、页眉页脚位置都是到时候反算出来的中间量。
顺手判断一下自己的稿子属于哪一种:
| 现象 | 结论 |
|---|---|
| 2 栏、纸张约 8 开或 A3 | 典型的"两个大页 = 四个 16 开版面",拆成 4 页 |
| 2 栏、纸张 A3 | 拆成 2 张 A4 单栏 |
| 1 栏 | 不用拆,只换纸,反算公式照样适用 |
文档里有行距网格 linePitch |
正文高要贴着网格倍数,否则最后一行会被顶到下一页 |
三、边距是反算出来的,不是照抄的
这一步是整个方法里最容易做错的地方,公式只有两个:
要让「正文宽 = 原栏宽」: 纸宽 − 左边距 − 右边距 = 栏宽
要让「正文高 = 原正文高」:纸高 − 上边距 − 下边距 = 正文高
实践取值:左右对称居中,上边距沿用原稿,下边距反算。目标正 16 开 185 × 260 mm 的实际结果:
左 = 右 = (10490 − 9293) / 2 ≈ 598 tw = 10.55 mm
上 = 1383 tw = 24.39 mm ← 沿用原稿
下 = 14740 − 1383 − 11817 = 1540 tw = 27.16 mm
注意最后那个数:下边距 27.16 mm,不是原稿的 24.31 mm。它不是抄来的,是为了凑出 590.85 pt 的正文高。上下不对称在这里完全不是问题——读者看到的是纸面四周的空白,而他真正在意的"每一页的行数"由正文高决定。
如果反算出来的下边距小于 10 mm,说明这张纸装不下这么高的正文,这时就改用原稿下边距、从上边挤一点,或者干脆把正文高按整行缩小(行距网格的整数倍)。
页眉页脚有个小前提:它们的距离必须小于对应的边距,否则会压到正文上。
四、切点只放在干净的段落边界上
原则按安全程度排:标题段落之前最安全,大题首段之前次之,跨栏的长段落中间绝对不能切。
这条红线是踩出来的。这次学案里有个"书写横线区",不是十几根独立的线,而是一个会自动换行的长下划线段落,在原稿里跨栏存在——左栏 6 行、右栏 12 行。如果在"第 2 页左栏结束"处硬插一个分节符,就必须把这一段劈成两段,横线长度、缩进、下划线的连续性全都变。
正确做法是反过来:给"应该出现在新页第一行"的那个段落加段前分页(pageBreakBefore),让 Word 自己在跨栏段落内部去找分页点。横线接着往下排,一个字都不用切。
这次的三个切点,两个是我指定的段落,一个是让程序自己分的:
| 切点 | 段落开头 | 作用 |
|---|---|---|
| 1 | The Dragon Boat Festival |
原第 1 页右栏顶端 → 新第 2 页 |
| 2 | The Double Ninth Festival |
原第 2 页左栏顶端 → 新第 3 页 |
| 自动 | 长下划线段落内部 | 第 3 → 4 页由排版引擎自然分页 |

五、改 XML,只动四个属性
为什么不直接在 WPS 界面里改?因为界面的"页面设置 + 分栏"是一次性动作:它会把栏宽、网格、页眉页脚位置一起重算,而且下次没法复现——同样的稿子第二遍改出来可能不一样。
改 XML 恰好相反,只碰四个地方,styles.xml、settings.xml、fontTable.xml、页脚这些部件逐字节原样保留,格式风险为零:
| 位置 | 改什么 |
|---|---|
<w:pgSz> |
宽高改成目标纸张;顺手删掉 w:orient |
<w:pgMar> |
左右上下按上一节公式换成新值 |
<w:cols> |
w:num 改成 1;原来带栏宽 w:w 的要删掉 |
目标段落 <w:pPr> |
插入 <w:pageBreakBefore/> |
三个必踩的坑,按踩到的顺序写:
坑一,pageBreakBefore 不能乱插。 <w:pPr> 的子元素有严格顺序,它必须排在 pStyle / keepNext / keepLines 之后,framePr / snapToGrid / spacing / ind / jc / rPr / sectPr 之前。插错位置轻则静默失效(分页没发生),重则打开报文件损坏。可靠写法是找"第一个后序元素"插在它前面,没有后序元素才挂在 </w:pPr> 前。
坑二,w:orient="landscape" 必须删。 只改宽高不删这个属性,程序会按横版逻辑把宽高对调,或者直接报错。
坑三,<w:cols> 里残留的 w:w。 改成单栏后如果还留着原来的栏宽属性,正文会被缩窄,换行位置全变——这是"看起来改对了、但整页字都挤在一起"的典型原因。
六、验收只认四个数
改完不要凭眼睛说"看着一样"。我这边固定核对四项:
- 页数是否是预期的 4 页;
- 文字块数量与原稿一致(本次 78 段,零差异);
- 每页文字块的坐标是否落在预期位置;
- 打印预览里首行文字是否还是原来那一行。
四项都过,才算拆完。这次成品与原稿的差异只有一样:纸变小了,页数变多了。
最后一句。 这套方法只办一件事——同一份内容换壳。内容本身要动,该重排还是得重排;但只要目标是"换个纸张尺寸、拆成几页、内容一个字不改",改纸张、改栏数、改分页点这三下,比重新排版省下的不是一点点时间。