在参考书目中将中文条目放在英文条目之前

在参考书目中将中文条目放在英文条目之前

参考文献中如何使中文论文排在英文论文之前,且保持顺序不变?

小例子:

\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 编译循环以完全传播所有更改。您应该得到如下内容:

在此处输入图片描述

相关内容