Skip to main content

打造可扩展跨平台的科研工具链

· 13 min read
Ferdinand Su

在填补了“绘图”这一软肋后,我完成了我跨平台科研工具链的最后一块拼图。这套工具链包含了三个软件:Zotero,Obsidian和Draw.io。唯一美中不足的Obsidian并非开源软件。在这篇博客中,我将简要分析我的配置和用法。

Zotero

Zotero是一款开源的文献管理工具,提供以下关键的基础功能:

  • 文献分类
  • 浏览器插件,可以实现在文献在线页面(如IEEEXplore)自动索引和下载(下载Full Text PDF需要插件)
  • PDF阅读
  • 文献库在线同步,实现跨设备
  • 跨平台支持,iPad也能用来读文献
  • 对MS Word的可靠文献引用支持(尽管我主要使用LaTeX\LaTeX,有些报告还是不得不使用Word的)

浏览器插件

请先建好你文献库的分离,然后打开随便一个文献的在线页面,例如[这个(夹带私货)](Detection and filling of functional holes in microservice systems: : Method and infrastructure support: Information and Software Technology: Vol 162, No C (acm.org)),然后点一下Zotero插件的图标(一般在右上角,图标是文档的形状),即可完成自动索引。 如果你安装了ZotFile扩展,插件还会自动帮你下载PDF,非常的方便。

MS Word支持

可以参考这篇文章,网上类似的博客很多,我就不多赘述了。 值得注意的是,Zotero默认不包含国内中文文献的常用引用格式,你可能需要手动添加一下。这里提供一个例子,不保证准确,可能需要手动加工。

跨设备同步

Zotero提供免费的文献库同步,但是文献库附件(例如下载下来的pdf等)的官方同步需要收费。或者,你也可以像我一样选择自己的WebDAV进行同步。 无论如何,你都需要先创建和登录你的Zotero账号,然后在配置附件同步方式,

Zotero第三方插件推荐

  • ZotFile:附件管理插件,基本上是必备的
  • bwiernik/zotero-shortdoi:自动补全文献DOI的,主要用于手动导入PDF时
  • frangoud/ZoteroDuplicatesMerger:合并文献库内重复条目的,基本上也是必备
  • Better BibTeX:优化bibtex citekey格式的,如果你使用LaTeX\LaTeX,那么这个我也非常建议安装
  • wshanks/Zutilo:提供各种实用宏(或者说快捷方式)的插件,很实用
  • Zotero-mdnotes:主要用来联动Obsidian Markdown笔记的插件,后文会详细讲解用法
  • windingwind/zotero-pdf-translat:适用于Zotero的PDF划选翻译软件,支持多种格式和语言,不要再用闭源的某云文献阅读了!顺便一提,翻译API可以考虑配置百度的开放API,速度还是很快的,准确率也过得去。(如果您有钱买DeepL,当我没说)

Obsidian

Obsidian是一款可用于Markdown文档库编辑的闭源商业软件。作者承诺对个人用户永久免费,希望他们信守承诺吧。如果你一次只编辑一个markdown,那么TyporaObsidianTypora \gg Obsidian,但如果你需要维持大量的Markdown笔记,或者说一个Markdown文档库,那么ObsidianTyporaObsidian \gg Typora

Obsidian使用Vault,或者说仓库这一概念来管理文档库,一个仓库就是一个本地目录。开始Obsidian的大部分配置会储存在仓库目录的.obsidian文件夹下,包括外观、快捷键,甚至插件。你可以直接参考我的配置,保存到对应的文件即可。

远程同步--Remotely Secure

Obsidian最著名的远程同步软件Remotely Save我当然听说过,但如果这款正是它频繁更新的Fork,阁下又该如何应对呢?

博主一开始确实在用Remotely Save,不过经常遇到401异常,状态显示不及时等问题,体验很差;后来发现该插件已经2年未曾更新了。如今,我已经全面改用Remotely Secure,感觉好多了。

Ozan's Image in Editor Plugin

  • Plugin helps you to view imagesiframesPDF Filesexcalidraw drawings and transclusions directly under the Editor view without a necessity to switch to Preview mode.
  • The plugin allows you to see both your local images and images from internet.
  • Both Markdown and Wikilinks formats are supported as described below.
  • You can resize the view of images using ALT-TEXT options provided below to ensure that they don't take too much place in your screen as long as it is not needed. 最主要的功能是支持图片大小调整,妈妈再也不用担心我的md文件里一个图片占一屏了

Dataview

Dataview is a live index and query engine over your personal knowledge base. You can add metadata to your notes and query them with the Dataview Query Language to list, filter, sort or group your data. Dataview keeps your queries always up to date and makes data aggregation a breeze.

You could

  • Track your sleep by recording it in daily notes, and automatically create weekly tables of your sleep schedule.
  • Automatically collect links to books in your notes, and render them all sorted by rating.
  • Automatically collect pages associated with today's date and show them in your daily note.
  • Find pages with no tags for follow-up, or show pretty views of specifically-tagged pages.
  • Create dynamic views which show upcoming birthdays or events recorded in your notes

and many more things.

据说很强大,但其实我装上后还没用过...

From Template

This plugin adds commands to create notes based on template files. It will go through each file in the templates directory in the settings, and create a command 'From Template: ' for each file. Each command will create a note based on the given template, with a popup to request values for each variable found in the template in Mustache syntax.

Template Demo

一个精巧的模板插件,个人感觉比Templater更易用,后者太重、太难学习了,如果你和我一样,只想花1-2分钟来学习模板,那么这款From Template一定不会让你失望的。

MDNotes联动

互联网上能找到许多种让Zotero和Obsidian联动的套路,此处我选择了让我用起来最舒服的一种套路,介绍给大家。本套路适用于以下场景:

  • 平时使用Zotero进行文献阅读,可能会在PDF中高亮,但是一般不直接在其上写太多笔记
  • 笔记主要记录在Obsidian的某一文档库中,每个文献会对应于一个Markdown文件,文件中记录文献的主要内容(创新点、方法、结果等等);这些文件会由MDNotes插件自动按照模板生成
  • 在Obsidian可以直接点链接Call出Zotero;如果Obsidian是默认的Markdown编辑器,Zotero也可以直接Call出Obsidian(尽管这基本没必要)
  • 文档库的其它文件也会引用文献,这种引用可以直接用对其关联Markdown文献的引用代替

Step. 1 安装和配置MDNotes插件

请在Zotero-mdnotes官方网站下载插件并安装。在Zotero的工具菜单,找到MDNotes首选项,配置如下: 有以下几点需要注意:

  1. 如果不使用条目的citekey,默认使用文献的标题作为markdown笔记的文件名;如果你更喜欢citekey,也可以勾选此项,记得在better bibtex里配置好用的citekey格式!
  2. 内链建议使用Obsidian兼容的Wiki Style
  3. 导出目录可以是任意的,在你的Obsidian仓库下即可,但是模板目录一定是该目录的子目录

Step. 2 创建MDNotes模板

在模板目录下,新建Mdnotes Default Template.md,文件名一定一模一样!该文件将作为MDNotes生成文献笔记的基础模板。模板大体上就是包含yaml头的markdown文件,其中包含一些宏,格式为%(macroname),其中macroname是可调用的宏名,详见官方文档。注意我只介绍和使用了官方文档中所谓的wildcard而不使用placeholder,这是因为后者的可扩展性和易用性都比较差。

你可以参考我的模板LRCtl-tagsLRCtl-Keywords两个字段是我用来记录文献阅读进度和关键信息的元数据。

Step. 3 导出Markdown笔记

在Zotero文献库中选择任意个文献条目,右键-Mdnotes-批量导出为Markdown文件(哪怕只导出一个文件也需要选批量),然后把文件保存到你的Obsidian文档库里即可。

如果你的右键菜单里没有这个选项,说明MDNotes插件的安装有问题,重装一下即可解决。

绘图的最终解决方案:Draw.io

博主之前用的绘图软件一直是MS Visio。Visio挺好用的,就是......

  1. 似乎是二进制文件,不方便git等软件管理
  2. 有的时候,吸附很痛苦
  3. 功能花里胡哨,大部分用不到
  4. 默认主题是真的丑,文本框默认白色背景是真的**
  5. 只能在windows上用 所以,在遇到Draw.io之前,我一直认为画图是很痛苦的事情。

Draw.io是一个以HTML5和JavaScript写成的跨平台绘图自由及开放源代码软件。

开源,跨平台。我觉得看到了这两个关键词,就没什么可以拒绝它的理由了。最关键的是,Draw.io允许保存为可二次编辑的svg文件,这意味着我可以随时在Obsidian中插入这些svg,后续改动原图时,不需要重新导出为任何新图片格式,只需要点下保存,刷新Obsidian页面,即可在笔记中看到svg更新!

唯一美中不足的是,这些svg不是标准的svg图片,和MS Office兼容性不佳,插入到这些软件时,还是需要导出为png;好在一般这些软件用的也不是很多吧!

于是,我科研工具链的最后一块拼图----绘图软件就这样补上了。现在,我的科研工具链是查文献-记笔记-画图表三位一体的,还是可扩展、跨平台的。就此开始高效的科研吧!