tex4ht + biblatex + не-ascii символы = смешанная кодировка в html-файле

tex4ht + biblatex + не-ascii символы = смешанная кодировка в html-файле

У меня такая ситуация

  • файл LaTeX с макросом, который обычно преобразуется в символы Unicode с помощью tex4ht (например, \ldotsкоторый стал )
  • цитата с не-ASCII символом в имени автора (например, íin Albarracín)
  • Я хотел бы создать файл xhtml с помощью htlatex

Процедура работает, но в полученном файле один символ закодирован в utf-8 (макрос latex), а не-ascii символ в имени автора закодирован в latin-1. Насколько я знаю, htlatex включает файл bbl, читая его так, как будто он был в latin-1.

Можно ли что-нибудь сделать, чтобы исправить это поведение? :)
(Я работаю над этим pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022/Arch Linux))

Вот mwe, а ниже команды, которые я запускаю:

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

и результат

$ 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 

решение1

Поддержка utf8— одна из проблем, которая решается с помощью make4ht. Если вы скомпилируете свой файл с помощью:

$ make4ht mwe.tex

utf8По умолчанию будет создан файл.

Если вы хотите использовать htlatex, вы можете использовать это:

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

Были сделаны два существенных изменения. Во-первых, включением charset=utf-8в список опций была изменена кодировка HTML-файла, что позволило браузерам правильно отображать символы с ударениями. Во-вторых, крайне важно разделять открывающую кавычку и -cunihtfпробелом; в противном случае опция игнорируется, что приводит к неправильно закодированному файлу.

Я все еще рекомендую использовать make4ht, так как он проще в использовании, и он также исправляет другие проблемы. Например, вы можете создать файл сборки, build.luaкоторый будет компилировать библиографию по запросу:

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

Теперь вы можете использовать его так:

$ make4ht -e build.lua mwe.tex

Он автоматически вызовет biber, а затем дважды запустит LaTeX, чтобы исправить все перекрестные ссылки. Если вы хотите ускорить компиляцию, вы можете использовать опцию draft, которая запустит LaTeX только один раз, что приведет к гораздо более быстрой компиляции:

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

Вот результат:

введите описание изображения здесь

Связанный контент