如何将GB7714-2015格式的参考文献表转换为bib文件

1. 背景

latex使用参考文献是一个自动化的工作,但建立和维护bib文件其实一个长期的积累活动。
有些参考文献的bibtex数据是存在,比如从各类学术网站上可以下载到。但有些网站并没有提供这个,比如cnki就不提供bib文件信息。
一种解决方法是使用zotero进行抓取,然后保存到bib文件中。
除此之外,其实还有一种从参考文献著录文本转换为bib文件的途径。
因为cnki会提供当前文献的GB7714-2015格式的著录文本,如果我们将这一文本复制下来,就可以通过一个工具将其转换为bib文件。下面就要讲讲怎么做到这个事情。

由于cnki提供的GB7714-2015格式的参考文献著录文本就是一个长字符串,而bib文件其实也是个文本文件,所以这个转换实质就是个文本处理的工具。这个工具我在biblatex-gb7714-2015宏包发布的时候就提供了,但其实用的人很少,也没有什么反馈,所以都快忘记了。直到前一段,师弟也有这样的需求,那么我就把它再拿出来分享一下。

2. 文献著录文本的获取

cnki的著录文本可以从文献右侧的双引号得到:
文献引用信息入口
得到:

著录文本
我们可以复制:GB7714-2015格式的文本到文件中。

当文献是批量的时候也可以,多选然后用导出分析:

全选
导出结果为

在这里插入图片描述将其存到一个文本文件b.tex中。

3. 转换工具的获取

转换工具名为:gb7714texttobib.pl

如果用户安装有texlive,那么这个工具有的,直接使用或者复制到文件夹中使用均可。若系统中没有,则可以由上面的链接下载。

注意这个工具是perl写的,实话说,我也是当时学习biber的时候顺便学的perl,现在时间这么久过去都有点忘了。但这个工具是经过测试的。

如果无法直接使用那么可能是系统中perl版本比较老,可以下个strawberry perl安装一下。

4. 转换的方法

工具在命令行中执行,命令格式为:

perl gb7714texttobib.pl in=textfilename out=bibfilename

我们已经有了gb格式的参考文献文本,在b.TXT文件中。如果转换后输出的文件名为c.BIB,那么使用如下命令进行转换:

perl gb7714texttobib.pl in=b.TEX out=c.BIB

对于b.TXT文件

[1]王清斌,王文亮,赵睿.基于改进XGBoost算法的船舶事故风险与类型预测[J/OL].安全与环境学报:1-9[2021-09-04].https://doi.org/10.13637/j.issn.1009-6094.2021.1040.
[2]聂仁清,唐瑭,张小轶,张瑾.两型肾癌的共同标志物筛选及机制研究(英文)[J/OL].生物化学与生物物理进展:1-21[2021-09-04].http://kns.cnki.net/kcms/detail/11.2161.Q.20210902.1856.002.html.
[3]樊思含.基于改进BP神经网络的音乐流派分类[J].软件工程,2021,24(09):17-20.
[4]李梦楠,汪明艳.基于机器学习的情感分析方法及应用研究综述[J].软件工程,2021,24(09):21-23+8.
[5]刘娜,熊安元,张强,刘雨佳,战云健,刘一鸣.强对流天气人工智能应用训练基础数据集构建[J].应用气象学报,2021,32(05):530-541.
[6]Getman Rachel Rose,Green Denise Nicole,Bala Kavita,Mall Utkarsh,Rawat Nehal,Appasamy Sonia,Hariharan Bharath. Machine Learning (ML) for Tracking Fashion Trends: Documenting the Frequency of the Baseball Cap on Social Media and the Runway[J]. Clothing and Textiles Research Journal,2021,39(4):3-5.

转换结果为:

c.BIB文件:

% Encoding: UTF-8
@article{ref-1-1-王清斌,
author    = {王清斌 and 王文亮 and 赵睿},
title     = {基于改进XGBoost算法的船舶事故风险与类型预测},
urldate   = {2021-09-04},
url       = {https: //doi. org/10. 13637/j. issn. 1009-6094. 2021. 1040},
}
@article{ref-2-2-聂仁清,
author    = {聂仁清 and 唐瑭 and 张小轶 and 张瑾},
title     = {两型肾癌的共同标志物筛选及机制研究(英文)},
urldate   = {2021-09-04},
url       = {http: //kns. cnki. net/kcms/detail/11. 2161. Q. 20210902. 1856. 002. html},
}
@article{ref-3-3-樊思含,
author    = {樊思含},
title     = {基于改进BP神经网络的音乐流派分类},
journal   = {软件工程},
date      = {2021},
volume      = {24},
number      = {09},
pages     = {17-20},
}
@article{ref-4-4-李梦楠,
author    = {李梦楠 and 汪明艳},
title     = {基于机器学习的情感分析方法及应用研究综述},
journal   = {软件工程},
date      = {2021},
volume      = {24},
number      = {09},
pages     = {21-23+8},
}
@article{ref-5-5-刘娜,
author    = {刘娜 and 熊安元 and 张强 and 刘雨佳 and 战云健 and 刘一鸣},
title     = {强对流天气人工智能应用训练基础数据集构建},
journal   = {应用气象学报},
date      = {2021},
volume      = {32},
number      = {05},
pages     = {530-541},
}
@article{ref-6-6-GRR,
author    = {{Getman Rachel Rose } and { Green Denise Nicole } and { Bala Kavita } and { Mall Utkarsh } and { Rawat Nehal } and { Appasamy Sonia } and { Hariharan Bharath}},
title     = {Machine Learning (ML) for Tracking Fashion Trends: Documenting the Frequency of the Baseball Cap on Social Media and the Runway},
journal   = {Clothing and Textiles Research Journal},
date      = {2021},
volume      = {39},
number      = {4},
pages     = {3-5},
}

5. 转换工具使用的补充说明

有同学可能没有看懂上面的使用方法,这里再补充解释一下。

gb7714texttobib.pl 工具实际就是一个perl脚本,要执行perl脚本,需要perl环境(perl执行程序)。对于linux通常系统会自带的。对于windows系统通常系统不自带,所以需要有这个环境,如果安装使用texlive,那么就已经有了,不需要再操作了,因为texlive也依赖于perl环境,安装过程中就已经具备了perl环境。如果没有使用texlive,那么需要额外安装一个perl环境,比如strawberry perl,网上一搜就有,安装一下。

在完成脚本和环境准备后,那么就是执行脚本的问题。

假设有一个文件夹下放了一个a.txt文件包含了国标格式的文献信息需要转换。如果gb7714texttobib.pl也在这个文件夹下,那么在当前目录下的终端(命令行)执行命令(即终端|命令行当前的目录就是这个放了a.txt文件的目录):

perl gb7714texttobib.pl in=a.txt out=a.BIB

就可以了。

如果gb7714texttobib.pl放到了其它地方(比如d:/gb7714texttobib.pl),那么指定这个路径即可:

perl d:/gb7714texttobib.pl in=a.txt out=a.BIB

6. 特别注意事项

需要注意的是,在使用过程中,perl工具可能对读入的文件有编码要求,比如要求a.txt文件是utf8编码的。但若给出的文件是gbk编码的,可能会报错,比如:

Locale 'Chinese (Simplified)_China.936' is unsupported, and may crash the interpreter.

若产生这种报错,那么只要把保存文献信息的文件,也就是前面例子中的 a.txt文件的编码改成utf8编码即可。

小结

这里提供了一种从GB7714-2015格式的参考文献著录文本到bib文件的转换工具,丰富了bib文件生成手段。如果从cnki的角度看,由于它提供了不同格式的输出,比如NoteExpress的格式,其实我们也可以下载相关软件,将NoteExpress的格式转换为bib文件,那也是一条不错的路径。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐