![tex4ht + biblatex + 非ascii 字元 = html 檔案中的混合編碼](https://rvso.com/image/461886/tex4ht%20%2B%20biblatex%20%2B%20%E9%9D%9Eascii%20%E5%AD%97%E5%85%83%20%3D%20html%20%E6%AA%94%E6%A1%88%E4%B8%AD%E7%9A%84%E6%B7%B7%E5%90%88%E7%B7%A8%E7%A2%BC.png)
我有這種情況
- 帶有巨集的 LaTeX 文件,通常由 tex4ht 轉換為 unicode 字元(例如
\ldots
變成…
) - 作者姓名中包含非 ASCII 字元的引用(例如
í
inAlbarracín
) - 我想用 htlatex 產生一個 xhtml 文件
這個過程有效,但產生的文件有一個以 utf-8(乳膠宏)編碼的字符,以及以 latin-1 編碼的作者姓名中的非 ascii 字符。 AFAICT,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
這是結果: