У меня много статей, написанных Лайонелом Хо и его коллегами. Я использую natbib
package и plainnat
style. Когда я компилирую, библиография не сортируется по фамилии второго автора. Как мне решить эту проблему?
\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инга!