Skip to content

示例库

本页截图与代码均来自随插件发布的演示库,可直接打开对照。

下载中文演示库

分页优化 ​

五条规则决定内容落在哪一页:画廊行不拆页、页末单图贴底、浮动图与旁文同进退、标题另起或不留在页脚、末页孤行回收。

分页并非按高度将连续长栏切分为多个页面。插件先切出配置要求的页边界,再将无法容纳的图片压缩至贴底,最后回收仅剩一两行的末页。所有调整只发生在导出时的临时打印树上,导出结束即回退,不写回笔记。

分页预览中切换“标题分页”后,右侧页面会重新分页;关闭后标题不再强制另起一页。

未启用分页优化的表现 ​

  • 一行五张图被页边界切开:上半页三张,下半页两张。
  • 一张竖图差几厘米无法容纳,整张跳到下一页,上一页底部留下大块空白。
  • 标题停在页脚最后一行,正文从下一页开始。
  • 末页仅有一行文字,而前面各页排版已满。

这四种页脚就是下面五条规则要解决的问题。

规则一:整行画廊不拆页 ​

一行画廊是一个整体:要么整行在这一页,要么整行移到下一页,避免出现「上半页三张、下半页两张」。

无法容纳时,三格图片按同一比例缩小,各自在固定栏位内居中,栏宽不变。缩到上限仍无法容纳,整行换页。它不会被当作 donor 去救同页其他图片,孤行修复也不会压缩它。

关闭优化时整行被推到下一页,开启后三格同比例缩小留在页内

左:关闭「图片分页优化」,整行到下一页,页尾留白;右:开启后整行按同一比例缩小,栏宽不变,贴住页脚。

相关设置:图片最大压缩高度(默认 15%)。

规则二:页末单图缩到贴底 ​

页末一张图无法容纳时,插件只量这张图(含图注)的底边与页底的距离,把这一张缩到刚好贴底的最小比例,不牵动同页其他图片,也不额外插入分页。

  • 目标图自己的上限用完后,才按「优先使用裕度」动同页其他图片(最多 4 张)或行距。
  • 与图片同段的正文会被拆成独立块;图片贴底后,正文自然从下一页开始。
  • 任何失败都整体回滚,不会留下「缩了一半、还是被切断」的中间状态。

关闭优化时单图整体下移,开启后压缩贴底留在页内

左:关闭优化,单图整体到下一页,页尾留白;右:开启后只缩这一张,贴住页脚。

相关设置:图片分页优化、优先使用裕度、图片最大压缩高度、行距最大压缩高度。

规则三:浮动图与旁边正文同进退 ​

只有在「浮动空间策略 = 按行文顺序对齐」时,浮动图才会与紧邻它、且在图片高度内结束的那段正文绑成一块:无法容纳就一起换页。

  • 正文比图片长时,绑定自动解除;超出的行照常续排到下一页,不会把整段文字一起推走。
  • 「共享浮动空间」模式下不绑定:正文留在本页就近填空,图片按自身规则换页。
  • 判断只看图片底边,不看绕排正文延伸到哪里;图片本身不会被页边切成两半。

按行文顺序时图与旁文一起换页;共享浮动空间时正文留在本页、图片换页

左:浮动空间按行文顺序,图与旁文同在第 2 页;右:共享浮动空间,旁文留在第 1 页,只把图换到第 2 页。

相关设置:浮动空间策略。

规则四:标题要么另起一页,要么不留在页脚 ​

打开「标题分页」并设定起始等级后,命中等级的标题另起一页。等级选 h2 时,h1 与 h2 都参与分页。

即使关闭标题分页,落在页脚、正文却要翻页的标题也会被带到下一页。相邻的两个标题(例如 h1 紧跟 h2)算作一个标题块,只切一次,不会切出空白页。

关闭标题分页时各级标题连续排,开启后二级标题另起一页

左:关闭标题分页,第 1 页连续排到第三节;右:开启「标题分页、起始等级 h2」后,第 1 页只保留第一节,后续内容整体后移。

相关设置:标题分页、标题分页起始等级。

规则五:末页孤行回收 ​

末页只剩 1–2 行时,插件压缩上一页的图片或行距,把这几行收回去;中间页页首只剩一行时同样处理。

  • 先压图片(每步 1%),再压行距(每步 2%,上限 10%),顺序由「优先使用裕度」决定。
  • 标题分页故意打开的页不按「页首孤行」处理,两条规则不叠加。
  • 一次导出最多修三处;末页无图可压时,去掉残留段落的外边距再试。

关闭孤行控制时末页 3 行;开启后回收为 2 行

左:关闭孤行控制,末页 3 行;右:开启后把 1 行带回上一页,末页只剩 2 行。

相关设置:孤行控制、末页允许行数(默认 2,可设 1–5)。

五条规则怎么排队 ​

  1. 先按标题分页切出强制页边界。
  2. 再处理画廊行:整行换页或整行缩小。
  3. 再处理页末单图:缩到贴底。
  4. 再做标题页尾保护:压得下就把标题留在本页。
  5. 最后修孤行:把末页过少的行回收。

顺序不可颠倒:先压缩图片再切页,会将已压缩的图片重新推下。每次压缩都会改变后续页码,因此每轮结束后需重新测量;默认最多 4 轮。

设置项 ​

设置默认范围作用生效范围
标题分页关开 / 关命中等级的标题另起一页设置页 + 导出窗口(仅当次)
标题分页起始等级h1h1–h6选 h2 时 h1 与 h2 都参与同上
图片分页优化开开 / 关页末压缩总开关设置页 + 导出窗口(写回)
优先使用裕度图片高度图片高度 / 行距目标图上限用完后先压谁仅设置页
图片最大压缩高度15%0–50%单图与整行的压缩上限仅设置页
行距最大压缩高度10%0–20%压行距的上限仅设置页
孤行控制开开 / 关末页回收总开关设置页 + 导出窗口(写回)
末页允许行数21–5回收阈值仅设置页
浮动空间策略按行文顺序有序 / 共享决定规则三是否绑定仅设置页

导出窗口里只有三个分页控件:标题分页(含等级)、图片分页优化、孤行控制。标题分页的改动只对当次导出有效;图片优化与孤行控制的改动会写回设置页,下次导出和设置页显示的都是新值。压缩上限、末页行数、优先裕度、浮动空间策略只能在设置页改。

功能边界 ​

  • 只缩不放:不会为了填满页脚放大图片或字号。
  • 有硬上限:单图或整行最多缩「图片最大压缩高度」;到顶就整块换页,页脚留白是预期结果。
  • 不重排列宽:整行缩小时三格同比例缩、槽位不变,行宽与对齐都不变。
  • 不压表格、代码块、数学块的内部:它们按整体计算页码;超出一页时仍可能在内部断开。
  • 不均衡页面:只处理末页与「页首恰好一行」的中间页,一次导出最多修三处。
  • 图片高度不随宽度变化时直接放弃:固定高容器里缩宽不会变矮,插件探测一次就回退。
  • 原生导出兜底不跑完整分页:隐藏打印文档的几何退化,整行保护、几何压缩、孤行回收可能不生效;能保证的是 CSS 级规则。
  • 页码占页边距:页尾页码需要下边距至少 11mm,否则会被裁掉。
  • 共享浮动空间下规则三不成立:正文会留在本页就近填空。
  • 不改笔记:所有写入只发生在临时打印树,导出结束即回退。

自己复现 ​

  1. 打开演示库的 18-PDF分页 笔记,执行「导出 PDF (AutoGallery)」。
  2. 在导出窗口切到「分页预览」,找到第一个页边界。
  3. 关闭「图片分页优化」,再切一次「分页预览」,对比同一页的页脚。
  4. 打开「标题分页」并设起始等级为 h2,观察每个二级标题是否另起一页。
  5. 把「末页允许行数」从 2 改为 1 或 3,观察总页数是否变化。

仓库内可用一条命令复核所有分页对照图是否仍然成立(只断言,不写文件):

bash
node tools/capture/pdf-stills.mjs --all --lang zh --verify-only

下一步 ​

相关阅读 ​