Utilice versalitas en la bibliografía para autores institucionales.

Utilice versalitas en la bibliografía para autores institucionales.

Estoy usando biblatex-apa para definir el diseño de mi bibliografía. Ahora cito varios documentos (internos) de instituciones o sitios web de noticias, que ahora aparecen en el documento usando su abreviatura. Me gustaría que estas abreviaturas aparezcan en versalitas. En realidad, quiero que todas las instituciones abreviadas aparezcan en versalitas. es posible? Ahora divido mi bibliografía usando etiquetas (exportadas de Zotero), por lo que supongo que una etiqueta también podría permitir que la cita aparezca en versalitas en el texto. ¿Alguien sabe cómo hacer esto?

Mi 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}

Y el contenido de mi 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}
}

Respuesta1

Si todas sus citas que requieren una institución de pequeña capitalización tienen la misma etiqueta, entonces debería ser posible.

Sin embargo, en su MWE, las dos entradas no comparten un keyword, por lo que agregué la palabra clave instauthpara verificar.

Lo que hacemos es muy simple: en cada comando de cita, y antes de cada entrada de bibliografía, verificamos si la entrada tiene la palabra clave instauth, de ser así, el formato del apellido está configurado para producir acrónimos a través de biblatexla \mkbibacromacro (tenga en cuenta que para que esto funcione " [l]a sigla debe escribirse en letras mayúsculas.", p. 89, elbiblatexdocumentación).

\AtEveryCitekey{%
  \ifkeyword{instauth}
    {\renewcommand*{\mkbibnamelast}[1]{\mkbibacro{#1}}}
    {}%
}
\AtEveryBibitem{%
  \ifkeyword{instauth}
    {\renewcommand*{\mkbibnamelast}[1]{\mkbibacro{#1}}}
    {}%
}

Una redefinición alternativa es la más corta

\renewcommand*{\mkbibnamelast}[1]{%
  \ifkeyword{instauth}
    {\mkbibacro{#1}}
    {#1}}

donde esta el condicionaladentrola directiva de formato. Entonces no es necesario vincular el cambio a los grupos \ifkeyworddefinidos, como era necesario anteriormente.

Incluso podemos hacer que la detección sea instauthautomática hasta cierto punto. Con

\DeclareSourcemap{
  \maps[datatype=bibtex]{
    \map[overwrite=true]{
      \step[fieldsource=author, match=\regexp{^\{.+?\}$}, final]
      \step[fieldset=keywords, append, fieldvalue={,instauth}]
    }
  }
}

Todos authorlos campos que contienen una cadena entre llaves dobles se clasifican como instauth. Esto podría fallar en algunos casos extremos, como ocurre con muchas soluciones automáticas.

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}

ingrese la descripción de la imagen aquí

Respuesta2

Nota: A partir de marzo de 2016 (biblatex 3.3), es necesario cambiar \mkbibnamefamily en lugar de \mkbibnamelast. Ver tambiénFormato de nombre Biblatex 3.3.

información relacionada