PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hervorhebung im Literaturverzeichnis mit biblatex



sensemann
08-03-2012, 07:47
Hallo,
diesmal eine wahrscheinlich einfache Frage - ich werde nur aus der biblatex.def nicht so recht schlau. Ich möchte einen Autor im Literaturverzeichnis durch Unterstreichung hervorheben. Die Lösung, die ich habe, funktioniert, haut aber einfach bei weiteren Autoren ein Komma hinten dran. Das sieht aber so aus:

Autor A, Autor B, Autor C.

Ich hätte gern das Standardverhalten, nämlich:

Autor A, Autor B und Autor C

Allerdings weiß ich nicht, wie ich das innerhalb von \DeclareNameFormat ausdrücken kann. Könnt ihr mir auf die Sprünge helfen?


\documentclass[final,ngerman]{scrbook}

\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}

\usepackage{filecontents}
\begin{filecontents}{literatur.bib}
@BOOK{Szyperski2002a,
title = {Component Software: Beyond Object-Oriented Programming},
year = {2002},
author = {Clemens Szyperski},
}
@BOOK{Einstein2003,
title = {Component Software: Beyond Object-Oriented Programming},
year = {2003},
author = {Albert Einstein and Clemens Szyperski and Bruce Wayne},
}
\end{filecontents}

\usepackage[style=authoryear-ibid,backend=biber,firstinits=true]{biblatex}
\bibliography{literatur}

\usepackage[normalem]{ulem}
\renewcommand*{\nameyeardelim}{\addcomma\space}
\DeclareNameAlias{sortname}{last-first}

% underline name in bibliographies
\DeclareNameFormat{author}{%
\ifthenelse{\equal{#1}{Szyperski}}%
{\uline{#1\ifblank{#4}{}{\addcomma\space#4}}}%
{#1\ifblank{#4}{}{\addcomma\space#4}}%
\ifthenelse{\value{listcount}<\value{liststop}}%
{\addcomma\space}
{}}

\begin{document}

\dots \parencite{Szyperski2002a} \dots \autocite{Einstein2003}

\printbibliography[title=Literaturverzeichnis]

\end{document}

sensemann
13-03-2012, 07:54
Hat keiner 'ne Idee?

nixversteh
13-03-2012, 08:32
Hat keiner 'ne Idee?

Hallo sensemann,

meinst du so etwas?

\documentclass[final,ngerman]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{filecontents}
\begin{filecontents}{literatur.bib}
@BOOK{Szyperski2002a,
title = {Component Software: Beyond Object-Oriented Programming},
year = {2002},
author = {Clemens Szyperski},
}
@BOOK{Einstein2003,
title = {Component Software: Beyond Object-Oriented Programming},
year = {2003},
author = {Albert Einstein and Clemens Szyperski and Bruce Wayne},
}
\end{filecontents}
\usepackage[style=authoryear-ibid,backend=biber,firstinits=true]{biblatex}
\bibliography{literatur}
\usepackage[normalem]{ulem}
\renewcommand*{\nameyeardelim}{\addcomma\space}
\DeclareNameAlias{sortname}{last-first}
% underline name in bibliographies
\DeclareNameFormat{author}{%
\ifthenelse{\equal{#1}{Szyperski}}%
{\uline{#1\ifblank{#4}{}{\space#4}}}%
{#1\ifblank{#4}{}{\space#4}}%
\ifthenelse{\value{listcount}<\value{liststop}}%
{\addcomma\space}
{}}
\begin{document}
\dots \parencite{Szyperski2002a} \dots \autocite{Einstein2003}
\printbibliography[title=Literaturverzeichnis]
\end{document}

Gruß

Martin

sensemann
13-03-2012, 10:56
Hach, nein, da hab ich mich missverständlich ausgedrückt. Mir geht's um die Darstellung im Literaturverzeichnis.

Über DeclareNameFormat wird ja ein bestimmter Autor unterstrichen - hier Szyperski. Danach wird nur getestet, ob noch weitere kommen, und ein Komma drangehangen. Dadurch wird leider das Standardverhalten überschrieben, welches vor dem letzten Autor ein "und" statt Komma einfügt. Ist sicher nur eine zusätzliche if-Abfrage ...

u_fischer
13-03-2012, 12:25
Dann musst du halt noch einen Test für liststop-1 einfügen:


\DeclareNameFormat{author}{%
\ifthenelse{\equal{#1}{Szyperski}}%
{\uline{#1\ifblank{#4}{}{\addcomma\space#4}}}%
{#1\ifblank{#4}{}{\addcomma\space#4}}%
\ifthenelse{\value{listcount}<\numexpr\value{liststop}-1\relax}%
{\addcomma\space}
{\ifthenelse{\value{listcount}=\numexpr\value{list stop}-1\relax}%
{\finalnamedelim}
{}%
}}

sensemann
13-03-2012, 18:01
Ganz genau so! (hätte ich es auch gemacht, wenn ich gewusst hätte, wie).

Tausend Dank! :)