當第一作者相同時,使用 plainnat 參考書目風格按字母順序對參考書目進行排序

當第一作者相同時,使用 plainnat 參考書目風格按字母順序對參考書目進行排序

我有很多由 Lionel Ho 和同事寫的文章。我使用natbib包和plainnat样式。當我編譯時,參考書目不是按第二作者的姓氏排序的。我該如何解決?

\documentclass[10pt,a4paper]{article}
\usepackage[top=1cm,bottom=1cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[comma,authoryear,round,sort]{natbib}
\bibliographystyle{plainnat}
\setcitestyle{citesep={;},yysep={;}}
\begin{filecontents*}{\jobname.bib}
@Article{Ho2012,
  author   = {Ho, Lionel and Dreyfus, J. and Boyer, J. and Lowe, T. and Bustamante, H. and Duker, P. and Meli, T. and Newcombe, G.},
  title    = {Fate of...},
  year     = {2012},
}

@Article{Ho2007,
  author   = {Ho, Lionel and Hoefel, D. and Saint, C. P. and Newcombe, Gayle},
  title    = {Isolation...},
  year     = {2007},}

@Article{Ho2008,
  author  = {Ho, Lionel and Slyman, Najwa and Kaeding, Uwe and Newcombe, Gayle},
  title   = {Optimizing...},
  year    = {2008},}
\end{filecontents*}
\begin{document} 
\citep{Ho2012,Ho2007,Ho2008}
\bibliography{\jobname}
\end{document}

結果:

在此輸入影像描述

我嘗試刪除該sort選項

\usepackage[comma,authoryear,round]{natbib}

但結果是一樣的

答案1

可以按照以下程式碼行快速修復您的問題:

% start of bib file
@preamble{ " \providecommand{\noopsort[1]{}} " }
@Article{Ho2012,
  author   = {Ho, Lionel and Dreyfus, J. and Boyer, J. and Lowe, T. and Bustamante, H. and Duker, P. and Meli, T. and Newcombe, G.},
  title    = {Fate of...},
  year     = {\noopsort{c}2012},}
@Article{Ho2007,
  author   = {Ho, Lionel and Hoefel, D. and Saint, C. P. and Newcombe, Gayle},
  title    = {Isolation...},
  year     = {\noopsort{a}2007},}
@Article{Ho2008,
  author  = {Ho, Lionel and Slyman, Najwa and Kaeding, Uwe and Newcombe, Gayle},
  title   = {Optimizing...},
  year    = {\noopsort{b}2008},}
% bib file continues...

\noopsort就 LaTeX 而言,巨集不執行任何操作,但它在 BibTeX 的操作過程中發揮作用。基本上,BibTeX「看到」3 個條目,年份欄位由「a2007」、「b2008」和「c2012」給出;猜猜它們是如何排序的。 「a」、「b」和「c」粒子在 LaTeX 的後續處理過程中「消失」。


為了確保根據所有作者的姓氏自動執行排序,更徹底的修復涉及修改文件(的副本)plainnat.bst。我建議您按以下步驟操作:

  • 在您的 TeX 發行版中找到文件plainnat.bst和。 chicago.bstchicago.bst您可能會問,為什麼?這是因為它是一種圍兜樣式,恰好根據所有作者的姓氏進行排序。)製作一個副本plainnat.bst並調用該副本,例如plainnat-mod.bst不要直接編輯 TeX 發行版的原始文件。

  • 開啟文件plainnat-mod.bstchicago.bst文字編輯器中。你用來編輯 tex 檔的程式就可以了。

  • 在文件plainnat-mod.bstchicago.bst中,找到名為 的函數sort.format.names。 (在我的這些文件副本中,該函數分別從第 1207 行和第 1407 行開始。)

  • 在該檔案中plainnat-mod.bst,刪除該函數的所有 29 行(1207 到 1235)sort.format.names。複製並貼上函數sort.format.names中的所有 21 行(1407 到 1427)chicago.bstplainnat-mod.bst的所有 21 行(1407 到 1427)複製並貼上到剛剛刪除一堆行的位置。

  • 關閉文件chicago.bst,然後儲存並關閉文件plainnat-mod.bst。將後一個檔案儲存在主 tex 檔案所在的目錄或 BibTeX 搜尋的目錄中。如果您選擇後一個選項,請確保適當更新 TeX 發行版的檔案名稱資料庫。

  • 在你的主 tex 檔中,將指令\bibliographystyle{plainnat-mod}改為\bibliographystyle{plainnat}.然後,執行完整的重新編譯週期(latex、bibtex 和 Latex 兩次以上)以完全傳播所有變更。

BibTeXing 快樂!

相關內容