大家在使用zotero时很容易遇到的问题:
- 英文参考文献中有多个作者时出现“等”,而不是用"et al"
- 引文最后面有不需要的DOI号,或者论文链接
- 对于一些期刊分类上会出现OL字样,即[J/OL]
- 作者名为全大写
本文主要解决以上几个问题,有下面几个特性:
- 根据中英文文献自动切换用“等”还是用"et al"
- 引文最后去掉了DOI号以及文章链接
- 去掉期刊分类的OL字样
- 作者名改为首字母大写
为了节省大家时间先提供我修改好的cls文件:gitee链接
样式预览:
如果达到目的,下面就可以不用看了。
这里分享两个别人的zotero一些使用经验: zotero软件教程、
Chinese-STD-GB-T-7714-related-csl
1. word 参考文献样式
如果默认的话,把参考文献放进去,它的缩进是这样的
如果通过手工调整,下一次再刷新引文目录,它又会恢复成原样。
所以这种情况,我们可以在word中创建一个参考文献专用的样式:
其中需要注意的是,样式基准需要选择【书目】,其它就基本就保持和正文一样。主要是因为这个书目样式所用的段落格式是首行悬挂。
然后选择全部参考文献,应用样式即可
这样它就会自动变为标准缩进了:
2. csl文件使用方法
csl是zotero引文样式文件,使用时依次点击【编辑】> 【首选项】>【引用】,然后点上面的加号
再选中刚才下载的csl文件即可。
导入时可能会提示:"D:\Downloads\GBT-7714-2015-En-NoDOL_URL_OL.csl"不是一个有效的 CSL 1.0.2 样式文件,你可能不能和Zotero一起正常工作。
,请忽略提示,点击OK继续即可。
然后样式列表里就会有刚才导入的文件,若不想要了点下面的减号即可删除。
上面给的链接是gitee的,若是不会下了,也可以打开后全选复制到一个本地文件,将扩展名改为csl再导入也行。
2. 引文样式修改
其实在zotero中自带有几个中文期刊引文样式:China National Standard GB/T 7714-2015
但是依然会出现上面的几个问题,所以咱们可以在它官方提供的引文样式文件中进行修改,即可满足咱的使用要求。
首先我们点击上上面截图页面里面的【样式编辑器】,选中一个基础样式,进行更改。
也可以复制到本地编辑器里改了再导入。主要修改以下几个地方:
<macro name="accessed-date">
<date variable="accessed" form="numeric" prefix="[" suffix="]"/>
</macro> -->
上面这个是引用日期,不需要了直接注释掉
<macro name="author">
<names variable="author">
<name>
<!-- 这一行是姓名全大写 ,
可取值:“lowercase”,“uppercase”,“capitalize-first”,“capitalize-all”,“sentence”,“title”
-->
<!-- <name-part name="family" text-case="uppercase"/> -->
<!-- 这一行是姓名首字母大写 -->
<name-part name="family" text-case="capitalize-first"/>
<name-part name="given"/>
</name>
<substitute>
<names variable="composer"/>
<names variable="illustrator"/>
<names variable="director"/>
<choose>
<if variable="container-title" match="none">
<names variable="editor"/>
</if>
</choose>
</substitute>
</names>
</macro>
上面这个是作者更改,主要修改text-case=“”,默认是uppercase表示全大写
<!-- 获取和访问路径以及 DOI -->
<macro name="url-doi">
<group delimiter=". ">
<text variable="URL"/>
<text variable="DOI" prefix="DOI:"/>
</group>
</macro>
上面是显示DOI号,这一整段注释掉就可以
<choose>
<if variable="URL DOI" match="any">
<text value="OL"/>
</if>
</choose>
上面是显示OL的,咱也将它一整段注释掉
<layout locale="en"><text variable="citation-number" prefix="[" suffix="]"/><text macro="entry-layout"/></layout>
上面这一段是用来自动识别中英文的,默认是注释掉的,咱把它取消注释即可
以上这些内容也是本人修改的主要内容,其它的基本没动。
再推荐一个可视化编辑csl文件的网站:Visual CSL Editor
3. 批量设置文献语言
上面这个虽然能根据中英文自动切换"等"和"et al"。但它是根据文献元数据里的【语言】来判断的,所以如果文献的【语言】显示不准确或为空,则这个判断就会失效。导致有部分英文文献仍然会出现中文的“等”。
为解决这个问题,可以使用一个插件【jasminum】它们把这个叫茉莉花插件,下载地址:github
使用它可以批量识别文献语言,使用方法如下图,在文献上右键即可,也可以先全选所有文献再右键
插件安装方法:
zotero工具栏【工具】>【附加组件】>Install Add-on From File,然后选择下载的xpi格式的插件即可
4. js脚本使用
如果还想要对文献做一些其它的批量修改操作,可以考虑使用javascript。
比如刚才的想要批量修改文献语言的操作,可以使用如下js代码:
/*
【功能】: 批量修改文献的[语言]字段,根据文献标题识别中英文文献,
将中文文献的[语言]字段更改为"zh-CN"或"中文"或"zh",英文文献更改为"en"或"en-US".
以便在文献引用时区分“等”和"et al".
【使用方法】:在zotero工具栏中选择[工具]>[开发者]>[Run JavaScript],
然后将本代码粘贴到[Code:]框中,再在zotero文献库中选择想要修改的文献,再点击[Run]即可。
【注意】:它仅对在zotero被选择的文献生效,若想作用于所有文献,则需在zotero
中切换到[我的文库],然后ctrl+a全选所有文献,
*/
var items = ZoteroPane.getSelectedItems();
let reg = /^[\u4e00-\u9fa5]+$/; // 正则表达式,用于匹配中文字符
let ch_ls = [];
let en_ls = [];
let num_ch = 0;
let num_en = 0;
let num_file=0;
for (let item of items) {
var title = item.getField('title');
//跳过没有元数据的文件,默认只要有元数据就有摘要,这个可能也不准
if (!item.getField("abstractNote")){
num_file += 1;
continue;}
item.setField("language", "en");
try{
if (reg.test(title)){
item.setField("language", item.getField("language").replace(/.*/, 'zh-CN'));
num_ch += 1;
ch_ls.push(title);
}
else {
item.setField("language", item.getField("language").replace(/.*/, 'en-US'));
num_en += 1;
en_ls.push(title);
}
} catch(error){
console.error("Error: ", error.message);
return title;
}
await item.saveTx()
}
return "修改中文 "+num_ch+" 个,英文 "+num_en+" 个"+"跳过文件 " + num_file + "个";
// return [ch_ls, en_ls];
使用时,只需要粘贴到:zotero工具栏 > 【工具】 > 【开发者】>【Run JavaScript】
然后在zotero文献库里选择需要修改的文献,再运行即可
需要注意的一点是,对于上面的代码,如果某文献的时间或什么字段本来没有填入值的时候,它就会获取不到这个字段。还有些文献可以是直接把pdf拉进去的而没有识别到它的元数据,需要注意会不会报错。
更详细的api,请查看官方文档:Zotero JavaScript API