参考文献中如何使中文论文排在英文论文之前,且保持顺序不变?
小例子:
\documentclass[12pt,a4paper]{article}
\usepackage[UTF8]{ctex}
\usepackage[round]{natbib}
\begin{document}
First citation \cite{eaton2002technology}
Second citation \cite{fanziyin2010}
Third citation \cite{shuangfa}
Fourth citation \cite{Banerjee2012On}
\medskip
\bibliographystyle{plainnat}
\bibliography{citation}
\end{document}
参考书目文件 ( citation.bib
)
@article{eaton2002technology,
Author = {Eaton, Jonathan and Kortum, Samuel},
Journal = {Econometrica},
Number = {5},
Pages = {1741--1779},
Publisher = {Wiley Online Library},
Title = {Technology, geography, and trade},
Volume = {70},
presort = 2,
Year = {2002}}
@article{fanziyin2010,
Author = {范子英 and 张军},
Date-Added = {2016-11-05 15:26:38 +0000},
Date-Modified = {2016-11-06 06:10:56 +0000},
Journal = {经济研究},
Number = {3},
Pages = {53--64},
Title = {财政分权, 转移支付与国内市场整合},
Volume = {45},
presort = 1,
Year = {2010}}
@book{shuangfa,
Author = {王晓东},
Date-Added = {2016-11-15 03:23:53 +0000},
Date-Modified = {2016-11-15 12:34:28 +0000},
Publisher = {电子工业出版社},
Title = {计算机算法设计与分析},
presort = 1,
Year = {2001}}
@inproceedings{Banerjee2012On,
Author = {Banerjee, Abhijit},
Date-Added = {2016-11-12 15:09:14 +0000},
Date-Modified = {2016-11-12 15:09:14 +0000},
Pages = {1--53},
Title = {On the Road: Access to Transportation Infrastructure and Economic Growth in China},
presort = 2,
Year = {2012}}
IDE:Texpad 1.731
引擎:Xelatex、BibTex
小示例的编译输出:
答案1
您可以使用该\noopsort
设备将中文条目放在其余条目之前。该宏\noopsort
接受 1 个参数,定义如下:
\newcommand{\noopsort}[1]{}
例如,可以author
按如下方式修改字段:
Author = {{\noopsort{AAA01}}王晓东},
乍一看,这个宏似乎对它的参数什么都不做,除了吞噬它。:-) 事实确实如此 -就 LaTeX 而言。但是,如果\noopsort
在 bib 条目的字段中使用,BibTeX 不会忽略它。事实上,出于排序的目的,BibTeX 将重写作者字段的内容,如下所示:
Author = {AAA01王晓东},
现在,因为根据 ASCII 表,“AAA01”位于使用拉丁字母字符的名称之前,所以 BibTeX 将种类此条目在其他条目之前出现。
% !TeX program = xelatex
\RequirePackage{filecontents}
\begin{filecontents}{citation.bib}
@preamble{ "\providecommand{\noopsort}[1]{} " }
@article{eaton2002technology,
Author = {Eaton, Jonathan and Kortum, Samuel},
Journal = {Econometrica},
Number = {5},
Pages = {1741--1779},
Publisher = {Wiley Online Library},
Title = {Technology, geography, and trade},
Volume = {70},
presort = 2,
Year = {2002}}
@article{fanziyin2010,
Author = {{\noopsort{AAA02}}范子英 and 张军},
Date-Added = {2016-11-05 15:26:38 +0000},
Date-Modified = {2016-11-06 06:10:56 +0000},
Journal = {经济研究},
Number = {3},
Pages = {53--64},
Title = {财政分权, 转移支付与国内市场整合},
Volume = {45},
presort = 1,
Year = {2010}}
@book{shuangfa,
Author = {{\noopsort{AAA01}}王晓东},
Date-Added = {2016-11-15 03:23:53 +0000},
Date-Modified = {2016-11-15 12:34:28 +0000},
Publisher = {电子工业出版社},
Title = {计算机算法设计与分析},
presort = 1,
Year = {2001}}
@inproceedings{Banerjee2012On,
Author = {Banerjee, Abhijit},
Date-Added = {2016-11-12 15:09:14 +0000},
Date-Modified = {2016-11-12 15:09:14 +0000},
Pages = {1--53},
Title = {On the Road: Access to Transportation Infrastructure and Economic Growth in {China}},
presort = 2,
Year = {2012}}
\end{filecontents}
\documentclass[12pt,a4paper]{article}
\usepackage[UTF8]{ctex}
\usepackage[round]{natbib}
\bibliographystyle{plainnat}
\begin{document}
\cite{eaton2002technology}; \cite{fanziyin2010}; \cite{shuangfa}; \cite{Banerjee2012On}.
\bibliography{citation}
\end{document}
附录解决OP的后续问题:如果您需要使用kluwer
而不是\plainnat
,则需要进行以下调整(除了更改 的参数\bibliographystyle
):
\usepackage{har2nat}
在序言中提供说明。kluwer
参考书目样式是harvard
软件包的一部分。因此,最好与软件包一起使用harvard
。如果您宁愿继续使用natbib
——比如说,因为您使用hyperref
并喜欢从引文标注到格式化参考资料创建超链接的功能——您应该加载har2nat
,它将许多(但不是全部)指令“翻译”harvard
为等效natbib
指令。从 bib 文件中删除该说明
@preamble{ "\providecommand{\noopsort}[1]{} " }
,并将该说明插入到\providecommand{\noopsort}[1]{}
文档的序言中。
进行这些更改后,删除所有辅助文件并运行整个 latex-bibtex-latex-latex 编译循环以完全传播所有更改。您应该得到如下内容: