PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Biblatex: Untscheidung zwischen zwei und mehr Autoren



naraesk
05-09-2013, 01:47
Hallo,

ich nutze biblatex mit biber und möchte den Delimiter zwischen den einzelnen Autorennamen ändern. Folgendes Minimalbeispiel:



\documentclass[ngerman]{scrreprt}

\usepackage[
citestyle=authoryear,
bibstyle=authoryear,
backend=biber,
sortlocale=de_DE,
hyperref=true,
maxnames=5
]{biblatex}

\begin{filecontents}{Literatur.bib}
@article{Fortier:2010,
author = {Fortier, Andr\'{e}s and Rossi, Gustavo and Gordillo, Silvia E. and Challiol, Cecilia},
title = {{Dealing with variability in context-aware mobile software}},
year = {2010}
}

@book{Eisenecker:2000,
author = {Czarnecki, Krzysztof and Eisenecker, Ulrich W.},
title = {{Generative Programming}},
year = {2000}
}
\end{filecontents}
\addbibresource{Literatur.bib}

\begin{document}
\cite{Eisenecker:2000}

\cite{Fortier:2010}

\printbibliography
\end{document}


Ergebnis:



Czarnecki and Eisenecker 2000
Fortier, Rossi, Gordillo, and Challiol 2010


Ich hötte aber gern folgendes:


Czarnecki/Eisenecker 2000
Fortier, Rossi, Gordillo, and Challiol 2010


Also bei zwei Autoren soll der Backslash verwendet werden, bei mehreren Autoren weiterhin das and. Aber Biblatex scheint keinen Schalter dafür zu besitzen, oder? Ich möchte das Verhalten übrigens sowohl bei der Zitierung im Text als auch im Literaturverzeichnis haben.

Danke. :)

sudo
05-09-2013, 10:35
Du scheinst recht zu haben. BibLaTeX hat dafür keine Möglichkeit eingerichtet. Es gibt für die Formatierung der Namen die drei Makros <code>\multinamedelim</code>, <code>\finalnamedelim</code> und <code>\finalandcomma</code>.
Eine Möglichkeit wäre nun ein weiteres Makro <code>\twonamedelim</code> zu erstellen und an geeigneter Stelle im Code oder dem Style einzubauen.
Ich bin mir allerdings nicht sicher, ob mir das gefällt, was du vorhast. Ich bin allerdings auch ein Freund davon Zahlen bis zwölf im Text auszuschreiben.

klops
05-09-2013, 11:14
biblatex zählt bereits, wieviele Namen es sind, damit es entscheiden kann, ob vor dem "and" noch ein Komma eingefügt werden soll. Wenn ich Dich richtig verstanden habe, sollte folgendes daher das gewünschte Ergebnis liefern:
\documentclass[ngerman]{scrreprt}

\usepackage[
citestyle=authoryear,
bibstyle=authoryear,
backend=biber,
sortlocale=de_DE,
hyperref=true,
maxnames=5
]{biblatex}


\renewcommand*{\finalnamedelim}{%
\ifnumgreater {\value {liststop}}{2}{
\finalandcomma \addspace \bibstring {and}\space
}{%
\bibstring{/}%
}%
}


\begin{filecontents}{Literatur.bib}
@article{Fortier:2010,
author = {Fortier, Andr\'{e}s and Rossi, Gustavo and Gordillo, Silvia E. and Challiol, Cecilia},
title = {{Dealing with variability in context-aware mobile software}},
year = {2010}
}

@book{Eisenecker:2000,
author = {Czarnecki, Krzysztof and Eisenecker, Ulrich W.},
title = {{Generative Programming}},
year = {2000}
}
\end{filecontents}
\addbibresource{Literatur.bib}

\begin{document}
\cite{Eisenecker:2000}

\cite{Fortier:2010}

\printbibliography
\end{document}
Das \bibstring um `/' ist nicht zwingend, ich habe es aber eingefügt, damit man es je nach Sprache ggf. durch etwas anderes ersetzen kann. Ob das eine gute Idee ist, mag jeder selbst entscheiden.

naraesk
15-09-2013, 11:59
Vielen Dank, genauso soll es aussehen. :-)

Noch eine Frage: Warum funktioniert das? Ich hätte erwartet, dass \renewcommand nur einmal und nicht für jeden Eintrag aufgerufen wird.

klops
16-09-2013, 12:00
\renewcommand wird nur einmal aufgerufen.