本文将会给出 Zotero 的常用扩展,以及对应的详细配置,足以应对大部分情况,若之后有更多的实用功能,我会在此基础上进行补充。
本文插件不限速下载:
一. 局部翻译
插件名称:Pdf-Translate
地址:https://github.com/windingwind/zotero-pdf-translate
- 支持多种翻译引擎
- 以弹窗形式出现,可调整字体大小
1.1 插件安装
所有 Zotero 插件的安装完全一致,这里以pdf-translate
为例
- 对于打算跟着本文教程操作的朋友,我的建议是先把本文提供的插件全部安装完毕
本文插件不限速下载:
选择「工具」->「附加组件」,打开「Add-ons Manager」窗口
将所需要的插件(zotero-pdf-translate.xpi)拖拽至「Add-ons Manager」窗口内,即可完成插件的安装
在「编辑
」->「首选项
」中可以找到插件的配置,如刚刚新增的「翻译
」选项卡
1.2 介绍
该插件的翻译引擎支持绝大多数,翻译的配置分为字典服务和翻译服务
- 字典服务(仅支持单词翻译):无需配置密钥
- 翻译服务(同时支持句子和单词翻译):部分翻译引擎需要配置密钥(后面带个🔑图标)
如果我们在插件设置中关闭「使用字典服务翻译词语
」,此时单词和句子的翻译都是使用「翻译服务
」
如果勾选「使用字典服务翻译词语
」,将优先使用字典服务翻译单词
故我们关注的重点在翻译服务,在翻译服务中:
不需要配置即可使用的翻译引擎:Google(API)、海词、DeepLx
经小帅测试,密钥可成功配置的翻译引擎有:有道智云、百度
1.3 配置
以有道智云为例,讲解一下详细的配置流程:
注意:有道智云对外提供的服务是计费的,但是对于新注册用户会向其账户赠送 50 元体验金(大概可翻译100万字符)
第一步:打开有道智云注册登录
第二步:访问控制台并创建应用
「自然语言翻译服务
」->「文本翻译
」->「创建应用
」
应用名称:任意
选择服务:可勾选文本、文档、网页翻译
接入方式:选 API
应用类别:任意
点击「确定
」后即可创建成功
第三步:复制「应用 ID」和「密钥」
将「应用 ID」和「密钥」通过#进行组合在一起:应用ID#应用密钥
例如,你的应用ID是112233
,应用密钥是aabbcc
,则应该是 112233#aabbcc
第四步:打开 Zotero 的配置
- 在「编辑」->「首选项」中找到「翻译」选项卡
- 翻译服务选择「有道智云」
- 将组合的内容填入到「密钥」栏中
打开英文文献进行测试,如果弹出的翻译窗口可以正常翻译则表示配置成功
更多密钥的配置可参考官方文档:https://zotero.yuque.com/staff-gkhviy/pdf-trans
二. 样式管理
插件名称: Style-fulltext
地址:https://github.com/MuiseDestiny/zotero-style
其主要功能如下:
- 阅读背景
- 期刊分区
2.1 阅读背景
插件安装完毕,会在文献阅读页面的顶部出现下方的按钮,在该按钮中可以切换阅读背景颜色
2.2 期刊分区
期刊分区的标签如何配置?
打开 easyscholar 网站注册并登录:https://www.easyscholar.cc
然后打开:https://www.easyscholar.cc/console/user/open
找到密钥并复制
在「编辑
」->「首选项
」中找到「高级
」选项卡
- 选择「
常规
」->「编辑器
」->Search中输入「easy
」->双击「extensions.zotero.....
」->填入「密钥
」->「OK
」
右击「标题
」这一行任意位置,然后勾选「期刊标签
」则可显示「期刊标签」
然后右击「期刊标签
」->「列设置
」->「Fields
」->「Map
」->「Set
」
其中「Fields」和「Map」直接 COPY 下面的即可
Fields:utd24, ajg, sciBase, ssci, sci, sciUP, sciif5, eii, cssci
Map:SCIIF=IF,SCII(5),SCI=,SCI升级版,北大中文核心=,北核
三. 获取增强
插件名称:jasminum(茉莉花)
地址:https://github.com/l0o0/jasminum
主要功能有:
- 重要:抓取知网等中文期刊的附件(PDF/CAJ)
- 给知网学位论文添加书签(依赖于PDFtk)
- 更新中文文献引用次数,核心期刊信息
- 合并/拆分姓、名,统一日期格式
当插件安装成功即可拥有上面功能,当我们想要更新需要抓取的某些网站时,可以在「茉莉花」选项卡中根据下图进行操作
给知网学位论文添加书签这个功能需要我们这里再安装一个软件:PDFtk
下载(被墙):https://www.pdflabs.com/tools/pdftk-server
在配置 PDFtk 路径时需要注意
假如我们的安装路径是:C:\Program Files (x86)\PDFtk Server
则我们应该选择(bin目录):C:\Program Files (x86)\PDFtk Server\bin
当路径后边出现 ✔ 表示配置成功
当我们再次获取知网文献或者通过右击PDF ->「知网助手
」->「添加PDF书签
」,将会自动添加对应章节的书签
四. Markdown笔记
插件名称:markdown here
地址:https://github.com/adam-p/markdown-here
让 Zotero 自带的笔记支持 Markdown 语法,同时为下面的笔记管理做铺垫
五. 笔记管理
插件名称:Better Notes
地址:https://github.com/windingwind/zotero-better-notes
其主要功能如下:
- 导入笔记模板
- 关联全部笔记
5.1 导入笔记模板
当我们想要快速对某一篇论文做笔记,可以导入笔记模板,模板效果图展示:
SCI 笔记模版:https://github.com/windingwind/zotero-better-notes/discussions/771
基于上面的 SCI 笔记模版 修改后如下:
Zotero6
name: "[Item]my paper note template"
content: |-
<!-- 标题 -->
<h1 style="color:#193c47; background-color:#FFFDE7; padding:8px;">
${(() => {
const titleTranslation = topItem.getField("titleTranslation");
if (titleTranslation) {
return `(${topItem.getField("date")}) ${topItem.getField("title")} (${titleTranslation})`;
} else {
return `(${topItem.getField("date")}) ${topItem.getField("title")}`;
}
})()}
</h1>
<!-- Meta Data -->
<table>
<!-- 作者 -->
<tr>
<td style="color:#193c47; background-color:#dbeedd; padding:8px;">
<b>作者:</b> ${topItem.getCreators().map((v) => v.firstName + " " + v.lastName).join("; ")}
</td>
</tr>
<!-- 期刊 -->
<tr>
<td style="color:#193c47; background-color:#f3faf4; padding:8px;">
<b style="color:#193c47;">期刊: <b style="color:#FF0000">${topItem.getField('publicationTitle')}</b></b><b style="color:#193c47;"> (发表日期: ${topItem.getField("date")})</b>
</td>
</tr>
<!-- 期刊分区 -->
<tr>
<td style="color:#193c47; background-color:#dbeedd; padding:8px;">
<b>期刊分区: </b>
<!-- 引用了zotero style插件的标签,请提前安装,否则找不到分区 -->
${(() => {let space = " ㅤㅤ ㅤㅤ"
return Array.prototype.map.call(Zotero.ZoteroStyle.data.ztoolkit.ItemTree.globalCache.renderCellHooks.PublicationTags(
0,
Zotero.ZoteroStyle.data.ztoolkit.ItemTree.fieldHooks.globalCache.getFieldHooks.PublicationTags(
"", true, true,
topItem, undefined)
).childNodes,
e => {
e.innerText = space + space + e.innerText + space + space;
return e.outerHTML
}).join(space)
})()
}
</td>
</tr>
<!-- 本地链接 -->
<tr>
<td style="color:#193c47; background-color:#f3faf4; padding:8px;">
${(() => {
const attachments = Zotero.Items.get(topItem.getAttachments());
if (attachments && attachments.length > 0) {
return `<b>本地链接: </b><a href="zotero://open-pdf/0_${attachments[0].key}">${attachments[0].getFilename()}</a>`;
} else {
return `<b>本地链接: </b>`;
}
})()}
</td>
</tr>
<!-- DOI or URL -->
<tr>
<td style="color:#193c47; background-color:#dbeedd; padding:8px;">
${(() => {
const doi = topItem.getField("DOI");
if (doi) {
return `<b>DOI: </b><a href="https://doi.org/${topItem.getField('DOI')}">${topItem.getField('DOI')}</a>`;
} else {
return `<b>URL: </b><a href="${topItem.getField('url')}">${topItem.getField('url')}</a>`;
}
})()}
</td>
</tr>
<!-- 摘要 -->
<tr>
<td style="color:#193c47; background-color:#f3faf4; padding:8px;">
${(() => {
const abstractTranslation = topItem.getField('abstractTranslation');
if (abstractTranslation) {
return `<b>摘要翻译: </b><i>${abstractTranslation}</i>`;
} else {
return `<b>摘要: </b><i>${topItem.getField('abstractNote')}</i>`;
}
})()}
</td>
</tr>
<!-- 笔记日期 -->
<tr>
<td style="color:#193c47; background-color:#dbeedd; padding:8px;">
<b>笔记日期: </b>${new Date().toLocaleString()}
</td>
</tr>
</table>
<!-- 正文 -->
<p></p>
<span>
<h2 style="color:#e0ffff; background-color:#66cdaa;">一.研究内容</h2>
<hr />
</span>
<blockquote>Tips: 做了什么,解决了什么问题,创新点与不足?</blockquote>
<h3>1.1 主要内容</h3>
<p></p>
<h3>1.2 创新点</h3>
<p></p>
<h3>1.3 不足</h3>
<p></p>
<span>
<h2 style="color:#20b2aa; background-color:#afeeee;">二.模型分析</h2>
<hr />
</span>
<blockquote>Tips: 整个模型(以及每一个小的架构)的输入和输出是什么?</blockquote>
</span>
<h3>2.1 数据</h3>
<p></p>
<h3>2.2 方法</h3>
<p></p>
<h3>2.3 实验</h3>
<p></p>
<h3>2.4 结果</h3>
<p></p>
<span>
<h2 style="color:#004d99; background-color:#87cefa;">三.个人总结</h2>
<hr />
</span>
<blockquote>Tips: 你对哪些内容产生了疑问,你认为可以如何改进?</blockquote>
<h3>3.1 疑问点</h3>
<p></p>
<h3>3.2 改进猜想</h3>
<p></p>
<h3>3.3 验证猜想</h3>
<p></p>
Zotero7
name: "[Item]my paper note template"
content: |-
<!-- 标题 -->
<h1 style="color:#193c47; background-color:#eef9fd; padding:8px;">
${(() => {
const titleTranslation = topItem.getField("titleTranslation");
if (titleTranslation) {
return `(${topItem.getField("date")}) ${topItem.getField("title")} (${titleTranslation})`;
} else {
return `(${topItem.getField("date")}) ${topItem.getField("title")}`;
}
})()}
</h1>
<!-- Meta Data -->
<table>
<!-- 作者 -->
<tr>
<td style="color:#193c47; background-color:#dbeedd; padding:8px;">
<b>作者:</b> ${topItem.getCreators().map((v) => v.firstName + " " + v.lastName).join("; ")}
</td>
</tr>
<!-- 期刊 -->
<tr>
<td style="color:#193c47; background-color:#f3faf4; padding:8px;">
<b style="color:#193c47;">期刊: <b style="color:#FF0000">${topItem.getField('publicationTitle')}</b></b><b style="color:#193c47;"> (发表日期: ${topItem.getField("date")})</b>
</td>
</tr>
<!-- 期刊分区 -->
<tr>
<td style="color:#193c47; background-color:#dbeedd; padding:8px;">
<b>期刊分区: </b>
<!-- Zotero7中,引用了Ethereal Style插件的标签,请提前安装Ethereal Style-->
${{
let space = " ㅤㅤ ㅤㅤ"
return Array.prototype.map.call(
Zotero.ZoteroStyle.api.renderCell(topItem, "publicationTags").childNodes,
e => {
e.innerText = space + e.innerText + space;
return e.outerHTML
}
).join(space)
}}$
</td>
</tr>
<!-- 本地链接 -->
<tr>
<td style="color:#193c47; background-color:#f3faf4; padding:8px;">
${(() => {
const attachments = Zotero.Items.get(topItem.getAttachments());
if (attachments && attachments.length > 0) {
return `<b>本地链接: </b><a href="zotero://open-pdf/0_${attachments[0].key}">${attachments[0].getFilename()}</a>`;
} else {
return `<b>本地链接: </b>`;
}
})()}
</td>
</tr>
<!-- DOI or URL -->
<tr>
<td style="color:#193c47; background-color:#dbeedd; padding:8px;">
${(() => {
const doi = topItem.getField("DOI");
if (doi) {
return `<b>DOI: </b><a href="https://doi.org/${topItem.getField('DOI')}">${topItem.getField('DOI')}</a>`;
} else {
return `<b>URL: </b><a href="${topItem.getField('url')}">${topItem.getField('url')}</a>`;
}
})()}
</td>
</tr>
<!-- 摘要 -->
<tr>
<td style="color:#193c47; background-color:#f3faf4; padding:8px;">
${(() => {
const abstractTranslation = topItem.getField('abstractTranslation');
if (abstractTranslation) {
return `<b>摘要翻译: </b><i>${abstractTranslation}</i>`;
} else {
return `<b>摘要: </b><i>${topItem.getField('abstractNote')}</i>`;
}
})()}
</td>
</tr>
<!-- 笔记日期 -->
<tr>
<td style="color:#193c47; background-color:#dbeedd; padding:8px;">
<b>笔记日期: </b>${new Date().toLocaleString()}
</td>
</tr>
</table>
<!-- 正文 -->
<p></p>
<span>
<h2 style="color:#e0ffff; background-color:#66cdaa;">一.研究内容</h2>
<hr />
</span>
<blockquote>Tips: 做了什么,解决了什么问题,创新点与不足?</blockquote>
<h3>1.1 主要内容</h3>
<p></p>
<h3>1.2 创新点</h3>
<p></p>
<h3>1.3 不足</h3>
<p></p>
<span>
<h2 style="color:#20b2aa; background-color:#afeeee;">二.模型分析</h2>
<hr />
</span>
<blockquote>Tips: 整个模型(以及每一个小的架构)的输入和输出是什么?</blockquote>
</span>
<h3>2.1 数据</h3>
<p></p>
<h3>2.2 方法</h3>
<p></p>
<h3>2.3 实验</h3>
<p></p>
<h3>2.4 结果</h3>
<p></p>
<span>
<h2 style="color:#004d99; background-color:#87cefa;">三.个人总结</h2>
<hr />
</span>
<blockquote>Tips: 你对哪些内容产生了疑问,你认为可以如何改进?</blockquote>
<h3>3.1 疑问点</h3>
<p></p>
<h3>3.2 改进猜想</h3>
<p></p>
<h3>3.3 验证猜想</h3>
<p></p>
更多模板:项目讨论区(discussions)就是大家分享模板的地方。
项目讨论区:https://github.com/windingwind/zotero-better-notes/discussions
自定义模板
- 法1:手动新建
- 法2:剪贴板导入
无论是 法1 还是 法2 都需要先复制我们需要的模板代码,在复制的时候需要注意:
手动新建方式不需要复制 上面的代码,剪贴板导入则需要
法1(手动新建):选择「编辑
」->「模板编辑器
」
选择「新建
」->「模板名称
」->「粘贴模板代码
」->「保存
」
注意:模板名称栏在 Zotero6 版本以 [item] 开头,其后边是名称
法2(剪贴板导入):选择「编辑
」->「从剪贴板导入新模板
」
关于自定义模板,常见的报错情况分为以下两种:
情况 1:Template New Template: 1721274243749 Error: ReferenceError: topItem is not defined
因为模板名称得是 [Item]名称
的形式
情况 2:Template Preview Error: TypeError: Zotero. ZoteroStyle. Data. Ztoolkit. ItemTree. FieldHooks. GlobalCache is undefined
笔记模板通过 zotero style 插件读取文件元数据,如果插件版本(我的1.0.4)不匹配可能也不行
导入模板
打开自己要阅读的文件 PDF 后(确保这个 PDF 有条目信息)
「右侧条目笔记一排的加号
」->「从模板新建条目笔记
」->「在弹窗中打开自己要的模板
」->「使用文库中选中的条目
」
关于导入模板,常见的报错情况:
情况 1:Template [item]my paper note template Error: Error: getAttachments() cannot be called on attachment items
必须要选中某个条目信息(直接选中 PDF 不行),不然无法正确的生成笔记模板
另外,如果在笔记中你的标题和摘要并没有进行翻译,请检查下面两项:
- 第一,你没有安装本文提到的「局部翻译」插件
- 第二,条目信息右击,选择「翻译标题」和「翻译摘要」,创建的笔记才会是翻译后的内容
5.2 关联全部笔记
这里先来讲述一下主要工作:可在一个工作区笔记中快速链接到其它笔记
找一个文件夹比如下图的「我的笔记
」,在这个文件夹中「新建工作区笔记
」,然后起个名称
有了这个笔记工作区之后,我们可以在里面输入(需要安装本文提供的Markdown笔记插件)
## 一 任务1
## 二 任务2
## 三 任务3
我们打开刚刚的笔记,然后找到笔记按钮,然后将其添加到「任务2」
然后去「笔记工作区」会发现这两个内容被链接到这里,左下角可以切换预览方式
当鼠标左键点击到链接上,第二个按钮可以将完整内容呈现到下方
六. DOI获取
插件名称:DOI Manager
地址:https://github.com/bwiernik/zotero-shortdoi
DOI 全称:digital object identifier,数字对象唯一标识
DOI 具有唯一性,可以根据它方便搜索到所需要的论文
该插件就是用来获取文献的 DOI ,配合茉莉花插件(会自动获取 DOI)
七. 文件重命名
插件名称:ZotFile
地址:https://github.com/jlegewie/zotfile
如何重命名:选中其中一个文件,右击在弹出窗口中选择【Manage Attachments
】->【Rename and Move
】
- 选中需要命名的文件就可以批量重命名
7.1 命名方法
两种方案:
- 法1(推荐):在源文件上重命名
- 法2:copy 一份源文件再重命名
法1(推荐):在源文件上重命名
- 选择「
工具
」->「ZotFile Preferences
」
- 「
General Settings
」->「Attach stored copy of file(s)
」
源文件的所在的目录可根据下图进行查找
法2:copy 一份源文件再重命名
- 「
工具
」->「ZotFile Preferences
」->「General Settings
」->「Custom Locatioin
」,选择「Choose
」自定义文件复制后的路径
7.2 命名规则
关于重命名的一些格式:
%a
:作者名%y
:年份%t
:论文标题- 更多:https://zotfile.com/index.html#renaming-rules
小帅格式的设置:
- {%y_}{%t}
- 取消勾选【
truncated title after
】,防止标题进行截断- 设置【
Maximum length of title
】为 200
当我们设置好之后,然后在线获取文献时就会自动根据规则命名
八. 备份扩展
插件名称:tara(蒲公英)
地址:https://github.com/l0o0/tara
Tara 是一个用于备份和恢复的插件,支持:
- 备份已安装插件
- 备份 CSL 文件
- 备份 translators/locate 文件夹
- 备份 Zotero 配置及插件配置
当我们安装完毕后在主页面会出现以下按钮:
Tara有五个按钮,其中创建对应恢复,导出对应导入,设置用于调整需要备份的内容
如果想要把备份的文件保存到 Zotero 「我的文库」中,使用「创建」按钮,将会保存至「Tara_Backup」的条目中,较推荐的方案!
如果想要把备份的文件保存到 Zotero 数据的存储位置,使用「导出」按钮,将会保存至「Backup」文件夹内
更多插件的下载,请进入 Zotero 插件商店查看: