Zunächst waren einige überflüssige Leerzeichen vorhanden. Das kann zu
Problemen führen.
Außerdem hast Du einige Zeichensetzungsbefehle direkt ausgeben lassen,
was man bei biblatex aber nicht tun sollte, sondern immer nur im
Argument von \setunit bzw. \printtext. Der Grund ist, dass diese Befehle
nur dann ausgegeben werden, wenn das Makro vorher tatsächlich auch
eine Ausgabe erzeugt hat. Bei der direkten Ausgabe wird der Befehl
dagegen immer ausgegeben, was unerwünschte Effekte haben kann.
Zur Illustration ein Beispiel, in dem ich zur Veranschaulichung den Trenner
zwischen title und subtitle (subtitlepunct) in einen Doppelpunkt geändert
habe. Würde man nun im bibmacro »title« den subtitlepunct direkt
ausgeben und nicht als Argument von \setunit, dann würde der
Doppelpunkt auch dann erscheinen, wenn es gar keinen subtitle gibt. Das
ist natürlich ein ungewollter Nebeneffekt, und deshalb sollte man sämtliche
Befehle, die Zeichensetzung ausgeben, immer in das Argument von
\setunit packen, und sämtliche Befehle, die Text ausgeben (z.B.
\bibstring), immer in das Argument von \printtext packen. Im Code in
meinem vorigen Posting habe ich lediglich zur Vereinfachung mehrere
Befehle, die hintereinander gesetzt werden sollten, in das Argument eines
\printtext-Befehls geschrieben.
\documentclass[ngerman]{scrartcl}
\listfiles
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@BOOK{book,
author = {Buchautor, Hans-Wilhelm},
title = {Irgendein Buch},
address = {Buch am Wald},
year = {2000}
}
@BOOK{book2,
author = {Buchautor, Bernhard},
title = {Ein anderes Buch},
subtitle = {Mit einem Untertitel},
address = {Buch am Wald},
year = {2001}
}
\end{filecontents}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{babel,csquotes}
\usepackage[
style=authortitle
]{biblatex}
\bibliography{\jobname}
\renewcommand{\subtitlepunct}{\addcolon\space}
\renewbibmacro*{title}{%
\ifboolexpr{
test {\iffieldundef{title}}
and
test {\iffieldundef{subtitle}}
}
{}
{\printtext[title]{%
\printfield[titlecase]{title}%
% die folgende Zeile ist falsch und dient nur zu Demonstrationszwecken
\subtitlepunct%
% richtig wäre die folgende Zeile:
%\setunit{\subtitlepunct}%
\printfield[titlecase]{subtitle}}%
\newunit}%
\printfield{titleaddon}}
\begin{document}
\cite{book,book2}
\printbibliography
\end{document}
Gruß,
Dominik.-
Zunächst waren einige überflüssige Leerzeichen vorhanden. Das kann zu
Problemen führen.
Außerdem hast Du einige Zeichensetzungsbefehle direkt ausgeben lassen,
was man bei biblatex aber nicht tun sollte, sondern immer nur im
Argument von \setunit bzw. \printtext. Der Grund ist, dass diese Befehle
nur dann ausgegeben werden, wenn das Makro vorher tatsächlich auch
eine Ausgabe erzeugt hat. Bei der direkten Ausgabe wird der Befehl
dagegen immer ausgegeben, was unerwünschte Effekte haben kann.
Zur Illustration ein Beispiel, in dem ich zur Veranschaulichung den Trenner
zwischen title und subtitle (subtitlepunct) in einen Doppelpunkt geändert
habe. Würde man nun im bibmacro »title« den subtitlepunct direkt
ausgeben und nicht als Argument von \setunit, dann würde der
Doppelpunkt auch dann erscheinen, wenn es gar keinen subtitle gibt. Das
ist natürlich ein ungewollter Nebeneffekt, und deshalb sollte man sämtliche
Befehle, die Zeichensetzung ausgeben, immer in das Argument von
\setunit packen, und sämtliche Befehle, die Text ausgeben (z.B.
\bibstring), immer in das Argument von \printtext packen. Im Code in
meinem vorigen Posting habe ich lediglich zur Vereinfachung mehrere
Befehle, die hintereinander gesetzt werden sollten, in das Argument eines
\printtext-Befehls geschrieben.
[code]\documentclass[ngerman]{scrartcl}
\listfiles
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@BOOK{book,
author = {Buchautor, Hans-Wilhelm},
title = {Irgendein Buch},
address = {Buch am Wald},
year = {2000}
}
@BOOK{book2,
author = {Buchautor, Bernhard},
title = {Ein anderes Buch},
subtitle = {Mit einem Untertitel},
address = {Buch am Wald},
year = {2001}
}
\end{filecontents}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{babel,csquotes}
\usepackage[
style=authortitle
]{biblatex}
\bibliography{\jobname}
\renewcommand{\subtitlepunct}{\addcolon\space}
\renewbibmacro*{title}{%
\ifboolexpr{
test {\iffieldundef{title}}
and
test {\iffieldundef{subtitle}}
}
{}
{\printtext[title]{%
\printfield[titlecase]{title}%
% die folgende Zeile ist falsch und dient nur zu Demonstrationszwecken
\subtitlepunct%
% richtig wäre die folgende Zeile:
%\setunit{\subtitlepunct}%
\printfield[titlecase]{subtitle}}%
\newunit}%
\printfield{titleaddon}}
\begin{document}
\cite{book,book2}
\printbibliography
\end{document}[/code]
Gruß,
Dominik.-