tex4ht + biblatex + caracteres no ascii = codificación mixta en archivo html

tex4ht + biblatex + caracteres no ascii = codificación mixta en archivo html

tengo esta situacion

  • un archivo LaTeX con una macro que normalmente se traduce a un carácter Unicode mediante tex4ht (por ejemplo, \ldotsque se convirtió en )
  • una cita con caracteres no ASCII en el nombre del autor (por ejemplo, íin Albarracín)
  • Me gustaría generar un archivo xhtml con htlatex

El procedimiento funciona, pero el archivo resultante tiene un carácter codificado en utf-8 (la macro de látex) y el carácter no ASCII en el nombre del autor codificado en latin-1. AFAICT, htlatex incluye el archivo bbl que lo lee como si estuviera en latin-1.

¿Hay algo que pueda hacer para solucionar este comportamiento? :)
(Estoy trabajando en eso pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022/Arch Linux))

Aquí hay un mwe y debajo los comandos que ejecuto:

%% 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" "" ""

y el 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. &#8220;A beautiful paper.&#8221; In: <span 

Respuesta1

El utf8soporte es uno de los temas que soluciona make4ht. Si compila su archivo usando:

$ make4ht mwe.tex

Producirá utf8un archivo de forma predeterminada.

Si quieres usar htlatex, puedes usar esto:

$ htlatex mwe.tex "xhtml,charset=utf-8" " -cunihtf -utf8"

Se han realizado dos modificaciones importantes. En primer lugar, al incluirlo charset=utf-8en la lista de opciones, se ha cambiado la codificación del archivo HTML, permitiendo a los navegadores mostrar correctamente los caracteres acentuados. En segundo lugar, es fundamental separar la cita inicial y -cunihtfcon un espacio; de lo contrario, la opción se ignora, lo que genera un archivo codificado incorrectamente.

Todavía recomiendo usar make4ht, ya que es más fácil de usar y también soluciona otros problemas. Por ejemplo, puede crear un archivo de compilación build.luaque compilará la bibliografía a pedido:

if mode == "draft" then
  Make:htlatex {}
else
  Make:htlatex {}
  Make:biber {}
  Make:htlatex {}
  Make:htlatex {}
end

Ahora puedes usarlo así:

$ make4ht -e build.lua mwe.tex

Llamará automáticamente bibery luego ejecutará LaTeX dos veces para corregir todas las referencias cruzadas. Si desea acelerar la compilación, puede usar la draftopción, que ejecutará LaTeX solo una vez, lo que resultará en una compilación mucho más rápida:

$ make4ht -e build.lua -m draft  mwe.tex

Este es el resultado:

ingrese la descripción de la imagen aquí

información relacionada