大家在使用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中使用自带的参考文献专用的样式【书目】:
该样式可能需要修改的地方就是段落里面的悬挂缩进大小了,我用的0.68cm:
其它就基本就保持和正文一样。然后选择全部参考文献,应用样式即可
这样它就会自动变为标准缩进了,之后即便刷新引文目录它也能一直保持这个格式。
2. Zotero引文变交叉引用
已知Zotero插入的引文是没办法跳转的(就是点一下文件标号就跳转到引文目录对应文献的位置)。
这个可以用宏来解决:Zotero如何在word中引用跳转到参考文献/建立超链接
上面这个贴子我自己照着操作了一遍,确实有效。但最好是在所有文献插入完毕后再使用,使用前最好备一下份。
3. csl文件使用方法
csl是zotero引文样式文件,使用时依次点击【编辑】> 【首选项】>【引用】,然后点上面的加号
再选中刚才下载的csl文件即可。
导入时可能会提示:"D:\Downloads\GBT-7714--En-NoDOL_URL_OL.csl"不是一个有效的 CSL 1.0.2 样式文件,你可能不能和Zotero一起正常工作。
,请忽略提示,点击OK继续即可。
然后样式列表里就会有刚才导入的文件,若不想要了点下面的减号即可删除。
上面给的链接是gitee的,若是不会下了,也可以打开后全选复制到一个本地文件,将扩展名改为csl再导入也行。
4. 引文样式修改
其实在zotero中自带有几个中文期刊引文样式:China National Standard GB/T 7714-
但是依然会出现上面的几个问题,所以咱们可以在它官方提供的引文样式文件中进行修改,即可满足咱的使用要求。
首先我们点击上上面截图页面里面的【样式编辑器】,选中一个基础样式,进行更改。
也可以复制到本地编辑器里改了再导入。主要修改以下几个地方:
<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
5. 批量设置文献语言
上面这个虽然能根据中英文自动切换"等"和"et al"。但它是根据文献元数据里的【语言】来判断的,所以如果文献的【语言】显示不准确或为空,则这个判断就会失效。导致有部分英文文献仍然会出现中文的“等”。
为解决这个问题,可以使用一个插件【jasminum】它们把这个叫茉莉花插件,下载地址:github
使用它可以批量识别文献语言,使用方法如下图,在文献上右键即可,也可以先全选所有文献再右键
插件安装方法:
zotero工具栏【工具】>【附加组件】>Install Add-on From File,然后选择下载的xpi格式的插件即可
6. 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