论文的内容和形式都很重要,内容取决于人的思想,而形式则很大程度取决于选用的工具。相比于大家熟悉的word,Latex适用人群相对要小。既然选用了Latex,想必对它的优点多少是知晓的。此文谈几点写作中参考文献的引用问题。如果写英文文章,出版社通常会提供相应的模板,参考文献的引用格式问题一般不用操心。而中文论文就有点麻烦了,中文期刊很少提供Latex模板,至于文献的引用格式,要求遵循GB7714标准,早期的标准是GB7714-2005,新的标准是GB7714-2015。在写作过程上,参考文献的引用不仅要符合规范(标准),同时也希望参考文献的管理要便捷、科学。Latex引用的文献是一个符合规范的著录,而这些著录可以放在一个文本文件中(.bib),而多数学术搜索引擎和文献数学据库都可以直接导出符合规范的著录。如何要下载著录,百度学术就是不错的选择。
1. 百度学术
进入百度学术之后,输入关键词,对于想导出的文献,可以点“批量导出”前面那个文件夹,即表示放入文件夹中
之后点开蓝色的文件夹图标,则出现
可以导出多种格式,对于Latex,则选择BibTex,点击之后,即保存在为.bib文件。
接下来就是如何在Latex文件中插入参考文献了,就是用各种与\cite类似的命令来完成文献的引用和标注。通常而言,我们希望是:1)文献的标号要按首次被引的顺序来编号;2)标号放在中括号内,即形如“[3]”这样;3)如果是连续引用多篇文献,应该采用紧凑的编号方式,即如果连续引用文献1到文献4,标号应该为[1-4],而不是[1,2,3,4],更不应该是[1][2][3][4];4)标号采用上标形式,如“模糊函数的定义[5]”,但有时候采用行内标号,通常是“文献[1-4, 5,7]对这个问题......”。这些格式要求都可以通过命令来控制。还有一些小问题,比如作者多于四个的时候,英文需要用“et al”,而中文需要用“等”。
通常来说,新标准会兼容旧标准,但新标准往往意味着配套工具未必跟得上,但旧标准如果没有缺陷,也就不会去推新标准了,因此,在推新标准的同时,又有一群人试图不断完善旧标准。这里以比较“新”的GB7714-2005和新标准GB7714-2015进行测试。前者是胡海星修改完成的,后者由胡振震修改完成。
胡海星:https://github.com/Haixing-Hu/GBT7714-2005-BibTeX-Style
胡振震:http://bbs.ctex.org/forum.php?mod=viewthread&tid=152755
2. GB7714-2005文献引用标准
胡海星提供的测试代码在win7 texlive2016+teXstduio无法通过编译,用以下代码测试(但依然采用胡海星提供的test.bib文件):
\documentclass[12pt,a4paper]{ctexart}
%\RequirePackage[sort&compress,numbers]{natbib}
%\setcitestyle{super,square}
\begin{document}
\section{参考文献测试}
连续3篇文献引用\cite{cicero,CLR,Hoare1985}
连续2篇文献引用\cite{tr-zh1,zh-book-8},一篇文献\cite{zh-book-4}
\bibliographystyle{gbt7714-2005}
%\nocite{*}
\bibliography{test}
\end{document}
测试结果1:
说明:1. \cite命令默认不是上标形式,连续文献引用时,标号也没有采用紧凑形式;2. 实现了作(译)者超过四,列出前三个,后用“等”;3. 有网址链接。
在实际情况中,可能我们希望可以同时实现上标标注和行内标注,连续标号采用压缩格式,不需要网址链接(需要用另一个.bst,可以从这里下载)。修改代码如下:
\documentclass[12pt,a4paper]{ctexart}
\RequirePackage[sort&compress,numbers]{natbib}%采用压缩标号方式
\newcommand{\citeup}[1]{\textsuperscript{\cite{#1}}}%定义一个新的命令,用来实现上标引用
\begin{document}
\section{参考文献测试}
连续3篇文献引用\cite{cicero,CLR,Hoare1985},上标引用\citeup{dizhipinlun1936}
连续2篇文献引用\cite{tr-zh1,zh-book-8},一篇文章\cite{Constable1986}
\bibliographystyle{gbt7714-2005}%不显示网址链接的.bst文件
%\nocite{*}
\bibliography{test}
\end{document}
测试结果2:
如果直接用百度学术导出来的.bib文件测试,结果又会怎样呢?
不正确的引用\cite{吴大正2005信号与线性系统分析}
结果为
查看.bib文件,百度导出来的著录格式为
@book{吴大正2005信号与线性系统分析,
title={信号与线性系统分析-第4版},
author={吴大正 and 第二作者 and 第三作者 and 第四作者},
publisher={高等教育出版社},
year={2005},
}
如果在year后再加一行语言域,改为如下形式:
@book{吴大正2005信号与线性系统分析,
title={信号与线性系统分析-第4版},
author={吴大正 and 第二作者 and 第三作者 and 第四作者},
publisher={高等教育出版社},
year={2005},
language={zh},
}
输出的结果为
因此,对于百度学术导出来的著录,如果中文作者多于三个,则要加上language加以区分,当然,这种情况不是很多见。
3. GB7714-2015文献引用标准
新标准的一些说明和基本使用情况,可以参考胡振震http://bbs.ctex.org/forum.php?mod=viewthread&tid=152755的说明文档。从作者提供的测试结果及说明文档来看,新的标准后台采用biber,文献类型为bibLatex,与百度学术以及主流学术数据库导出的bibtex类型略有区别,这反而使得新标准与其它文献管理工具的配合显得有点麻烦(可能有好的解决方式?)。用作者提供的测试代码(正文稍作修改)得到如下测试结果:
说明:1. 新标准只提供上标标注方式,连续文献编号自动压缩;2. 文献类型标识符,如[M]与书名之间没有空格;3. 作者超过3个时,后跟等。这些比旧标准都要规范,但有一点还是值得商榷,有时候好像不用上标标注更合理些,比如“文献[3]对此问题作了较深入的分析”。为了实现行内标号,可以修改.cbx文件参数来实现:删除或注释下图红框中的参数,然后用命令\parencite来实现行间引用标注。
测试语句:\parencite{张伯伟2002--,2009-155-155,胡承正2010-112-112}
测试结果:
打开作者提供的.bib文件:
这种格式与百度学术以及其它主流文献数据库导出的bibtex类型的文件有点区别,因此如何得到这种规范的.bib文件就成了问题。至少Jabref3.8还没办法直接导出这种格式的数据来。