Ich erstelle einen neuen Bibliographiestil, indem ich die Datei standard.bbx für meine Masterarbeit anpasse. Bisher hatte ich keine großen Probleme, aber jetzt möchte ich die Makroseriennummer anpassen, da diese in Klammern stehen sollte. Aufgrund fehlender Informationen habe ich manchmal nur eine Serie oder die Nummer.
Bisher klappt es gut, es sei denn, ich habe nur die Serie. Dann erscheint ein Leerzeichen zwischen dem letzten Wort der Serie und der schließenden Klammer.
Hier ist mein neues Makro
\newbibmacro*{series+number}{%
\iffieldundef{series}% Überprüfen ob series vorhanden
{}
{ \setunit{\addspace\bibopenparen}
\printtext{Reihe \addcolon\space}%
\printfield{series}
\iffieldundef{number} % Überprüfen ob noch Bd kommt
{\printtext{\bibcloseparen}}
{\setunit{\addcomma\space}}
}%
\iffieldundef{number}%
{}
{ \iffieldundef{series}%
{\setunit{\addspace\bibopenparen}}
{}
\printtext{Bd \adddot}
\printfield{number}%
\printtext{\bibcloseparen\space}
}
\newunit}
Und hier ist das MWE
\RequirePackage{filecontents}
\begin{filecontents*}{my_bibfile.bib}
@incollection{Akyar.2008,
author = {Akyar, Bedia},
title = {Dual Quaternions in Spatial Kinematics in an Algebraic Sense},
pages = {373--391},
bookpagination = {page},
publisher = {T{\"u}bitak},
isbn = {1010-7622},
editor = {{Scientific and Technological Research Council of Turkey}},
booktitle = {Turkish journal of mathematics},
year = {2008},
abstract = {},
shorthand = {AKYA08},
location = {Ankara},
edition = {32},
number = {4}
}
@book{Angeles.2007,
author = {Angeles, Jorge},
year = {2007},
title = {Fundamentals of Robotic Mechanical Systems},
url = {http://site.ebrary.com/lib/alltitles/docDetail.action?docID=10229254},
edition = {Third Edition},
publisher = {{Springer Science+Business Media LLC}},
isbn = {0-387-29412-0},
subtitle = {Theory, Methods, and Algorithms},
shorthand = {ANGE07},
language = {eng},
location = {Boston, MA, USA},
series = {Mechanical Engineering Series},
abstract = {},
doi = {10.1007/978-0-387-34580-2},
file = {http://gso.gbv.de/DB=2.1/PPNSET?PPN=546653987},
file = {http://external.dandelon.com/download/attachments/dandelon/ids/DEAGI363052149B0CFDDDC125715B0045ACDA.pdf},
file = {http://zbmath.org/?q=an:1140.70001}
}
\end{filecontents*}
\documentclass[fleqn]{scrreprt}
\usepackage[scaled]{helvet}
\renewcommand{\familydefault}{\sfdefault}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[style=alphabetic, % Use this style
isbn=false,
doi=false,
url=false,
maxbibnames = 4,
minbibnames = 3,
language = ngerman,
giveninits=true]{biblatex}
\bibliography{my_bibfile}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
Die erste Fundstelle hat nur eine Nummer (Hier (Bd. 4)). Die zweite hat eine Reihe. Vor der schließenden Klammer steht allerdings ein unnötiger Leerraum.
Antwort1
Sie haben ein allzu wichtiges „ %
after“ vergessen \printfield{series}
. Wenn Sie es zu Ihrem Makro hinzufügen, wird das unerwünschte Leerzeichen eliminiert:
\renewbibmacro*{series+number}{%
\iffieldundef{series}% Überprüfen ob series vorhanden
{}
{ \setunit{\addspace\bibopenparen}
\printtext{Reihe \addcolon\space}%
\printfield{series}% <- here
\iffieldundef{number} % Überprüfen ob noch Bd kommt
{\printtext{\bibcloseparen}}
{\setunit{\addcomma\space}}
}%
\iffieldundef{number}%
{}
{ \iffieldundef{series}%
{\setunit{\addspace\bibopenparen}}
{}
\printtext{Bd \adddot}
\printfield{number}%
\printtext{\bibcloseparen\space}
}
\newunit}
Die obige Version betont den Punkt, an dem Ihr unerwünschtes Leerzeichen erzeugt wird. Tatsächlich enthält Ihr Code jedoch andere Fälle potenziell unerwünschter Leerzeichen. In der folgenden Version würde ich ein Trailing einfügen, %
um unerwünschte Leerzeichen in Ihrem Makro zu vermeiden:
\renewbibmacro*{series+number}{%
\iffieldundef{series} % Überprüfen ob series vorhanden
{}
{\setunit{\addspace\bibopenparen}%
\printtext{Reihe\addcolon\space}%
\printfield{series}%
\iffieldundef{number} % Überprüfen ob noch Bd kommt
{\printtext{\bibcloseparen}}
{\setunit{\addcomma\space}}%
}%
\iffieldundef{number}
{}
{\iffieldundef{series}
{\setunit{\addspace\bibopenparen}}
{}%
\printtext{Bd\adddot}%
\printfield{number}%
\printtext{\bibcloseparen\space}%
}%
\newunit}
Ich muss hinzufügen, dass es möglicherweise verpönt ist, dass die Zeichenfolgen „Reihe“ und „Bd“ so in Ihr Makro fest codiert sind. Biblatex bietet dafür lokalisierte Bibstrings an, die auch erweiterbar sind. Um ein vorhandenes Makro neu zu definieren, sollten Sie außerdem eher verwenden \renewbibmacro
.