
Ich schreibe eine Arbeit in LaTeX. Ich arbeite mit dem natbib
Paket und dem plainnat
Stil für die Zitate und Referenzen. Das Problem ist, wie die Zitate und Referenzen sortiert werden.
Ich möchte die Zitate nach Jahr sortiert haben (für dasselbe Jahr alphabetisch) und die Referenzen alphabetisch nach dem Nachnamen des Autors sortiert haben. Wie kann ich das machen?
Mein Code:
\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}
Und das Ergebnis mit den Beobachtungen:
Antwort1
Wenn Sie die sort
Option hinzufügen,natbib
\usepackage[sort,comma,authoryear,round]{natbib}
dann wird zuerst nach Autorennamen und dann nach Jahr sortiert. Sie scheinen zuerst nach Jahr und dann nach Autorennamen sortieren zu wollen. Ich glaube nicht, dass natbib
das unterstützt wird.
Bearbeiten:Es ist ziemlich einfach, eine Kopie so zu ändern, dass plainnat.bst
zuerst nach Jahr und dann nach Name sortiert wird. Dies scheint nicht das zu sein, was Sie in Ihrem Beispiel zeigen, aber vielleicht ist es das, was Sie wollen.
Erstellen Sie zunächst eine Kopie von plainnat.bst
in Ihrem aktuellen Verzeichnis und nennen Sie sie yearnat.bst
. Auf meinem Computer kann ich das über tun
$ cp `kpsewhich plainnat.bst` yearnat.bst
Bearbeiten yearnat.bst
und ändern Sie die presort
Funktion wie folgt.
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$ :=
}
Dadurch wird das year
Feld lediglich an den Anfang des Sortierschlüssels verschoben.
Kompilieren Sie nun Ihr Beispiel mit der sort
oben genannten Option und dem \bibliographystyle{yearnat}
. Hier ist das Ergebnis.
Wie Sie sehen, ist alles zunächst nach Jahr und dann nach Autor sortiert. Wenn Sie wissen möchten, wie das funktioniert, lesen SieAbonnieren(oder durch Ausführen von texdoc btxhak
).