选中经节号,一键从 Accordance 中获取经文内容
平时需要复制某段经文的时候,通常需要通过以下步骤:
1. 打开或切换到 Accordance(或其他圣经应用)。
2. 打开或切换到和合本圣经(如果当前分页中没有和合本的话)。
3. 定位到相关经节(比如约 1:1-3)。
4. 选中经文,选择复制。
当然,也可以通过以下步骤:
1. 使用快捷键
CMD + Option + A 调用 Accordance 的获取经文服务。
2. 在弹出窗口中选择圣经版本,输入经节号,然后选择复制到剪贴板或当前应用。
上述第二种方法比第一种方法更方便。不过,Accordance 不能识别中文书卷名,所以对于用中文写作的用户来说,在输入经节号时常常需要切换到英文输入法,然后再切换回中文继续写作,相当麻烦。另外,以上两种方法复制出来的经文默认是包含经节号,并且在每一节经文前面都有书卷名和章节。如下:
John 1:1 太初有道,道与神同在,道就是神。
John 1:2 这道太初与神同在。
John 1:3 万物是借着他造的。凡被造的,没有一样不是借着他造的。
当然,如果使用上述第一种方法,复制的经文格式可以在“偏好设置→ 引用”里更改。比如,左栏“标记”为空,“显示为”选择“段落”。右栏“标记”也留空,“显示为”选择“省略书名和章号”。“引文出处”选择“不包含引文出处”。在 Accordance 中,选中约 1:1–3,右键,选择“复制为 → 引文 + 出处”(也可以直接使用快捷键 Control + Command + C),然后再粘贴,结果如下:
1 太初有道,道与神同在,道就是神。 2 这道太初与神同在。 3 万物是借着他造的。凡被造的,没有一样不是借着他造的。
这个经文格式可能是我们平时使用频率最高的。但是我们看到,它需要对偏好设置做调整,而且步骤也相对比较多。有没有方法可以更方便地获取经文呢?答案是有的。以下就说明具体的实现方法。这个方法用到 Keyboard Maestro (KM) 和 AppleScript (AS)。另外,可能也会用到 RegularExpression (RegEx)。具体思路如下:
当我选中经节号之后(比如约 1:1-3),按下自己定义的快捷键,电脑将自动执行以下步骤:
1. 将“约 1:1-3”复制到系统剪贴板。
2. 将系统剪贴板内容(即“约 1:1-3”)设置为 KM 的一个变量(比如
BibleRef)。
3. 使用 AS 从 KM 中获取这个变量,并且将其中文书卷名(即“约”)改为 Accordance 能识别的英文书卷名(即“
John”),从而获得新的变量(即“John 1:1-3)”。接着,使用 AS 从 Accordance 中提取经文内容,并将内容放到系统剪贴板。我设定为我自己制作的中文和合本(在 Accordance 中的版本名称为 CUS°)。你也可以设置为其他圣经版本。
4. 如果“偏好设置→ 引用”中已经做了上述更改,那么经文格式已经满足要求,可以直接跳到下一步。如果“偏好设置 → 引用”中设置不一样,比如,我的 Accordance 设置为:经文“内容 → 显示为”是“每节另起一行”,“引文内容 → 显示为”是“仅省略书名”,“引文出处 → 标记分别是 “
(” 和 “
)”,且“位置”是“在引文上面”。这样,导出的经文格式是这样的:
(John 1:1-3)
1:1 太初有道,道与神同在,道就是神。
1:2 这道太初与神同在。
1:3 万物是借着他造的。凡被造的,没有一样不是借着他造的。
那么,就需要通过 RegEx 来改变经文的格式:1)把第一行的括号以及括号中的经节号删除。2)把后面三节经文中 “1:” 都删除,只留下节号。3)把经文合并成一个段落。
RegEx 的命令就是搜索
\((.*?)\)|(\d*:)|\r|¶\s并且将搜索到的内容替换为空(即删除)。 这样,就得到了我们想要的格式。
重要:如果“偏好设置 → 引用”中的设置与我上面所述不同,那么 RegEx 的表达式也可能需要做出调整。
- 系统发出通知:经文内容已经复制到剪贴板。
以上 5 个步骤可以设置为 KM 的一个宏命令,一旦执行,就会自动完成。我把快捷键设置为 F12。这样,当我选中“约 1:1-3” 并按下 F12 之后,就可以立刻获得“约 1:1-3” 的内容。
感兴趣的朋友可以下载这个宏命令尝试一下。提醒一下:
- 除了 Mac,Accordance,和 KM 以外,还需要下载并安装我制作的和合本圣经。
-
Accordance 中的“偏好设置 → 引用”的设置也要跟我前面提到的一样,否则 RegEx 命令就需要做调整。
-
经文书卷可以是英文,比如 John 1:1-3(程序不会做替代)。但是如果是中文的话(比如 约 1:1-3),必须是统一的简称,而且必须要是简体。如果想要包含全称(比如约翰福音),或者使用繁体(比如 約 1:1-3)的话,还需要在 AS 代码中添加这些选项。
-
程序会自动把中文的冒号、逗号、顿号、分号转化为相应的英文符号,因为 Accordance 无法识别中文符号。
-
如果是多段经文的话,只带节号的格式反而会导致混淆。比如:创 1:2;出 2:3 的输出结果是: 2 地是空虚混沌。渊面黑暗。神的灵运行在水面上。3 后来不能再藏,就取了一个蒲草箱,抹上石漆和石油,将孩子放在里头,把箱子搁在河边的芦荻中。——出 2:3 的经文直接接在 创 1:2 之后,看起来好像是来自同一章圣经的。这种情况下,我们反而需要后续再编辑。如果不喜欢这种排列格式,可以在 KM 里关闭 RegEx 这个步骤。输入格式完全由 Accordance 在“偏好设置 → 引用”中控制。
AS 代码如下(没有编程背景,所有代码都是网上搜索拼拼凑凑的。如果有碰到 Bug 或者哪里还可以再精简,欢迎在下面留言):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
on run -- 从 KM 获取变量。 tell application "Keyboard Maestro Engine" set BbRf to getvariable "BibleRef" end tell -- 定义中、英文书卷名称。英文名称只要 Accordance 能识别即可。在英文书卷名后加一空格,因为有些有中文经节号可能在书卷名和章号之间没有留空格,在执行命令时会导致出错。 set BbRfcn to {"创", "出", "利", "民", "申", "书", "士", "得", "撒上", "撒下", "王上", "王下", "代上", "代下", "拉", "尼", "斯", "伯", "诗", "箴", "传", "歌", "赛", "耶", "哀", "结", "但", "何", "珥", "摩", "俄", "拿", "弥", "鸿", "哈", "番", "该", "亚", "玛", "太", "可", "路", "约", "徒", "罗", "林前", "林后", "加", "弗", "腓", "西", "帖前", "帖后", "提前", "提后", "多", "门", "来", "雅", "彼前", "彼后", "约一", "约二", "约三", "犹", "启", ":", ",", "、", ";"} set BbRfen to {"Gen ", "Exo ", "Lev ", "Num ", "Deut ", "Josh ", "Judges ", "Ruth ", "1Sam ", "2Sam ", "1Ki ", "2Ki ", "1Ch ", "2Ch ", "Ezra ", "Neh ", "Est ", "Job ", "Ps ", "Prov ", "Ecc ", "Song ", "Is ", "Jer ", "Lam ", "Ezek ", "Dan ", "Hos ", "Joel ", "Amos ", "Obad ", "Jonah ", "Mic ", "Nah ", "Hab ", "Zeph ", "Hag ", "Zech ", "Mal ", "Matt ", "Mark ", "Luke ", "John ", "Acts ", "Rom ", "1Cor ", "2Cor ", "Gal ", "Eph ", "Phi ", "Col ", "1Thess ", "2Thess ", "1Tim ", "2Tim ", "Titus ", "Philemon ", "Heb ", "James ", "1Pet ", "2Pet ", "1John ", "2John ", "3John ", "Jude ", "Rev ", ":", ", ", "; ", "; "} -- 把中文书卷名替换为英文书卷名(Acc 只能识别英文书卷名)。 repeat with i from 1 to the count of BbRfcn if BbRf contains item i of BbRfcn then set the BbRf to replace_chars(BbRf, item i of BbRfcn, item i of BbRfen) end if end repeat -- 从 Acc 中提取经文,并导出到系统剪贴板。经文版本号为 CUS°。也可以改成其他版本。 set passage to BbRf set accScript to load script alias ((path to scripts folder as text) & "Accordance Script Library.scpt") set translation to "CUS°" tell accScript set t to lookupAccordance(passage, "Scripture", translation, "Verses", "Script", "returnResult", true, "") end tell set the clipboard to t end run -- 将中文书卷名替换为英文书卷名时用到的函数。 on replace_chars(this_text, search_string, replacement_string) set AppleScript's text item delimiters to the search_string set the item_list to every text item of this_text set AppleScript's text item delimiters to the replacement_string set this_text to the item_list as string set AppleScript's text item delimiters to "" return this_text end replace_chars |