我有这种情况
- 带有宏的 LaTeX 文件,通常由 tex4ht 转换为 unicode 字符(例如
\ldots
变成…
) - 作者姓名中包含非 ASCII 字符的引文(例如
í
中的Albarracín
) - 我想用 htlatex 生成一个 xhtml 文件
该过程有效,但生成的文件有一个用 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
结果如下: