siguiendo la pregunta
¿Cuál es la mayúscula adecuada a utilizar al almacenar títulos en la base de datos de bibliografía?Estoy almacenando títulos en mayúsculas y minúsculas en el archivo .bib y {Protecting} nombres propios, etc. Los he estado usando biblatex-chicago
hasta ahora y no tuve ningún problema, ya que Chicago exige mayúsculas y minúsculas de todos modos.
Pero ahora estoy teniendo problemas biblatex-apa
(la APA prefiere las mayúsculas y minúsculas) con las comillas y el énfasis. Dado que \mkbibquote{}
y \mkbibemph{}
ya protegen lo que hay dentro, encerrarlos en un juego adicional de tirantes {\mkbibquote{}}
los protege. Pero claro, tengo varios problemas.
Considere este MWE:
% !TEX TS-program = xelatexmk
\documentclass{article}
\usepackage{polyglossia}
\setdefaultlanguage[variant=american]{english}
\usepackage{csquotes}
\usepackage[style=apa]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{bib.bib}
@book{Author2000,
Title = {This is a Title with Something in {\mkbibquote{Quotes that Should Be Downcased}}},
Author = {Author, Anton},
Date = {1990},
}
@book{Author2000a,
Title = {{\mkbibquote{But if the Title starts in Quotes}} It Turns into All Caps},
Author = {Author, Anton},
Date = {2000},
}
@book{Author2000b,
Title = {A Discussion of the Book {\mkbibemph{{My} New Book}}: It Should Keep the First Word Capitalized},
Author = {Author, Anton},
Date = {2010},
}
@book{Author2000c,
Title = {{\mkbibemph{And if the Title starts with Emphasis}} It also Turns into All Caps and Doesn't Apply the Emphasis},
Author = {Author, Anton},
Date = {2001},
}
@book{Author2000d,
Title = {And If {\mkbibquote{an Acronym {{{AAEE}}} is Included}}, How to Preserve it?},
Author = {Author, Anton},
Date = {2011},
}
\end{filecontents}
\addbibresource{bib.bib}
\begin{document}
\autocites{Author2000,Author2000a,Author2000b,Author2000c,Author2000d}
\printbibliography % print the bibliography
\end{document}
Da esta salida:
Hay numerosos problemas. Si mkbibquote
o mkbibemph
se emiten al principio de la cadena, convierte toda la cadena en MAYÚSCULAS. Además, no tengo idea de cómo proteger palabras específicas dentro de una cadena que ya está encerrada por mkbibquote
o mkbibemph
.
Respuesta1
La función de mayúsculas y minúsculas para biblatex
está implementada en LaTeX. La escritura en mayúsculas y minúsculas de BibTeX, por otro lado, se implementa directamente en BibTeX. Eso significa que existen algunas diferencias sutiles y no tan sutiles entre los dos. En particular, biblatex
la función de caso de oración intentará expandir las macros si es posible.
El problema principal aquí es que las llaves están sobrecargadas de significado: para LaTeX sirven como delimitadores de argumentos o aplican agrupación; para BibTeX protegen las cadenas del cambio de mayúsculas y minúsculas y marcan macros LaTeX para caracteres no ASCII como ä -> {\"a}
(cf.¿Cómo escribir “ä” y otras diéresis y letras acentuadas en la bibliografía?). Los diferentes significados chocan de vez en cuando; en esos casos, se necesita una solución alternativa para resolver el problema.
Véase también el recientehttps://github.com/plk/biblatex/issues/871y temas vinculados, así como las adiciones de documentoshttps://github.com/plk/biblatex/commit/863fea969a9f1d37d7f944265cb276cf18293334yhttps://github.com/plk/biblatex/commit/a291e72a6c8ba2b896eb3f53ada6cc938c2cfa86.
Para los casos de uso que muestra en MWE, puedo ofrecer la siguiente solución. La idea es evitar el uso de llaves mediante el uso de argumentos delimitados (una especie de \foo <argument>\endfoo
sintaxis). Los argumentos delimitados presentan sus propios problemas cuando están anidados, pero funcionan bastante bien en MWE.
\documentclass{article}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=apa]{biblatex}
\protected\def\horriblemkbibquote#1\endhorriblemkbibquote{\mkbibquote{#1}}
\let\endhorriblemkbibquote\relax
\protected\def\horriblemkbibemph#1\endhorriblemkbibemph{\mkbibemph{#1}}
\let\endhorriblemkbibemph\relax
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{Author2000,
title = {This is a Title with Something in {\mkbibquote{Quotes that Should Be Downcased}}},
author = {Author, Anton},
date = {1990},
}
@book{Author2000a,
title = {\horriblemkbibquote {But} if the Title starts in Quotes\endhorriblemkbibquote{} It Turns into All Caps},
author = {Author, Anton},
date = {2000},
}
@book{Author2000b,
title = {A Discussion of the Book \horriblemkbibemph{My} New Book\endhorriblemkbibemph{}: It Should Keep the First Word Capitalized},
author = {Author, Anton},
date = {2010},
}
@book{Author2000c,
title = {\horriblemkbibemph {And} if the Title starts with Emphasis\endhorriblemkbibemph{} It also Turns into All Caps and Doesn't Apply the Emphasis},
author = {Author, Anton},
date = {2001},
}
@book{Author2000d,
title = {And If \horriblemkbibquote an Acronym {AAEE} is Included\endhorriblemkbibquote{}, How to Preserve it?},
author = {Author, Anton},
date = {2011},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\autocites{Author2000,Author2000a,Author2000b,Author2000c,Author2000d}
\printbibliography % print the bibliography
\end{document}
A largo plazo, me parece que la solución deseable es implementar una nueva función de cambio de mayúsculas y minúsculas que utilice un marcado diferente para especificar las cadenas protegidas, de modo que las llaves ya no entren en conflicto.
La función de cambio de caso de FWIW BibTeX tiene problemas similares. No escribe palabras en mayúscula al principio de la cadena, por lo que no sufre el problema de TODAS LAS MAYÚSCULAS, pero los otros dos problemas de protección dentro de desprotección también están presentes.