
Я пишу статью в 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
).