# Put Chinese-language entries before English-language entries in the bibliography

How to put the Chinese papers before English papers on reference list and keep each order unchanged ？

mini example:

\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}


Bibliography file (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-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-Modified = {2016-11-15 12:34:28 +0000},
Publisher = {电子工业出版社},
Title = {计算机算法设计与分析},
presort = 1,
Year = {2001}}

@inproceedings{Banerjee2012On,
Author = {Banerjee, Abhijit},
Date-Modified = {2016-11-12 15:09:14 +0000},
Pages = {1--53},
presort =  2,
Year = {2012}}


Engine: Xelatex, BibTex

Compiled output of the mini example:

Desired output:

• Off-topic: In the title field of the Banerjee2012On entry, you should encase the word "China" in curly braces. That way, it won't get lowercased (i.e., typeset as "china") if you use a bibliography style that applies sentence style to the contents of title fields. – Mico Dec 10 '16 at 8:00

You could use the \noopsort device to place the Chinese-language entries ahead of the remaining entries. The macro \noopsort takes 1 argument and is defined as follows:

\newcommand{\noopsort}[1]{}


For instance, one might amend an author field as follows:

Author = {{\noopsort{AAA01}}王晓东},


At first blush, it very much looks like this macro does absolutely nothing with its argument, other than to gobble it up. :-) This is indeed the case -- as far as LaTeX is concerned. However, if \noopsort is used inside fields of a bib entry, BibTeX does not ignore it. Indeed, for sorting purpose, BibTeX will rewrite the contents of the author field as follows:

Author = {AAA01王晓东},


Now, because according to the ASCII table "AAA01" comes before names that use the characters of the Latin alphabet, BibTeX will sort this entry as coming before the others.

% !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-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-Modified = {2016-11-15 12:34:28 +0000},
Publisher = {电子工业出版社},
Title = {计算机算法设计与分析},
presort = 1,
Year = {2001}}
@inproceedings{Banerjee2012On,
Author = {Banerjee, Abhijit},
Date-Modified = {2016-11-12 15:09:14 +0000},
Pages = {1--53},
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}


Addendum to address the OP's follow-up question: If you need to use kluwer instead of \plainnat, you need to make the following adjustments (in addition to changing the argument of \bibliographystyle):

• Provide the instruction \usepackage{har2nat} in the preamble. The kluwer bibliography style is part of the harvard bundle. As such, it is happiest if it's used together with the harvard package. If you'd rather keep using natbib -- say, because you use hyperref and like the ability to create hyperlinks from the citation call-outs to the formatted references -- you should load har2nat, which "translates" many (but not all) harvard directives into equivalent natbib directives.

• Delete the instruction @preamble{ "\providecommand{\noopsort}[1]{} " } from the bib file and, instead, insert the instruction \providecommand{\noopsort}[1]{} in the preamble of your document.

After making these changes, delete all aux files and run through an entire latex-bibtex-latex-latex compile cycle to fully propagate all changes. You should be getting something like this:

• A note about the ordering of the two Chinese-language bib entries: I chose AAA01 and AAA02 as the noopsort labels based purely on the ordering that was provided in the OP's screenshot. Im afraid I have no knowledge of either how Chinese characters should be sorted or how BibTeX may or may not perform sorting of Chinese characters. Maybe somebody else will post a separate answer on this topic? – Mico Dec 10 '16 at 13:24
• I have to change \bibliographystyle{plainnat} into \bibliographystyle{kluwer}. Can I use this code @Mico – XJ.C Dec 10 '16 at 16:28
• @XJ.C - There's a minimal change that has to be made if you need to use the kluwer style. I'll post an addendum with the details. – Mico Dec 10 '16 at 16:42