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.

  • Related (but actually the opposite problem): Use small caps in bibliography for institutional authors – moewe Jul 6 '17 at 12:04
  • BTW: Even if your question is reasonably clear without an MWE it is still beneficial to provide one. If we have an MWE we can make sure that the suggested answer really works with your set-up. If you use heavily customised styles there is a chance that some of the standard approaches need tweaking before they can be applied. – moewe Jul 6 '17 at 12:06
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.

  • 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 6 '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 6 '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 6 '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 6 '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 7 '17 at 9: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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.