Estou usando o Biblatex e preciso compor citações completas no texto do meu documento, então estou usando\longfullcite
comando de moewe. Embora funcione corretamente na maioria das vezes, ele tem problemas com entradas Biber/BibTeX onde a última palavra de um campo está entre colchetes (para forçar a capitalização). Nestes casos, \longfullcite
pode não ser possível colocar a palavra seguinte em maiúscula corretamente. Veja o seguinte exemplo:
\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}
Aqui está a saída:
Observe a capitalização inconsistente da palavra "In" produzida pelos dois \longfullcite
comandos. Por outro lado, as citações emitidas por \printbibliography
capitalizam corretamente "In" para ambas as entradas.
O que está causando essa inconsistência e como posso corrigir ou contornar isso (de preferência alterando a definição \longfullcite
em vez de alterar o .bib
arquivo)?
Responder1
Este é um problema conhecido (https://github.com/plk/biblatex/issues/295) e afeta todas as citações no texto, embora provavelmente só seja realmente visível com algo \fullcite
parecido com -. Infelizmente, as chances de uma solução adequada são mínimas. biblatex
O rastreador de pontuação modifica fortemente os fatores de espaço existentes, mas fazer isso nas citações pode ter efeitos indesejados no texto fora das citações.
Você teria que adicionar \@
letras maiúsculas no final de um título. Mas você pode fazer isso automaticamente no formato, se quiser
\DeclareFieldFormat{title}{\mkbibemph{#1\@}}
\DeclareFieldFormat
[article,inbook,incollection,inproceedings,patent,thesis,unpublished]
{title}{\mkbibquote{#1\isdot\@}}
\DeclareFieldFormat
[suppbook,suppcollection,suppperiodical]
{title}{#1\@}
Responder2
Hack sujo:
Insira algo invisível sem largura. Tenho certeza de que isso pode causar problemas, só não sei ainda quais 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}