tex4ht + biblatex + nicht-ASCII-Zeichen = gemischte Kodierung in HTML-Datei

tex4ht + biblatex + nicht-ASCII-Zeichen = gemischte Kodierung in HTML-Datei

Ich habe diese Situation

  • eine LaTeX-Datei mit einem Makro, das normalerweise von tex4ht in ein Unicode-Zeichen übersetzt wird ( \ldotsdas wurde zB zu )
  • ein Zitat mit Nicht-ASCII-Zeichen im Namen des Autors (z. B. das íin Albarracín)
  • Ich möchte eine XHTML-Datei mit htlatex generieren

Das Verfahren funktioniert, aber die resultierende Datei enthält ein in UTF-8 kodiertes Zeichen (das Latex-Makro) und das nicht-ASCII-Zeichen im Namen des Autors ist in Latin-1 kodiert. Soweit ich weiß, schließt htlatex die BBL-Datei ein und liest sie, als wäre sie in Latin-1.

Kann ich irgendetwas tun, um dieses Verhalten zu beheben? :)
(Ich arbeite daran pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022/Arch Linux))

Hier ist ein MWE und unten die Befehle, die ich ausführe:

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

und das Ergebnis

$ 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 

Antwort1

Die utf8Unterstützung ist eines der Probleme, die durch gelöst werden make4ht. Wenn Sie Ihre Datei kompilieren mit:

$ make4ht mwe.tex

utf8Standardmäßig wird eine Datei erstellt .

Wenn Sie verwenden möchten htlatex, können Sie Folgendes verwenden:

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

Es wurden zwei wesentliche Änderungen vorgenommen. Erstens charset=utf-8wurde durch die Aufnahme in die Optionsliste die Kodierung der HTML-Datei geändert, sodass Browser Akzentbuchstaben korrekt anzeigen können. Zweitens ist es wichtig, das öffnende Anführungszeichen und -cunihtfdurch ein Leerzeichen zu trennen. Andernfalls wird die Option ignoriert, was zu einer falsch kodierten Datei führt.

Ich empfehle dennoch die Verwendung von make4ht, da es einfacher zu verwenden ist und auch andere Probleme behebt. Sie können beispielsweise eine Build-Datei erstellen, build.luadie die Bibliographie auf Anfrage kompiliert:

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

Jetzt können Sie es folgendermaßen verwenden:

$ make4ht -e build.lua mwe.tex

Es wird automatisch aufgerufen biberund dann LaTeX zweimal ausgeführt, um alle Querverweise zu korrigieren. Wenn Sie die Kompilierung beschleunigen möchten, können Sie die draftOption verwenden, die LaTeX nur einmal ausführt, was zu einer viel schnelleren Kompilierung führt:

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

Dies ist das Ergebnis:

Bildbeschreibung hier eingeben

verwandte Informationen