Estoy usando Biblatex y necesito componer citas completas en el texto de mi documento, así que estoy usando\longfullcite
comando de moewe. Si bien funciona correctamente la mayor parte del tiempo, tiene problemas con las entradas de Biber/BibTeX donde la última palabra de un campo está entre llaves (para forzar el uso de mayúsculas). En estos casos, \longfullcite
es posible que no se escriba correctamente en mayúscula la siguiente palabra. Tomemos el siguiente ejemplo:
\documentclass{article}
\usepackage{biblatex}
\makeatletter
\newcommand{\tempmaxup}[1]{\def\blx@maxcitenames{\blx@maxbibnames}#1}
\makeatother
\DeclareCiteCommand{\longfullcite}[\tempmaxup]
{\usebibmacro{prenote}}
{\usedriver
{\DeclareNameAlias{sortname}{default}}
{\thefield{entrytype}}}
{\multicitedelim}
{\usebibmacro{postnote}}
\usepackage{filecontents}
\begin{filecontents}{test.bib}
@inproceedings{blow2015,
author = {Blow, Joe},
title = {{GNU} loves me},
year = 2015,
booktitle = {Proceedings of Some Conference},
}
@inproceedings{blow2016,
author = {Blow, Joe},
title = {I love {GNU}},
year = 2016,
booktitle = {Proceedings of Some Conference},
}
\end{filecontents}
\addbibresource{test.bib}
\begin{document}
\nocite{*}
\noindent
\longfullcite{blow2015}\\
\longfullcite{blow2016}
\printbibliography
\end{document}
Aquí está el resultado:
Tenga en cuenta la inconsistencia en el uso de mayúsculas en la palabra "In" producida por los dos \longfullcite
comandos. Por el contrario, las citas emitidas por \printbibliography
escriben correctamente "In" en mayúscula para ambas entradas.
¿Qué está causando esta inconsistencia y cómo puedo solucionarla o solucionarla (preferiblemente cambiando la definición \longfullcite
en lugar de cambiar el .bib
archivo)?
Respuesta1
Este es un problema conocido (https://github.com/plk/biblatex/issues/295) y afecta a todas las citas dentro del texto, aunque probablemente solo sea realmente visible con algo \fullcite
como -. Desafortunadamente, las posibilidades de encontrar una solución adecuada son bastante escasas. biblatex
El rastreador de puntuación modifica en gran medida los factores de espacio existentes, pero hacerlo en las citas puede tener efectos no deseados en el texto fuera de las citas.
Tendría que agregar \@
letras mayúsculas después al final del título. Pero puedes hacer eso automáticamente en el formato, si lo deseas
\DeclareFieldFormat{title}{\mkbibemph{#1\@}}
\DeclareFieldFormat
[article,inbook,incollection,inproceedings,patent,thesis,unpublished]
{title}{\mkbibquote{#1\isdot\@}}
\DeclareFieldFormat
[suppbook,suppcollection,suppperiodical]
{title}{#1\@}
Respuesta2
Truco sucio:
Inserta algo invisible sin ancho. Estoy seguro de que esto puede causar problemas, pero todavía no sé qué problemas :)
\documentclass{article}
\usepackage{biblatex}
\makeatletter
\newcommand{\tempmaxup}[1]{\def\blx@maxcitenames{\blx@maxbibnames}#1}
\makeatother
\DeclareCiteCommand{\longfullcite}[\tempmaxup]
{\usebibmacro{prenote}}
{\usedriver
{\DeclareNameAlias{sortname}{default}}
{\thefield{entrytype}}}
{\multicitedelim}
{\usebibmacro{postnote}}
\usepackage{filecontents}
\begin{filecontents}{test.bib}
@inproceedings{blow2015,
author = {Blow, Joe},
title = {{GNU} loves me},
year = 2015,
booktitle = {Proceedings of Some Conference},
}
@inproceedings{blow2016,
author = {Blow, Joe},
title = {I love {GNU}\mbox{}},
year = 2016,
booktitle = {Proceedings of Some Conference},
}
\end{filecontents}
\addbibresource{test.bib}
\begin{document}
\nocite{*}
\noindent
\longfullcite{blow2015}\\
\longfullcite{blow2016}
\printbibliography
\end{document}