在我的参考书目中,有以下两个条目:
Hosseini, S.A., Shah, N., 2011a. Enzymatic hydrolysis of cellulose part ii: Population balance modelling of hydrolysis by exoglucanase and universal kinetic model. Biomass Bioenerg. 35,
3820–3840.
Hosseini, S.A., Shah, N., 2011b. Modelling enzymatic hydrolysis of cellulose part i: Population balance modelling of hydrolysis by endoglucanase. Biomass Bioenerg. 35, 3841–3848.
问题是,从逻辑顺序的角度来看,它们出现的顺序是相反的(第一部分应该在 第二部分之前)。我使用的参考书目样式(elsevier 的 model2-names)按字母顺序对条目进行排序,但对于这两个条目,我想强制第一部分出现在第二部分之前。
以下是.bib
条目:
@ARTICLE{Hosseini2011,
author = {Seyed Ali Hosseini and Nilay Shah},
title = {Modelling enzymatic hydrolysis of cellulose part I: Population balance
modelling of hydrolysis by endoglucanase},
journal = {Biomass Bioenerg.},
year = {2011},
volume = {35},
pages = {3841-3848},
file = {:Hosseini and Shah 2011 - Enzymatic hydrolysis of cellulose part I.pdf:PDF},
journaltitle = {Biomass and Bioenergy}
}
@ARTICLE{Hosseini2011a,
author = {Seyed Ali Hosseini and Nilay Shah},
title = {Enzymatic hydrolysis of cellulose part II: Population balance modelling
of hydrolysis by exoglucanase and universal kinetic model},
journal = {Biomass Bioenerg.},
year = {2011},
volume = {35},
pages = {3820-3840},
file = {:Hosseini and Shah 2011 - Enzymatic hydrolysis of cellulose part II universal kinetic model.pdf:PDF},
journaltitle = {Biomass and Bioenergy}
}
有办法破解它吗?第二部分在第一部分之前,但标题是按字母顺序排列的(这是正常的,因为“酶”在“建模”之前)。
答案1
这是一个自 BibTeX 诞生之初就存在的解决方案(据我所知):
\noopsort
在文件序言中提供一个名为的宏.bib
:@PREAMBLE{ "\newcommand{\noopsort}[1]{} " }
尽管这个宏看起来什么都不做,至少对 LaTeX 来说确实如此,但它在 BibTeX 的排序阶段,接下来将会变得清晰。
修改两个条目的
key
和year
字段如下:@ARTICLE{Hosseini2011a, title = {Modelling enzymatic hydrolysis of cellulose part {I}: Population balance modelling of hydrolysis by endoglucanase}, ... year = {2011\noopsort{2011a}}, ... } @ARTICLE{Hosseini2011b, title = {Enzymatic hydrolysis of cellulose part {II}: Population balance modelling of hydrolysis by exoglucanase and universal kinetic model}, ... year = {2011\noopsort{2011b}}, ... }
在年份字段中添加这些内容后,条目Hosseini2011a
将始终显示在 之前Hossseini2011b
。此方法之所以有效,是因为在 BibTeX 排序运行期间,条目首先按作者字母顺序排序,然后按年份按数字顺序排序, 和\noopsort{2011a}
粒子\noopsort{2011b}
不会被丢弃;而且,由于 'a' 按字母顺序排在 'b' 之前,因此排序顺序将是您想要的顺序。稍后,在 BibTeX 完成排序工作后,LaTeX 会继续进行并忽略这些\noopsort
说明,而实际排版参考书目。
答案2
显然,当作者和年份信息相同时,样式会按标题排序。因此,您可以帮助 BibTeX 先找到正确的。
@ARTICLE{Hosseini2011,
author = {Seyed Ali Hosseini and Nilay Shah},
title = {{\SORTNOOP{a}}{Modelling} enzymatic hydrolysis of cellulose part {I}: {Population} balance
modelling of hydrolysis by endoglucanase},
journal = {Biomass Bioenerg.},
year = {2011},
volume = {35},
pages = {3841-3848},
file = {:Hosseini and Shah 2011 - Enzymatic hydrolysis of cellulose part I.pdf:PDF},
journaltitle = {Biomass and Bioenergy}
}
@ARTICLE{Hosseini2011a,
author = {Seyed Ali Hosseini and Nilay Shah},
title = {{\SORTNOOP{b}}{Enzymatic} hydrolysis of cellulose part {II}: {Population} balance modelling
of hydrolysis by exoglucanase and universal kinetic model},
journal = {Biomass Bioenerg.},
year = {2011},
volume = {35},
pages = {3820-3840},
file = {:Hosseini and Shah 2011 - Enzymatic hydrolysis of cellulose part II universal kinetic model.pdf:PDF},
journaltitle = {Biomass and Bioenergy}
}
还添加\newcommand{\SORTNOOP}[1]{}
到您的文档序言中或添加行
@PREAMBLE{"\newcommand{\SORTNOOP}[1]{}"}
到您的.bib
文件中。
还要注意,I
和II
应该用括号括起来以保持大小写;我还用括号括住了冒号后的第一个单词,这样看起来更好。此外,标题中的第一个单词也必须用括号括起来,否则 BibTeX 会将其小写。