Сортировать библиографию в алфавитном порядке, если первый автор тот же, используя простой стиль библиографии.

Сортировать библиографию в алфавитном порядке, если первый автор тот же, используя простой стиль библиографии.

У меня много статей, написанных Лайонелом Хо и его коллегами. Я использую natbibpackage и plainnatstyle. Когда я компилирую, библиография не сортируется по фамилии второго автора. Как мне решить эту проблему?

\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 . Предлагаю вам действовать следующим образом:

  • Найдите файлы plainnat.bstи chicago.bstв вашем дистрибутиве TeX. (Почемуchicago.bst Вы можете спросить, почему? Потому что это стиль bib, который выполняет сортировку на основе фамилий всех авторов.) Сделайте копию plainnat.bstи назовите ее, скажем plainnat-mod.bst, .Не редактируйте исходный файл дистрибутива TeX напрямую.

  • Откройте файлы plainnat-mod.bstиchicago.bst текстовом редакторе. Программа, которую вы используете для редактирования ваших tex-файлов, подойдет.

  • В файлах plainnat-mod.bstи chicago.bstнайдите функцию с именемsort.format.names . (В моих копиях этих файлов функция начинается на строке 1207 и строке 1407 соответственно.)

  • В файле plainnat-mod.bstудалите все 29 строк (1207–1235) функции sort.format.names. Скопируйте и вставьте все 21 строку (1407–1427) из функции sort.format.namesв chicago.bstместо вplainnat-mod.bst где вы только что удалили кучу строк.

  • Закройте файл chicago.bst, сохраните и закройте файл.plainnat-mod.bst . Сохраните последний файл либо в каталоге, где находится ваш основной файл tex, либо в каталоге, который ищет BibTeX. Если вы выберете последний вариант, обязательно обновите базу данных имен файлов вашего дистрибутива TeX соответствующим образом.

  • В вашем основном tex-файле измените инструкцию \bibliographystyle{plainnat-mod}на \bibliographystyle{plainnat}. Затем выполните полный цикл перекомпиляции (latex, bibtex и latex еще дважды), чтобы полностью распространить все изменения.

Счастливого BibTeXинга!

Связанный контент