Sortieren Sie die Bibliographie alphabetisch, wenn der 1. Autor derselbe ist, und verwenden Sie dabei den Plainnat-Bibliographiestil

Sortieren Sie die Bibliographie alphabetisch, wenn der 1. Autor derselbe ist, und verwenden Sie dabei den Plainnat-Bibliographiestil

Ich habe viele Artikel von Lionel Ho und seinen Kollegen. Ich verwende natbibPaket und plainnatStil. Beim Kompilieren wird die Bibliographie nicht nach dem Nachnamen des zweiten Autors sortiert. Wie kann ich das lösen?

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

Das Ergebnis:

Bildbeschreibung hier eingeben

Ich habe versucht, die sortOption zu löschen

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

aber das Ergebnis ist das gleiche

Antwort1

Eine schnelle Lösung für Ihr Problem könnte in etwa dem folgenden Code entsprechen:

% 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...

Das \noopsortMakro tut nichts, soweit es LaTeX betrifft, aber es spielt eine Rolle bei den Operationen von BibTeX. Im Grunde „sieht“ BibTeX 3 Einträge, wobei die Jahresfelder „a2007“, „b2008“ und „c2012“ sind. Raten Sie mal, wie sie sortiert werden. Die Partikel „a“, „b“ und „c“ „verschwinden“ bei der nachfolgenden Verarbeitung durch LaTeX.


Eine gründlichere Lösung, um sicherzustellen, dass die Sortierung automatisch nach den Nachnamen aller Autoren erfolgt, besteht in der Änderung (einer Kopie) der Datei plainnat.bst. Ich schlage vor, Sie gehen folgendermaßen vor:

  • Suchen Sie die Dateien plainnat.bstund chicago.bstin Ihrer TeX-Distribution. (Warum chicago.bst, fragen Sie sich vielleicht? Weil es sich um einen Bib-Stil handelt, der zufällig die Sortierung auf Grundlage der Nachnamen aller Autoren durchführt.) Erstellen Sie eine Kopie von plainnat.bstund rufen Sie die Kopie beispielsweise auf plainnat-mod.bst.Bearbeiten Sie eine Originaldatei der TeX-Distribution nicht direkt.

  • Öffnen Sie die Dateien plainnat-mod.bstin chicago.bsteinem Texteditor. Das Programm, das Sie zum Bearbeiten Ihrer Tex-Dateien verwenden, ist dafür geeignet.

  • Suchen Sie in den Dateien plainnat-mod.bstund chicago.bstnach der Funktion namens sort.format.names. (In meinen Kopien dieser Dateien beginnt die Funktion jeweils in Zeile 1207 und Zeile 1407.)

  • Löschen Sie in der Datei plainnat-mod.bstalle 29 Zeilen (1207 bis 1235) der Funktion sort.format.names. Kopieren Sie alle 21 Zeilen (1407 bis 1427) der Funktion und fügen Sie sie sort.format.namesan chicago.bstder Stelle ein, an plainnat-mod.bstder Sie gerade einige Zeilen gelöscht haben.

  • Schließen Sie die Datei chicago.bst, und speichern und schließen Sie die Datei plainnat-mod.bst. Speichern Sie die letztere Datei entweder in dem Verzeichnis, in dem sich Ihre Haupt-Tex-Datei befindet, oder in einem Verzeichnis, das von BibTeX durchsucht wird. Wenn Sie die letztere Option wählen, aktualisieren Sie unbedingt die Dateinamendatenbank Ihrer TeX-Distribution entsprechend.

  • Ändern Sie in Ihrer Haupt-Tex-Datei die Anweisung \bibliographystyle{plainnat-mod}in \bibliographystyle{plainnat}. Führen Sie dann einen vollständigen Neukompilierungszyklus durch (Latex, Bibtex und noch zweimal Latex), um alle Änderungen vollständig zu propagieren.

Viel Spaß beim BibTeXen!

verwandte Informationen