我使用Zotero来管理我的论文,然而我通过思源笔记来编写论文的阅读笔记。然后就存在一个问题是二者之间的关系难以对应,思源笔记倒是支持点击复制笔记块的超链接,能导出以下形式的超链接。

1
siyuan://blocks/<block-id>

  ​image

  点击后可以通过URL Scheme的形式打开对应的思源笔记块。在Zotero中,也支持用URL Scheme的格式打开文件,但是打开需要指定对应项目的ID,这个ID是普通用户难以获取的。

现有方案

  为了解决上面的问题,我找了不少其它方法。

  其中比较成熟的是插件 Mdnotes。它能导出一个根据模版文件生成的Markdown文件,其中默认包含了标题、摘要、超链接等等。

  或者它能提供一个右键的选项,导出一个Markdown文件,在Markdown文件中仅包含一句话,就是项目的标题和项目的Zotero超链接。

  但是,不,我不需要一个额外的新的Markdown文件,我只是需要一段包含超链接的文本即可。

Markdown ZotSelect

  最后选择是自己写了一种导出文献引用的格式,代码如下:

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
{
"translatorID": "2de2b1a5-5725-494c-9224-5781cdf9b7ef",
"label": "Markdown ZotSelect",
"creator": "ciaranchen",
"target": "md",
"minVersion": "3.0",
"maxVersion": "",
"priority": 100,
"inRepository": true,
"translatorType": 2,
"lastUpdated": "2021-09-21 07:46:51"
}

function doExport() {
// code is edited from https://gist.github.com/nschneid/3134386
var item;
while (item = Zotero.nextItem()) {
let url = 'zotero://select/items/';
var library_id = item.libraryID ? item.libraryID : 0;

var titleS = (item.title) ? item.title.replace(/&/g, '&amp;').replace(/"/g, '&quot;') : "(no title)";
var pubTitleS = (item.publicationTitle) ? item.publicationTitle.replace(/&/g, '&amp;').replace(/"/g, '&quot;') : "";
if (!pubTitleS && item.type) pubTitleS = '[' + item.type + ']';
url += library_id.toString() + item.key.toString();
let title = titleS + ' ' + ((item.conferenceName) ? item.conferenceName : pubTitleS);
Zotero.write(`[${title}](${url})`);
}
}

  代码也上传到了Github Gist中。

  代码下载下来后,保存文件名为: Markdown ZotSelect.js

  使用方法如下。

  1. 打开Zotero数据文件夹(可在 Zotero首选项 -> 高级 -> 数据存储位置 中查看),将 Markdown ZotSelect.js 文件放置在translators文件夹中。
  2. 重启Zotero,可以看到多出了一种导出格式 Markdown ZotSelect。
  3. 如需快捷键复制,在 Zotero首选项 -> 导出 -> 导出格式 中选择 Markdown ZotSelect 导出格式,则可以通过Ctrl+Shift+C 复制Markdown超链接样式的文献链接了。

  复制的文本内容效果如下。

1
[Deeper Insights into Graph Convolutional Networks for Semi-Supervised Learning arXiv:1801.07606 [cs, stat]](zotero://select/items/0IFP9R7CA)

  熟练的同学可以尝试修改脚本内容以符合具体要求。

  ‍