![tex4ht + biblatex + caracteres não-ascii = codificação mista em arquivo html](https://rvso.com/image/461886/tex4ht%20%2B%20biblatex%20%2B%20caracteres%20n%C3%A3o-ascii%20%3D%20codifica%C3%A7%C3%A3o%20mista%20em%20arquivo%20html.png)
eu tenho essa situação
- um arquivo LaTeX com uma macro que geralmente é traduzida em um caractere unicode por tex4ht (por exemplo,
\ldots
que se tornou…
) - uma citação com caractere não-ascii no nome do autor (por exemplo, o
í
inAlbarracín
) - Gostaria de gerar um arquivo xhtml com htlatex
O procedimento funciona, mas o arquivo resultante possui um caractere codificado em utf-8 (a macro latex) e o caractere não-ascii no nome do autor codificado em latin-1. AFAICT, htlatex inclui o arquivo bbl lendo-o como se estivesse em latin-1.
Há algo que eu possa fazer para corrigir esse comportamento? :)
(Eu estou trabalhando em pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022/Arch Linux)
)
Aqui está um mwe e abaixo os comandos que executo:
%% File mwe.tex
\documentclass{article}
\usepackage[backend=biber]{biblatex}
\begin{filecontents}{\jobname.bib}
@Article{Albarracin2000,
year = {2000},
volume = {1},
issue = {2},
pages = {3},
author = {Anyone Albarracín},
title = {A beautiful paper.},
journaltitle = {Some Journal}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
I Am a Scientist\ldots\ Ask Me Anything
\parencite{Albarracin2000}
\printbibliography
\end{document}
htlatex mwe.tex "xhtml" "-cunihtf -utf8" "" ""
biber mwe
htlatex mwe.tex "xhtml" "-cunihtf -utf8" "" ""
e o resultado
$ file mwe.html
mwe.html: XML 1.0 document, Non-ISO extended-ASCII text
$ grep -a -e 'Anyone Albarra' -e Scientist --color mwe.html
<!--l. 22--><p class="noindent" >I Am a Scientist… Ask Me Anything [<a
<!--l. 26--><p class="noindent" >Anyone Albarrac�n. “A beautiful paper.” In: <span
Responder1
O utf8
suporte é um dos problemas resolvidos pelo make4ht
. Se você compilar seu arquivo usando:
$ make4ht mwe.tex
Ele produzirá utf8
o arquivo por padrão.
Se você quiser usar htlatex
, você pode usar isto:
$ htlatex mwe.tex "xhtml,charset=utf-8" " -cunihtf -utf8"
Duas modificações significativas foram feitas. Primeiramente, ao incluir charset=utf-8
na lista de opções, a codificação do arquivo HTML foi alterada, permitindo que os navegadores exibam corretamente os caracteres acentuados. Em segundo lugar, é fundamental separar a citação de abertura e -cunihtf
com espaço; caso contrário, a opção será ignorada, resultando em um arquivo codificado incorretamente.
Ainda recomendo usar o make4ht
, pois é mais fácil de usar e também corrige outros problemas. Por exemplo, você pode criar um arquivo build, build.lua
que compilará a bibliografia mediante solicitação:
if mode == "draft" then
Make:htlatex {}
else
Make:htlatex {}
Make:biber {}
Make:htlatex {}
Make:htlatex {}
end
Agora você pode usá-lo assim:
$ make4ht -e build.lua mwe.tex
Ele irá chamar automaticamente biber
e então executará o LaTeX duas vezes, para corrigir todas as referências cruzadas. Se quiser acelerar a compilação, você pode usar a draft
opção, que executará o LaTeX apenas uma vez, resultando em uma compilação muito mais rápida:
$ make4ht -e build.lua -m draft mwe.tex
Este é o resultado: