11

I'm using this command:

\renewcommand*{\mkbibnamefamily}[1]{\textsc{#1}}

to print all author names in caps. (if they are quoted in text as well as in the biblography). I'm using biblatex with the authoryear-icomp style.

Now I want to apply some kind of filter, to prevent instituions which are enclosed in double curly braces like so

author = {{Regionalverband Ruhr}}

from being printed in caps (again both in text as well as in the biblography). How could this be achieved?

So

SELLE, K. (2005): Planen, Steuern, Entwickeln: über den Beitrag öffentlicher Akteure zur Entwicklung von Stadt und Land. Dortmund (=Edition Stadt-Entwicklung).

but

Ruhr Tourismus GmbH (2017): Marketingstrategie 2017-2022 der Ruhr Tourismus GmbH. Oberhausen.

maaattes
  • 495

2 Answers2

12

I suggest you use the fancy annotation feature for fields. If you have a corporate author simply add author+an = {=corporate}. With

\renewcommand*{\mkbibnamefamily}[1]{%
  \iffieldannotation{corporate}
    {#1}
    {\textsc{#1}}}

we then check if we have a corporate author or not. Small caps are used only if the author is not corporate.

MWE

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}      
\usepackage[backend=biber, style=authoryear]{biblatex}
\usepackage{csquotes}
\usepackage[ngerman]{babel}    

\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@misc{ruhr,
  author    = {{Regionalverband Ruhr}},
  author+an = {=corporate},
  title     = {Marketingstrategie 2017-2022 der Ruhr Tourismus GmbH},
  year      = {2017},
}
\end{filecontents*}

\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\renewcommand*{\mkbibnamefamily}[1]{%
  \iffieldannotation{corporate}
    {#1}
    {\textsc{#1}}}

\begin{document}
\cite{sigfridsson,ruhr},

\printbibliography
\end{document}

example output


The advantages of the annotation really come into play once we realise that we can add annotation to specific names. With author+an = {1=corporate}, only the first name is corporate. We then need to use

\renewcommand*{\mkbibnamefamily}[1]{%
  \ifitemannotation{corporate}
    {#1}
    {\textsc{#1}}}

Note \ifitemannotation instead of \iffieldannotation.

In

@misc{ruhr,
  author    = {{Regionalverband Ruhr} and Anne Elk},
  author+an = {1=corporate},
  title     = {Marketingstrategie 2017-2022 der Ruhr Tourismus GmbH},
  year      = {2017},
}

then, "Anne Elk" gets small caps, but "Regionalverband Ruhr" doesn't.

You will of course have to count the number of authors and give the correct number even if there is only one author

  author    = {{Regionalverband Ruhr}},
  author+an = {1=corporate},

and

  author    = {Anne Elk and {Regionalverband Ruhr}},
  author+an = {2=corporate},

This will naturally also work for the editor field and any other name field.

moewe
  • 175,683
  • Thank you, that's exactly what I was looking for. Never heard of this annonation feature for fields. I will definitely check it out. Now I only have to find a way to add this field to my bib file using zotero-better-bibtex. – maaattes Jul 06 '17 at 16:16
  • Well, this is powerful! Do you not even need an additional package for that? There is none in your code, so I guess not, just wanted to make sure it wasn't forgotten. – thymaro Jul 06 '17 at 16:32
  • @schmattes The feature is fairly new (OK, it's been a year now) and unique to biblatex (with Biber), so I'm not sure if Zotero or zotero-better-bibtex supports it at the moment. But maybe you can ask the authors of better-bibtex to include support if you can't add the annotation manually. – moewe Jul 06 '17 at 19:52
  • 1
    @thymaro No additional package is needed, this comes directly from biblatex - which is really powerful. But it needs the Biber backend, it won't work if you use BibTeX (which is officially considered a legacy backend and only kept for backwards compatibility). – moewe Jul 06 '17 at 19:54
  • 1
    For those wondering how to add this field with zotero-better-bibtex adding biblatex{"author+an":"=corporate"}or biblatex{"author+an":"1=corporate"}to the extra field does the trick. – maaattes Jul 07 '17 at 09:32
7

You also can filter with a keyword, say nosc:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[backend=biber, style=authoryear]{biblatex}
\usepackage{csquotes}
\usepackage[ngerman]{babel}

\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@misc{ruhr,
  author = {{Regionalverband Ruhr}},
  title = {Marketingstrategie 2017-2022 der Ruhr Tourismus GmbH},
  year = {2017},
  keywords = {nosc}
}
@book{selle05,
author = {Selle, K},
title = {Planen, Steuern, Entwickeln: über den Beitrag öffentlicher Akteure zur Entwicklung von Stadt und Land},
year = {2005},
publisher = {Edition Stadt-Entwicklung},
location = {Dortmund}
}
    \end{filecontents*}

\addbibresource{\jobname.bib}

\renewcommand*{\mkbibnamefamily}[1]{%
  \ifkeyword{nosc}
    {#1}
    {\textsc{#1}}}

\begin{document}
Siehe \cite{ruhr, selle05}. 

\printbibliography

\end{document}

enter image description here

Bernard
  • 271,350