![tex4ht + biblatex + не-ascii символы = смешанная кодировка в html-файле](https://rvso.com/image/461886/tex4ht%20%2B%20biblatex%20%2B%20%D0%BD%D0%B5-ascii%20%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D1%8B%20%3D%20%D1%81%D0%BC%D0%B5%D1%88%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F%20%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0%20%D0%B2%20html-%D1%84%D0%B0%D0%B9%D0%BB%D0%B5.png)
У меня такая ситуация
- файл LaTeX с макросом, который обычно преобразуется в символы Unicode с помощью tex4ht (например,
\ldots
который стал…
) - цитата с не-ASCII символом в имени автора (например,
í
inAlbarrací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. “A beautiful paper.” 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
Вот результат: