Linux 下的文献管理与使用

Linux下很难有兼容性好的Office软件的文献管理软件(Reference Management Software, RMS)内部插件,因此文献的引用会不如Windows或者MacOS系统上方便。本文给出了从Citavi转移到Linux上文献管理软件Zotero的简单思路,以及文献引用和Trilium Note与RMS使用的方法。

输入

输入工具

  • Zotero
  • Trilium Notes

迁移文献管理软件 (RMS)

功能的对等

Zotero的使用思路是与Windows差不多的,但是有些许不便利的地方。

首先Citavi文献的categories可以等同于Zotero的collection,不过collection以及subcollection的建立在Zotero当中是要按照字母顺序来自动排列的,如果想要定义必须在前面加入001,002这样的数字才可以进行排列。之后Citavi文献的groups是相当于Zotero的tags,但是似乎二者相互导入到处tags对应的是keywords,属实让人有些迷惑。

顺便解释一下,collections/categories是无限层级的一个分类,可以表示从属关系,这也是很多笔记的一个思路。不过从Citavi迁移到Zotero很方便的是而且支持同一个条目存在与不同的collections/categories。tags/groups都是无须的且无层级的分类,只能表示条目的相关性。

理念的差异

Citavi和Zotero存在理念上的不同。

Citavi可以称之为接近完美的All-In-One文献管理工具,它将笔记和文献分离成Reference和Knowledge两个板块,很好的将整个逻辑清晰,但是它们的笔记不支持md,输入有些困难,从Knowledge的角度更倾向于短小的笔记,直接引用。但是Citavi本身自带的RSS阅读器就是很鸡肋的一个工具,不支持RSS源分组,不支持导入RSS源文件,甚至通知不及时;此外tasks工具也是很鸡肋,几乎无法使用,而且跟Reference以及Knowledge占据同样篇幅的版面,实在令人不解。

Zotero本身我更倾向于认为是一个社区驱动的软件,但是Zotero的社区有点让人迷惑,不像Arch或者Debian的社区一样。Zotero本身只提供文献一个板块,并且Zotero本身并不是很智能。Citavi的作者大小写转换,Zotero不可以;Citavi管理文件不需要生成乱码的文件夹,Zotero需要;Citavi可以自定义文献的储存位置,Zotero需要Zotfile插件才可以;Citavi可以批量操作文件,Zotero需要借助Zutilo插件才可以。Zotero有太多太多的功能是使用插件完成的,而这些基础功能本身就应该集合在这个管理工具本身(甚至目前,正式版本5.0.96都没有PDF阅读器)。Zotero beta版本有很好用且比Citavi内置笔记顺滑的standalone note还有跟edge一样基于pdfjs的PDF阅读器。

Zotero将PDF文件本身所带有的注释和笔记考虑在内,beta版本已经可以将所有注释合成一个长笔记(这原本是其一个插件的功能,终于整合了),其倾向也是长笔记,这点与Citavi不同。而Citavi只考虑在其阅读器内做的笔记,所以更为封闭,并且导出格式非常另人无语。如果你非要在文献管理软件内做笔记,就在对应的collection下面建一个Zotero的standalone note,使用Mdnotes for Zotero插件导出,或者直接导出。

思路

笔记

这个时候应该抛弃对All-In-One这种完美工具的幻想,其实RMS的笔记无序、导入导出困难是因为笔记没有任何公认的标准,即使markdown被普遍使用,RMS也没有达成一致。但是markdown相较于富文本有着更加简单的标准,很多平台也支持,比如github、简书、typecho、AUR等。

这里应该选择一个你喜欢的并且开放有搜索功能的markdown笔记软件。这里我选择Trilium Notes而不是现在很火的Notion,Roam Research或者Obsidian是因为这些软件都不是开源软件,而且你需要为此付费。如果它们某一天免费,恐怕你的数据就是它们牟利的方式。我经历过果壳社区、十五言等社区的倒闭,你的数据因此消失,所以,永远也不要相信一个商业公司可以很好地保存你的数据。

你可以在无限层级的Note里根据Zotero的Collection或者你想要的逻辑层级或者你需要的任何逻辑建立笔记。这里比较方便,不像Zotero,Trilium可以自定义笔记顺序,并且可以使用Ctrl + O添加同级note,可以使用Ctrl + P添加child note,并且其promoted label是功能非常强大的,你可以设置DIY自己的笔记并自己决定其用途。

文献

Zotero中可以使用Better BibTex for Zotero插件自定义你自己风格的citation key,若想要更改,在Edit > References > Better BibTex > Citation Keys中设置,我一般使用[auth:lower][year],这样方便使用和记忆。此插件可以输出任意范围的文献的bibtex文件。当设置好,可以使用pin citation key防止citation key的跟更改;如果想要刷新你的设置,使用fresh citation key

引用

markdown对于文献的引用主要有几种格式,分别为[@citation_key]或者@citation_key或者为[@citation_key1, @citation_key2]来进行标记。这里的citation_key就是zotero中你所需要文献所对应的citation key。

输出

输出工具

  • Pandoc
  • Trilium Notes等md笔记工具
  • WPS等office工具

输出思路

Trilium Notes的输出

如果想要通过I-M&M-R-D的结构来输出论文并且每部分都有几个,可以将每一结构选择export > this note and its descendants > markdown,然后每个文件夹内使用pandoc进行转化,这个在后面讲。

也可以把你需要的关键词使用Full Search功能进行搜索,对自笔记使用Shift选择两个以上,之后使用Ctrl + A进行全选,Ctrl + C进行复制,新建一个note之后选中进行Ctrl + V进行复制,之后可以export > this note and its descendants > markdown导出。

对于你设置标签的note可以进行搜索#你的标签进行定位,其他操作方式相同。

pandoc的转换

文件夹内的markdown文件可以使用pandoc进行合并

pandoc *.md -o test.md //替换test.md为你需要的名字

将zotero导出的bib文件,md文件以及你需要的格式文件csl(citation style language)文件放置于同一文件夹中,使用如下命令转换出docx文件

pandoc --citeproc --csl test.csl --bibliography test.bib test.md -o test.docx //将test.csl test.bib test.md替换为你文件夹中对应的文件,test.docx是你想要的文件

WPS等兼容office工具的编辑

目前linux系统下WPS是对于docx文件兼容性比较好的,还有一个是java写的永中offfice是对docx兼容比较好的,但是打开比较慢。用office等工具来编辑输出肯定比latex更为高效且学习成本低。