article_image

声明:鄙人并不赞成使用 Calibre 管理论文,盖论文已有更专业的管理工具,例如 Zotero。就我的场景而言,Calibre 只负责图书——即国标所谓的“专著、普通图书”。

“管理”图书有多层含义,或许覆盖了关于图书的一切活动,几篇文章下来,我们也触及了几个主要领域。

愿意精心管理书籍之士,很可能本就是正在读书之人,故本文将目光转向学术领域,提供一种用 LaunchBar 和 Calibre 快速生成引文的方案,以方便学术写作。只可惜本文写作之时,作者正于商海沉浮,难免与实际的学术工作有脱节之处,还烦请读者指出。

>>LaunchBar 动作“Calibre Citation”下载<<

注:本文的 Calibre Citation 动作其实也可以用于打开原始文件,我本人已经用它代替了上一篇介绍的 Calibre Search 动作。

使用简介与原理简析

本动作魔改自涔E的 Alfred 动作时,当时我发现自己并不需要评分等数据(因为我从来不给书籍打分),于是另作增减并调整显示方式——拼接组合之中,忽然想到,为何不干脆用 Calibre 做一个引文工具?毕竟,那些让人头大的引用格式,说到底不过是几项元数据的排列组合,而除了页码,其他图书元数据本就登记在 Calibre 数据库中,大可从中生成引文。

Alt text
不同格式的引文其实是一系列元数据的不同组合

涔获取数据后将其显示在 Alfred 搜索结果列表中,令书籍信息一目了然;我的 LaunchBar 动作保留了这一显示效果,同时另行生成各种标准的引文,只需按下 ‌↩Return 即可将其拷贝到剪贴板。

Alt text
拷贝引文

本文生成引文的过程完全在本地进行,既意味着可靠且不泄露隐私,也要求读者自行维护 Calibre 数据,毕竟,如果连书库中的信息都是空的,那接下来怎么能做好这顿无米之炊呢。

究其原理,不过是在 LaunchBar 的主脚本中组合好引文数据,再通过动作(Action)脚本复制到剪贴板上。读者若希望自定义引文格式,也可以参考下文修改 LaunchBar 脚本的代码。打开脚本,可以看到内置了两种生成引文的代码:

temp["actionArgument"] = bookAuthors + ", *" + bookTitle + "* (" + bookPublisher + ", " + bookDate + ")."

temp["actionArgument"] = bookAuthors + ":《" + bookTitle + "》," + bookPublisher + bookDate + "年版。"

第一段是针对英文文献的,第二段则用于中文文献,这是我主要使用的语言,当然你可以继续添加。1就中文引文而言,我采用国内部分法学期刊的格式,即 作者:《书名》,出版社xxxx年版,就此,需要从 Calibre 中提取作者(bookAuthors)、书名(bookTitle)、出版社(bookPublisher)和出版年份(bookDate)几项数据,并用加号拼接起来。遇到需要插入符号或其他预设文本——比如 年版——的地方,则需要用引号包裹,此为遵循 Python 中拼接字符串的规则。

当然,更标准的 GB/T 7714-2015《信息与文献参考文献著录规则》格式引文也可以轻松生成,其格式为2作者.书名[M].出版地:出版社,出版年份。惟需注意,出版地 当然也是一项需要手动维护的信息,你可以直接将其并入出版社信息,也可以单列,并参考《巴别图书馆计划(一)》的方法存储、提取数据。

至于英文文献,本质上也只是排列各项 Calibre 元数据的问题。

用本文动作打开任何书籍

《巴别图书馆计划(四)》中,我首先解决最普遍的需求——打开文件,而不是面向相对小众的学术写作。不过,本文方案与前文并非再无交叉的两条射线,事实上,本动作也可以打开任何书籍,并且几乎不需要改动代码。在此解释一下使用方法以及技术细节。

需要澄清,之所以分作两篇写作、发表,盖 LaunchBar 的逻辑是一个动作(Action)完成一项工作,而非 Alfred 或 Keyboard Maestro 那样在一个动作中可以分出多个分支。在此背景下,只能先解决紧迫而常见的问题,再回过头来提出更进一步的方案。

回到技术上,须知 LaunchBar 中的任何项目,尽管可丰可俭,但只有一个类型(type),而在按下 ⇥Tab发送给下一环节时,也仅有属于该类型的核心部分数据会被传过去,例如一本书,其核心数据一般就是文件路径(书籍一般是存储于本地的)或 URL(主要是 DEVONthink 中的项目链接)。既然如此,即便不编写任何特殊的脚本,也可以用 LaunchBar 自带的发送功能打开文件:

  1. 在 LaunchBar 中启动“Calibre Citation”动作,检索图书;
  2. 选定一个项目,按一下 ‌⇥Tab,接着按下 ‌⌘Command-↩Return,即可用默认方式打开该路径或链接,若是路径,会调用默认阅读器打开,若是链接,则在对应软件(如 DEVONthink)或网页中开启;
  3. 也可以自定义打开方式,即选定图书后按一下 ‌⇥Tab,再选择想要的阅读器。
Alt text
打开书籍

通过 ⇥Tab 打开书籍的好处在于,可以随时更换打开方式。例如 PDF Expert 改订阅制那会儿,我一面试着切换到 Skim 或原生预览工具,一面有保留了 PDF Expert,实在用不惯新工具的时候换回去,起码别耽误看书。

不过,Alfred 用户难免要批评 LaunchBar 的“发送主义”:在 Alfred 中,选定一个对象——比如一本书——后,可以用不同的快捷键启动对应操作,而不像 LaunchBar 这样反复装膛、瞄准、发射。这种微妙的操作差异,背后或许有更大的文章,我将在日后探讨,在此就姑且承认,LaunchBar 确实不那么符合直觉吧。

小结

本文介绍了用 LaunchBar 检索 Calibre 数据并生成引文的方案,并提供了对应的 LaunchBar 动作。同时,只需稍稍切换使用习惯,本动作也可以用于打开图书,完全覆盖了上一篇文章所涉动作的全部功能。

不过,一切的根本,仍然是维护得当的 Calibre 数据库,毕竟,问渠那得清如许,为有源头活水来。


  1. 在技术上,可以往 Calibre 中专门增加一项元数据,以标出文献所使用的语言,进而据此自动套用合适的引文格式。我涉猎范围并未如此宽广,故暂未采取实际行动。
  2. [M] 表示文献类型是专著或普通图书,而 Calibre 本就是书籍管理工具,故此处假设其中的资料均属 [M]

author_avatar

Lawyer, macOS/iOS Automation Amateur