如何在 InDesign 父版页中同时设置分节页码和全文连续页码?
可以实现,但第二套页码需要单独生成
可以保留 MD-23、DS-58 等现有分节页码,再用脚本批量写入全文连续页码。第二套页码的位置和样式由父版页统一设置,数字由脚本按页面在文档中的实际顺序填写。
如果只在父版页上再插入一个 Current Page Number 标记,得到的仍是当前分节的页码。两个相同标记无法分别采用分节编号和全文编号。当前页码标记的用法可参见 Adobe 页码说明。
下面的方案适用于各分节已合并在同一个 InDesign 文档中的情况。
为什么切换 Absolute Numbering 没有效果?
首选项中的 Absolute Numbering 控制 Pages 面板和窗口底部页码框的显示方式,以及打印或导出时页面范围的引用方式。它不会改变排版页面上显示的页码,因此无法直接生成第二套可见页码。Adobe 对该设置的说明
在父版页中准备第二套页码
- 保留现有分节设置和显示分节页码的文本框。
- 在需要使用的父版页上,新建一个独立、未编组、未串接的文本框,专门放全文连续页码。
- 在框内输入占位数字,例如
000,设置字体、段落样式和位置,并预留足够宽度。 - 选中文本框,在
Window > Utilities > Script Label面板中,将脚本标签设置为absolute_page_number。这里设置的是 Script Label,不是 Layers 面板中的对象名称。 - 如果父版跨页包含左右两页,分别在两侧设置对应文本框。其他需要显示全文页码的父版也要做同样设置。
- 确保文本框允许覆盖父版项目,且文本框及其所在图层未锁定。
脚本会在文档页上覆盖指定的父版文本框,再写入数字。覆盖父版项目后,可以单独修改其内容;相关行为见 Adobe 父版项目说明。
用脚本批量填写全文页码
下面的脚本使用 ExtendScript。将其保存为 .jsx 文件后,通过 InDesign 的 Scripts 面板运行。脚本只处理标签为 absolute_page_number 的文本框,因此不要将该标签用于其他内容。
#target indesign
(function () {
if (app.documents.length === 0) {
alert("Open a document first.");
return;
}
var doc = app.activeDocument;
var label = "absolute_page_number";
var updated = 0;
var missing = 0;
for (var i = 0; i < doc.pages.length; i++) {
var page = doc.pages.item(i);
var parentItems = page.masterPageItems;
// Create editable page copies of the labeled parent frames.
for (var j = 0; j < parentItems.length; j++) {
var item = parentItems[j];
if (item.label === label) {
var localFrame = item.override(page);
localFrame.label = label;
}
}
// Update both newly overridden and existing labeled frames.
var found = false;
for (var k = 0; k < page.textFrames.length; k++) {
var frame = page.textFrames.item(k);
if (frame.label === label) {
frame.contents = String(page.documentOffset + 1);
found = true;
}
}
if (found) {
updated++;
} else {
missing++;
}
}
alert("Updated pages: " + updated + "\nPages without a labeled frame: " + missing);
}());
page.documentOffset 是页面在整份文档中的顺序偏移,第一页为 0。加 1 后,就得到从第一页开始计算的全文页码。脚本通过 masterPageItems 找到尚未覆盖的父版项目,并调用 override(page) 创建可编辑的页面副本。相关接口见 Adobe 的 Page 文档和 TextFrame 文档。
例如,某页的分节页码是 DS-1,但它位于整份文档的第 81 页,第二个文本框就会显示 81。
使用时需要注意什么?
- 全文页码是脚本写入的普通文本。插入、删除或移动页面后,需要重新运行脚本,导出前也应更新一次。
- 编号会计算文档中的所有页面,包括封面和空白页。没有放置指定文本框的页面虽然不显示数字,仍占据全文中的页序位置。
- 未应用相应父版,或父版中缺少指定标签文本框的页面,会计入脚本提示的缺失页数。
- 覆盖父版项目后,父版占位文字的后续修改不会自动替换这些数字;其他未被覆盖的属性仍可按父版继承规则更新。
- 该脚本按当前文档计数。如果实际使用的是 Book 中的多个独立
.indd文件,还需要额外累计前面文件的页数。
代码未在你的实际文档中验证。先在文档副本中运行,检查左右页位置、分节交界处以及三位数以上页码是否溢出,再用于正式文件。
备注:内容仅供参考。
