article_image

注意:随意安装别人的 Word 模板文件,容易破坏原有模板,恕本文不提供下载。

习惯 Markdown 语法之人,有朝一日不得不与 Word 搭档时,往往如坐针毡,叹息 Markdown 里蜻蜓点水的操作——比如设置标题层级和创建目录——在 Word 中却要强度关山之力。

如果不是为了吃饭,我也不乐意使用 Word;但被迫与之大眼瞪小眼之际,总得想办法好好相处。总体上,Word 只是功能过多,像一个满脑子塞满化学方程式的工科生,做起题目来杀猪般痛快,但你请他喝杯咖啡,此君却浑身不自在。在《用 Keyboard Maestro 为 Word 打造个性化批注工具箱》中,我试图用 Keyboard Maestro 简化工具栏,挑出深藏于 Word 菜单栏中的功能;本文将沿着 Keyboard Maestro Palette 的思路,用 Palatte 驾驭文本样式功能,并基于此自动生成目录。

Alt text
用 Keyboard Maestro 快速设置 Word 样式

前提知识:自动生成目录

读到此文的读者,应该已经听腻了手打毕业论文目录的都市传说,尽管此类壮士仍然前仆后继,未见绝迹的意思。类似 Markdown 中的层级标记 #,Word——以及 Pages——也可以先手动设置标题层级,再自动生成目录。在 Markdown 中,一级标题的前缀是 #,二级为 ##,以此类推;而在 Word 里则是设置样式(Style),随后再插入一份目录或者直接打开侧边栏的大纲视图,即可查看文档的目录结构。

Alt text
利用样式,展示大纲

然而,设置样式并非易事,总要打开工具栏的二级菜单,磨蹭之间,仿佛患上了腱鞘炎。何况 Word 自带样式在中文环境下几乎无法使用,通常需要根据单位的要求,自行创建样式,这进一步搅乱了菜单。至少我没有见过任何政府机构和大企业使用 Word 默认样式——而除了这两者,还有多少人在使用 Word?

Alt text
Word 的样式窗口藏在二级菜单中

一旦尝过 Palette 的甜头,就很难忍受 Word 的默认工具栏。如果说 Keyboard Maestro 相当于随身工具箱,那么 Word 本身的工具栏简直就是一座工厂——没有人愿意背着一座工厂干活。

用 Keyboard Maestro 简化样式功能菜单

Keyboard Maestro 在简化 Word 的过程中作用有二,首先是用 AppleScript 或模拟键鼠打通与 Word 之间的壁垒,其次则是将类似功能汇集一处,形成一个 Palette。后者我们已经打过几次照面,只需将设置样式的动作设为同一个快捷键,即可呼出 Conflict Palette。不熟悉 Palette 的读者,建议先阅读==文章==。

问题在于如何用 Keyboard Maestro 调用 Word 的功能。不同于高亮或梗概文字颜色,样式选项并无对应的 AppleScript 代码;同时,Word 也没有将样式纳入原生菜单栏,无法通过模拟点击来调用它。两难之下,还是得考虑 Word 的古董级自动化功能:VB Macro(宏)。而 AppleScript 则可以嵌入 VB 代码,Keyboard Maestro 又能够运行 AppleScript,自动化的拼图逐渐在眼前成型,令人额手称庆。

Alt text
触发 Word 功能的链条

让我们倒着编织这条自动化之链。首先,我们需要创建一个样式作为基础材料,并为之设置标题层级。比如,公文的大标题通常是小二的黑体或宋体,并加粗,我们可以在“样式”菜单栏项目中手动创建,然后将其样式基准调整为“标题”。最后一步事关创建目录,其余则纯属视觉效果。

Alt text
为样式设置标题层级

不过,即便是加粗一个段落,使用样式也比寻常的点按操作要快,因为样式是按段套用,而直接加粗则只能作用于当前选中的字符,这就要求先选中文本,一个不多一个不少,其实很劳神。而配合 Keyboard Maestro,使用样式的操作和加粗快捷键一样方便,我更是能用样式就用样式,少动一下脑子都好。

之后,用 Word 录制套用样式的键鼠操作,并将之设置成 Macro——注意不是 Keyboard Maestro Macro,尽管它们名字类似,这完全正常,因为 Word 的自动化和 Keyboard Maestro 一样,主要是模拟一扎现有操作,故称之为宏。录制好的 Macro 需要设置名字,稍后将通过此 Macro 名来调用它。

Alt text
将设置样式的操作录制成宏(Macro)

你可以试着直接在 Word 中运行 Macro,它会模拟刚才点击菜单的一系列操作,但这并非本文鹄的。Macro 也可以直接用代码编写,这同样超出本文范围,我们只要懂得录制就好,不需要掌握 VB 代码(毕竟,我并不打算和 Word 这家伙深入交往)。和 Keyboard Maestro——尤其是 Palette——的交织才是简化交互的重点。

确认 Macro 运行无误后,随即转到 Keyboard Maestro,添加一个 AppleScript 模块,填入调用 Word Macro 的代码。Word 本身支持 AppleScript,而 Keyboard Maestro 又充当了 AppleScript 的容器,三个环节随之打通。用刚才设置的 Word Macro 名称替换 [Macro 名字],即可用 AppleScript 控制 Word。实际上,如果只需要调整文本的视觉效果,则直接用前文代码即可,无需涉足 Word Macro;但样式的功能远不止于好看,还包括生成目录,此时就不能指望全靠 AppleScript 捉刀。

tell application "Microsoft Word"
    run VB macro macro name "[Macro 名字]"
end tell
Alt text
用 Keyboard Maestro 调用 Word 宏

惟需注意,自动化的链条不能脱离最初的样式而存在,而样式又储存于本机的模板文件中;因此拿到一份别人制作的文档时,并不能直接为其设置样式。但我们可以把文档全文复制到新文件中,则 Word Macro 和 Keyboard Maestro 都可以照常工作。

结语

一旦搭建好从各级标题到正文的全套 Palette,设置样式便像盲打一样迅速,甚至比在 Markdown 里面敲井号都快。设置完标题,便可在文档开头插入目录,免去手动输入。

Alt text
利用样式,生成目录

省力还是其次,自动生成的目录,重在可以点击,减轻阅读文档者的压力。尽管现在用手机看文档的人越来越多——而 Word 目录在手机上只是一段死的文本——但一份能够跳转的、能用的目录,仍然传达了制作者的尊重。考虑到无论如何都要为标题设置专用格式,不如一并将样式也设置妥当,自此文档外观和目录功能兼具。

类似的操作,料想也可用在 Pages 上,而 Pages 和 AppleScript 本来就是一家人,估计连编辑器内置 Macro 这一环也可免去。可惜和 Word 打交道已经花去我太多时间,暂时不想多再多一个富文本编辑器,如果本文的思路对 Pages 用户有所启发,那远比我写一个自己没空用的自动化动作要好。


author_avatar

Lawyer, macOS/iOS Automation Amateur