Ich frage mich gerade ob (bzw. wie) es mit biblatex geht, einen
bestimmten Autorennamen im Literaturverzeichnis hervorzuheben. Das
ist z.B. bei Literaturlisten in (akademischen) Bewerbungen üblich.
Für das Beispiel unten soll also "Hans Müller" im
Literaturverzeichnis immer \textbf{} sein. Alternativ wäre es auch
interessant, den Namen automatisch z.B. mit "H.~M." zu ersetzen.
Lässt sich das mit biblatex bewerkstelligen?
In der Dokumentation habe ich nicht wirklich herausfinden können,
wie man an ein einzelnes Listenelement herankommt und es ändert
(wenn das überhaupt der richtige Ansatz ist). Ich vermute, man
müsste das bibmacro "author" entsprechend anpassen, habe aber keine
Ahnung, was an der im Beispiel markierten Stelle passieren sollte.
Kann mir jemand helfen?
Gruß,
Beni
%%% MINIMALBEISPIEL %%%
\begin{filecontents}{literatur.bib}
@ARTICLE{mueller:2001,
author = {Hans Müller AND Hinz Kuntz AND Peter Meier},
title = {Studie 1},
journal = {Zeitschrift A},
year = {2000},
volume = {1},
pages = {1},
}
@ARTICLE{mueller:2002,
author = {Hans Müller AND Thomas Schmidt AND Peter Meier},
title = {Studie 2},
journal = {Zeitschrift B},
year = {2002},
volume = {2},
pages = {2},
}
@ARTICLE{schulz:2003,
author = {Martin Schulz AND Peter Schmidt AND Sabine Mayer AND
Hans Müller},
title = {Studie 3},
journal = {Zeitschrift C},
year = {2003},
volume = {3},
pages = {3},
}
\end{filecontents}
\documentclass{scrartcl}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage[style=authoryear,maxnames=10]{biblatex}
\makeatletter
\renewbibmacro*{author}{%
\ifthenelse{\ifuseauthor\AND\NOT\ifnameundef{author}}
{\ifthenelse{\iffieldequals{namehash}{\bbx@lasthash}\AND
\NOT\iffirstonpage}
{\bibnamedash}
{\savefield{namehash}{\bbx@lasthash}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Vermutlich hier muesste die author-Liste
%%% geaendert werden
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\printnames{author}%
\setunit{\addspace}}}%
{\global\undef\bbx@lasthash
\printfield{label}%
\setunit*{\addspace}}%
\usebibmacro{year+labelyear}}
\makeatother
\bibliography{literatur}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
> Hallo!
>
> Ich frage mich gerade ob (bzw. wie) es mit biblatex geht, einen
> bestimmten Autorennamen im Literaturverzeichnis hervorzuheben. Das
> ist z.B. bei Literaturlisten in (akademischen) Bewerbungen üblich.
> Für das Beispiel unten soll also "Hans Müller" im
> Literaturverzeichnis immer \textbf{} sein. Alternativ wäre es auch
> interessant, den Namen automatisch z.B. mit "H.~M." zu ersetzen.
> Lässt sich das mit biblatex bewerkstelligen?
>
> In der Dokumentation habe ich nicht wirklich herausfinden können,
> wie man an ein einzelnes Listenelement herankommt und es ändert
> (wenn das überhaupt der richtige Ansatz ist). Ich vermute, man
> müsste das bibmacro "author" entsprechend anpassen, habe aber keine
> Ahnung, was an der im Beispiel markierten Stelle passieren sollte.
>
> Kann mir jemand helfen?
Ich bin mir nicht ganz sicher, ob ich Deine Frage verstehe. Ist das
folgendermassen gemeint – Nehmen wir diesen Eintrag
>
> @ARTICLE{mueller:2001,
> author = {Hans Müller AND Hinz Kuntz AND Peter Meier},
> title = {Studie 1},
> journal = {Zeitschrift A},
> year = {2000},
> volume = {1},
> pages = {1},
> }
Möchtest Du einen style meier, der "Peter Meier" immer fett schreibt,
während der Name beim Verwenden eines anderen Stils normal ausgegeben
wird?
Falls das die Idee ist, fallen mir spontan zwei Varianten ein:
- Wenn dieser "Peter Meier" in allen Einträgen an der gleichen Position
steht, kannst Du mit \DeclareNameFormat wohl erreichen, dass diese
Position – beispielsweise der erste Eintrag – immer fett ist. Wenn ich
Deine Beispiele anschaue, scheint das aber nicht der Fall zu sein. Und
natürlich hast Du ein Problem, wenn "Peter Meier" mal an zweiter Stelle
ist.
- Was wahrscheinlich gehen sollte – allerdings nicht ausprobiert – ist
eine Abfrage mittels \ifnameequals, damit solltest Du den Inhalt eines
Namens bestimmen können und eine entsprechende Formatierung hinkriegen.
Auch das muss wohl am besten in \DeclareNameFormat geschehen.
Mangels LaTeX-Installation an meiner aktuellen Maschine kann ich nicht
konkreter werden, aber cih denke, das sollte gehen.
Simon
Ich möchte den bbx-Stil so anpassen, dass falls ein "Peter Meier"
unter den Autoren ist, dieser immer fett gesetzt wird, während alle
anderen Namen nicht fett gesetzt werden.
> Falls das die Idee ist, fallen mir spontan zwei Varianten ein:
>
> - Wenn dieser "Peter Meier" in allen Einträgen an der gleichen Position
> steht, kannst Du mit \DeclareNameFormat wohl erreichen, dass diese
> Position – beispielsweise der erste Eintrag – immer fett ist. Wenn ich
> Deine Beispiele anschaue, scheint das aber nicht der Fall zu sein. Und
> natürlich hast Du ein Problem, wenn "Peter Meier" mal an zweiter Stelle
> ist.
Korrekt, "Peter Meier" kann an beliebigen Stellen der Autorenschar
stehen.
> - Was wahrscheinlich gehen sollte – allerdings nicht ausprobiert – ist
> eine Abfrage mittels \ifnameequals, damit solltest Du den Inhalt eines
> Namens bestimmen können und eine entsprechende Formatierung hinkriegen.
Die Idee ist gut, aber \ifnameequals testet die ganze Namensliste
gegen ein Macro. Irgendwie bräuchte ich eine Schleife über alle
Namen und einen Test an jedem einzelnen Namen.
> Auch das muss wohl am besten in \DeclareNameFormat geschehen.
Dann wahrscheinlich per \renewbibmacro*{name:first-last}
Danke!
Beni
Stimmt, daran habe ich nicht gedacht. Hmmm, mehr weiss ich spontan nicht.
simon
Hier ist eine mögliche Lösung. Der Grundgedanke ist folgender: Wir
erzeugen für jeden Namen eine eindeutige Signatur im
Format "Nachname|Vorname|Präfix|Suffix". Wir speichen die Signatur
des hervorzuhebenden Namens in einem Makro namens \highlightname.
Wenn die Namen gesetzt werden, erzeugen wir eine Signatur des
aktuellen Namens und vergleichen sie mit \highlightname. So geht's:
---------- highlightname.tex ----------
\documentclass{article}
\usepackage[latin9]{inputenc}
\usepackage[style=authoryear]{biblatex}
\bibliography{highlightname}
% Namessignaturen erstellen; Argumente:
% 1=Makro zum speichern der Signatur
% 2=Nachname
% 3=Vorname
% 4=Präfix
% 5=Suffix
\newcommand*{\mknamesignature}[5]{\def#1{#2|#3|#4|#5}}
% Prüfsignatur für den hervorzuhebenden Namen erstellen
% und in \highlightname speichern
\mknamesignature{\highlightname}{Goossens}{Michel}{}{}
\DeclareNameFormat{sortname}{%
% Änderungen auf Gruppe = aktuellen Namen beschränken
\begingroup
% Prüfsignatur für aktuelle Namen erstellen und in
% \currentsignature speichern
\mknamesignature{\currentsignature}{#1}{#3}{#5}{#7}%
% \currentsignature mit \highlightname vergleichen
\ifdefequal{\highlightname}{\currentsignature}
{\let\mkbibnamefirst=\textbf
\let\mkbibnamelast=\textbf
\let\mkbibnameprefix=\textbf
\let\mkbibnameaffix=\textbf}
{}%
\ifnum\value{listcount}=1\relax
\usebibmacro{name:last-first}{#1}{#3}{#5}{#7}%
\ifblank{#3#5}
{}
{\usebibmacro{name:revsdelim}}%
\else
\usebibmacro{name:first-last}{#1}{#3}{#5}{#7}%
\fi
% Ende der Gruppe
\endgroup
\usebibmacro{name:andothers}}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
------------------------------
---------- highlightname.bib ----------
@Book{test1,
author = {Goossens, Michel and Mittelbach, Frank
and Samarin, Alexander},
title = {The LaTeX Companion},
publisher = {Addison-Wesley},
location = {Reading, Mass.},
year = {1994},
}
@Book{test2,
author = {Mittelbach, Frank and Goossens, Michel
and Samarin, Alexander},
title = {The LaTeX Companion},
publisher = {Addison-Wesley},
location = {Reading, Mass.},
year = {1994},
}
@Book{test3,
author = {Mittelbach, Frank and Samarin, Alexander
and Goossens, Michel},
title = {The LaTeX Companion},
publisher = {Addison-Wesley},
location = {Reading, Mass.},
year = {1994},
}
------------------------------
Zu beachten ist, dass der Name in \highlightname dem Format der Namen
in der bib- bzw. bbl-Datei entsprechen muss. Steht in der bib-Datei
author = {M{\"u}ller, R{\"u}diger}
muss es entsprechend heißen:
\mknamesignature{\highlightname}{M{\"u}ller}{R{\"u}diger}{}{}
Bibtex (Bibtex wohlgemerkt, nicht biblatex) fügt außerdem in
bestimmten Fällen "~" für nicht trennbare Leerzeichen zwischen
Vornamen ein, im Zweifelsfall also immer mit den Namen abgleichen, so
wie sie von Bibtex in die bbl-Datei exportiert werden.
--
Sender address blackholed; do not reply to From: address.
You can still reach me by email at: plehman gmx net.
Das ist ja wie bei biblatex üblich wieder mal grandios einfach und
überzeugend... Vielen Dank!
Gruß,
Beni