Espaço errado em referências do tipo `@online`
Closed this issue · 5 comments
As referências do tipo @online
aparecem com um espaço errado entre a URL e o ponto, e entre a data de acesso e o ponto na lista de referências. Exemplo:
SWISS FEDERAL OFFICE OF TOPOGRAPHY. Swiss Map Vector 500. 8 Jan. 2024. Available from:
https://www.swisstopo.admin.ch/en/national-map-swiss-map-vector-500 . Visited on: 20 May 2024 .
O espaço depois do "500" de do ano de acesso "2024" não deveria aparecer. De fato, o espaço não aparece em outros campos.
Di uma olhada no arquivo abnt.bbx e achei o problema. Nas linhas 1520-1522 aparece:
% remove <> in URLs according to abnt-6023:2018
\DeclareFieldFormat{url}{\textmainlang{\bibstring{urlfrom}\addcolon\addspace \url{#1}}}
\DeclareFieldFormat{urldate}{\textmainlang{\bibstring{urlseen}\addcolon\addspace #1}}%
O comando \textmainlang
adiciona o espaço errado nos campos da URL (url
) e da data de acesso (urldate
). Inicialmente pensei em tirar o comando \textmainlang
, mas descobri que esses dois campos já estão definidos nas linhas 1023-1024:
\DeclareFieldFormat{url}{\bibstring{urlfrom}\addcolon\addspace\url{#1}}%
\DeclareFieldFormat{urldate}{\bibstring{urlseen}\addcolon\addspace #1}%
As definições são iguais quando tiramos o \textmainlang
. Acho então que é seguro tirar as linhas do problema 1520-1522 porque as linhas 1023-1024 já consideram a correção da ABNT 6023:2018 e não adicionam o espaço errado.
Fiz um teste apagando as linhas 1520-1522 e deu certo. Estou compilando o documento com LuaTeX em TeX Live 2024 e biblatex-abnt instalado manualmente do GitHub (mas o problema também acontece com o biblatex-abnt do CTAN).
Muito obrigado! Notei que na versão com o \textmainlang
há um espaço a mais antes de \url{#1}
em comparação com a outra versão (\addspace \url{#1}
vs \addspace\url{#1}
). Será que não é esse o problema?
Como no exemplo acima, o espaço a mais aparece depois de \url{#1}
. Nas duas versões não aparece um espaço no final do \DeclareFieldFormat
. Além disso, \DeclareFieldFormat
não reconhece espaços literais no código; por isso usa \addspace
.
Também di uma olhada no manual de BibLaTeX para entender mais sobre o comando \textmainlang
. Segundo o manual, o uso apropriado é como uma opção de \bibstring
, ou seja:
\bibstring[\textmainlang]{urlfrom}
% e não
\textmainlang{\bibstring{urlfrom}}
No entanto, fiz o teste e agora adiciona um espaço a mais em Available from :
Também tentei usar \mainlang
e \textouterlang
(e.g., plk/biblatex#1108), mas esses comandos também adicionam o espaço a mais.
Acho que é um bug upstream. A definição do comando \textmainlang
no código de BibLaTeX está no arquivo (biblatex.sty):
\def\blx@imc@textmainlang##1{%
{{\expandafter\selectlanguage\expandafter{\blx@main@language}##1}}}%
A definição usa \selectlanguage
de Babel, e está entre dois pares de chaves como recomendado no manual de Babel. Porém o manual de Babel não recomenda \selectlanguage
para frases curtas, sendo melhor a função \foreignlanguage{lang}{text}
. Sinceramente, não me sinto muito confortável para mudar o código de BibLaTeX ou de Babel/Polyglossia.
Não sei se vale a pena abrir um issue em BibLaTeX ou até mesmo usar uma função para mudar o idioma localmente. Acho que é melhor o usuário definir o idioma da lista de referências de forma general, e.g., usando \selectlanguage
antes do \printbibliography
(o manual de ABNTeX também explica como mudar o idioma).
Hmm, é, acho que daria pra abrir uma issue lá e ver o que dizem. Mas, por enquanto, se quiser abrir uma PR aqui podemos fazer a mudança!
Já abri a PR
Acho que dá para fechar o issue
Obrigado
Muito obrigado!