Ich verwende biblatex-apa, um das Layout meiner Bibliographie zu definieren. Jetzt zitiere ich mehrere (interne) Dokumente von Institutionen oder Nachrichten-Websites, die jetzt mit ihrer Abkürzung im Dokument erscheinen. Ich möchte, dass diese Abkürzungen in Kapitälchen erscheinen. Eigentlich möchte ich, dass alle abgekürzten Institutionen in Kapitälchen erscheinen. Ist das möglich? Ich habe meine Bibliographie jetzt mithilfe von Tags aufgeteilt (aus Zotero exportiert), also nehme ich an, dass ein Tag auch ermöglichen könnte, dass das Zitat als Kapitälchen im Text erscheint? Weiß jemand, wie das geht?
Mein MWE:
\documentclass[10pt,a4paper,twoside]{book}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=apa, date=year, natbib=true, sorting=nyt, sortcites=true]{biblatex}
\DeclareLanguageMapping{american}{american-apa}
\bibliography{Zotero}
\begin{document}
\chapter{Literature review}
This is some text with a double reference \cite{nos_weeralarm_2009, ns_volle_2013}.
\printbibliography[notkeyword=internal]
\printbibliography[title={Internal Documents}, keyword=internal]
\end{document}
Und der Inhalt meiner Zotero.bib:
@online{nos_weeralarm_2009,
title = {Weeralarm en verkeeralarm ingetrokken},
url = {http://nos.nl/l/124074},
titleaddon = {{NOS.nl}},
author = {{NOS}}, %THIS AUTHOR MUST BE PRINTED IN SC
urldate = {2014-02-12},
date = {2009-12-20},
keywords = {gladheid, ijs, ongeluk, openbaar vervoer, schiphol, sneeuw}
}
@report{ns_volle_2013,
location = {Utrecht},
title = {Internal document title}},
institution = {NS},
type = {Internal Document},
author = {{NS}}, % THIS AUTHOR MUST BE PRINTED IN SC
date = {2013},
keywords = {internal}
}
Antwort1
Wenn alle Ihre Zitate, die eine Small-Caps-Institution erfordern, tatsächlich dasselbe Tag haben, sollte dies möglich sein.
In Ihrem MWE haben die beiden Einträge jedoch kein gemeinsames , daher habe ich das zu prüfende keyword
Schlüsselwort hinzugefügt .instauth
Was wir tun, ist sehr einfach: Bei jedem Zitationsbefehl und vor jedem Bibliographieeintrag prüfen wir, ob der Eintrag das Schlüsselwort enthält. instauth
Wenn ja, wird das Nachnamenformat so eingestellt, dass Akronyme über biblatex
das \mkbibacro
Makro erzeugt werden (beachten Sie, dass damit dies funktioniert, „das Akronym in Großbuchstaben angegeben werden muss.“, S. 89, diebiblatex
Dokumentation).
\AtEveryCitekey{%
\ifkeyword{instauth}
{\renewcommand*{\mkbibnamelast}[1]{\mkbibacro{#1}}}
{}%
}
\AtEveryBibitem{%
\ifkeyword{instauth}
{\renewcommand*{\mkbibnamelast}[1]{\mkbibacro{#1}}}
{}%
}
Eine alternative Neudefinition ist die kürzere
\renewcommand*{\mkbibnamelast}[1]{%
\ifkeyword{instauth}
{\mkbibacro{#1}}
{#1}}
Wobei das Konditional istinnendie Formatierungsanweisung. Dann ist es nicht mehr nötig, die Änderung in Gruppen einzubinden, in denen \ifkeyword
definiert ist, wie es oben notwendig war.
instauth
Bis zu einem gewissen Grad können wir die Erkennung sogar automatisch machen . Mit
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map[overwrite=true]{
\step[fieldsource=author, match=\regexp{^\{.+?\}$}, final]
\step[fieldset=keywords, append, fieldvalue={,instauth}]
}
}
}
alle author
Felder, die einen String in doppelten geschweiften Klammern enthalten, werden als klassifiziert instauth
. Dies kann in einigen Sonderfällen zu Problemen führen - wie bei so vielen automatischen Lösungen.
MWE
\documentclass[a4paper]{article}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage{filecontents}
\usepackage[backend=biber, style=apa, date=year, natbib=true, sorting=nyt, sortcites=true]{biblatex}
\DeclareLanguageMapping{american}{american-apa}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{filecontents*}{\jobname.bib}
@online{nos_weeralarm_2009,
title = {Weeralarm en verkeeralarm ingetrokken},
url = {http://nos.nl/l/124074},
titleaddon = {{NOS.nl}},
author = {{NOS}}, %THIS AUTHOR MUST BE PRINTED IN SC
urldate = {2014-02-12},
date = {2009-12-20},
keywords = {gladheid, ijs, ongeluk, openbaar vervoer, schiphol, sneeuw}
}
@report{ns_volle_2013,
location = {Utrecht},
title = {Internal document title},
institution = {NS},
type = {Internal Document},
author = {{NS}}, % THIS AUTHOR MUST BE PRINTED IN SC
date = {2013},
keywords = {internal},
}
\end{filecontents*}
\DeclareSourcemap{
\maps[datatype=bibtex]{
\map[overwrite=true]{
\step[fieldsource=author, match=\regexp{^\{.+?\}$}, final]
\step[fieldset=keywords, append, fieldvalue={,instauth}]
}
}
}
\renewcommand*{\mkbibnamelast}[1]{%
\ifkeyword{instauth}
{\mkbibacro{#1}}
{#1}}
\begin{document}
This is some text with a double reference \cite{nos_weeralarm_2009, ns_volle_2013, wilde, cicero}.
\printbibliography[notkeyword=internal]
\printbibliography[title={Internal Documents}, keyword=internal]
\end{document}
Antwort2
Hinweis: Ab März 2016 (biblatex 3.3) müssen Sie \mkbibnamefamily anstelle von \mkbibnamelast ändern. Siehe auchNamensformatierung in Biblatex 3.3.