Compor uma citação completa cujo título termina com uma palavra entre colchetes

Compor uma citação completa cujo título termina com uma palavra entre colchetes

Estou usando o Biblatex e preciso compor citações completas no texto do meu documento, então estou usando\longfullcitecomando 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, \longfullcitepode 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:

saída do documento acima, mostrando que o primeiro \longfullcite coloca "In" corretamente em maiúscula, mas o segundo não

Observe a capitalização inconsistente da palavra "In" produzida pelos dois \longfullcitecomandos. Por outro lado, as citações emitidas por \printbibliographycapitalizam 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 \longfullciteem vez de alterar o .bibarquivo)?

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 \fullciteparecido com -. Infelizmente, as chances de uma solução adequada são mínimas. biblatexO 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}

informação relacionada