tex4ht + biblatex + 非ascii 字元 = html 檔案中的混合編碼

tex4ht + biblatex + 非ascii 字元 = html 檔案中的混合編碼

我有這種情況

  • 帶有巨集的 LaTeX 文件,通常由 tex4ht 轉換為 unicode 字元(例如\ldots變成
  • 作者姓名中包含非 ASCII 字元的引用(例如íin Albarrací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. &#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

這是結果:

在此輸入影像描述

相關內容