Сортировка цитат и библиографии с использованием natbib и plainnat

Сортировка цитат и библиографии с использованием natbib и plainnat

Я пишу статью в LaTeX. Я работаю с natbibпакетом и plainnatстилем для цитат и ссылок. Проблема в том, как сортируются цитаты и ссылки.

Я хочу, чтобы цитаты были отсортированы по году (для того же года в алфавитном порядке), а ссылки были отсортированы в алфавитном порядке по фамилии автора. Как это сделать?

Мой код:

    \documentclass[12pt,a4paper]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage[left=2.00cm, right=2.00cm, top=2.00cm, bottom=2.00cm]{geometry}
    \usepackage[comma,authoryear,round]{natbib}
    \usepackage[none]{hyphenat} 
    \bibliographystyle{plainnat}
    \setcitestyle{citesep={;}}

    \begin{filecontents}{\jobname.bib}
    @book{A,
     author = {Ho, L. and Auntz, K. and Zwitter, B. F. and Valencia, D.},
     year = {2010},
     title = {Title Example 1},
    }
    @book{B,
     author = {Ho, L. and Yelp, A. and Richter, G. and Gregory, K. T.},
     year = {2005},
     title = {Title Example 2},
    }
    @book{C,
     author = {Ho, L. Abrook, H. and Dolman, R. G. and Fjing, H. and Ho, S. and Xerem, R.},
     year = {2013},
     title = {Title Example 3},
    }
    }
    @book{D,
     author = {Di Bernardo, L. and Mc Daug, C. and Coelho, L},
     year = {2000},
     title = {Title Example 4},
    }
    @book{E,
     author = {Gomes, L. N. L. and Ginoris, Y. P and Brand\~{a}o, C. C. S.},
     year = {2010},
     title = {Title Example 5},
    }
    \end{filecontents}


    \begin{document}
    Hi, this is an example. First a citation \citep{A,B},
then an inline citation \citet{B}.
Another citation \citep{C,D} and
the last one \citep{A,E}
    \bibliography{\jobname}
    \end{document}

И результат с наблюдениями:

введите описание изображения здесь

решение1

Если вы добавите sortопциюnatbib

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

затем сортируется сначала по имени автора, а затем по году. Кажется, вы хотите сначала сортировать по году, а затем по имени автора. Я не думаю, что natbibэто поддерживается.

Редактировать:Довольно легко изменить копию, чтобы plainnat.bstсначала сортировать по году, а потом по имени. Это не похоже на то, что вы показываете в своем примере, но, возможно, это то, что вы хотите.

Сначала создайте копию plainnat.bstв текущем каталоге и назовите ее yearnat.bst. На моей машине я могу сделать это через

$ cp `kpsewhich plainnat.bst` yearnat.bst

Отредактируйте yearnat.bstи измените presortфункцию на следующую.

FUNCTION {presort}
{ calc.label
  label sortify
  "    "
  *
  year field.or.null sortify
  "    "
  *
  type$ "book" =
  type$ "inbook" =
  or
    'author.editor.sort
    { type$ "proceedings" =
        'editor.organization.sort
        { type$ "manual" =
            'author.organization.sort
            'author.sort
          if$
        }
      if$
    }
  if$
  *
  "    "
  *
  cite$
  *
  #1 entry.max$ substring$
  'sort.label :=
  sort.label *
  #1 entry.max$ substring$
  'sort.key$ :=
}

Все, что это делает, — перемещает yearполе в начало ключа сортировки.

Теперь скомпилируйте ваш пример с добавлением опции sort, как указано выше, и \bibliographystyle{yearnat}. Вот результат.

введите описание изображения здесь

Вы можете видеть, что все отсортировано сначала по году, а затем по автору. Если вы хотите узнать, как это работает, вам следует прочитатьbtxhak(или запустив texdoc btxhak).

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