![tex4ht + biblatex + caracteres no ascii = codificación mixta en archivo html](https://rvso.com/image/461886/tex4ht%20%2B%20biblatex%20%2B%20caracteres%20no%20ascii%20%3D%20codificaci%C3%B3n%20mixta%20en%20archivo%20html.png)
tengo esta situacion
- un archivo LaTeX con una macro que normalmente se traduce a un carácter Unicode mediante tex4ht (por ejemplo,
\ldots
que se convirtió en…
) - una cita con caracteres no ASCII en el nombre del autor (por ejemplo,
í
inAlbarrací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. “A beautiful paper.” In: <span
Respuesta1
El utf8
soporte es uno de los temas que soluciona make4ht
. Si compila su archivo usando:
$ make4ht mwe.tex
Producirá utf8
un 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-8
en 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 -cunihtf
con 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.lua
que 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 biber
y luego ejecutará LaTeX dos veces para corregir todas las referencias cruzadas. Si desea acelerar la compilación, puede usar la draft
opció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: