按逻辑顺序对参考书目条目进行排序(第一部分和第二部分)

按逻辑顺序对参考书目条目进行排序(第一部分和第二部分)

在我的参考书目中,有以下两个条目:

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 的排序阶段,接下来将会变得清晰。

  • 修改两个条目的keyyear字段如下:

    @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文件中。

还要注意,III应该用括号括起来以保持大小写;我还用括号括住了冒号后的第一个单词,这样看起来更好。此外,标题中的第一个单词也必须用括号括起来,否则 BibTeX 会将其小写。

相关内容