Konflikt zwischen tex4ht und biblatex-chicago

Konflikt zwischen tex4ht und biblatex-chicago

Ich kann nicht tex4htmit arbeiten biblatex-chicago. Das Kompilieren des MWE unten mit pdflatexerzeugt die folgenden Fehler:

(/usr/local/texlive/2015/texmf-dist/tex/latex/biblatex/lbx/english.lbx)))

Package biblatex Warning: Language 'american' not supported.
(biblatex)                Using fallback language 'english' on input line 14.


! Package biblatex Error: Patching 'ifthen' package failed.

See the biblatex package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.14 \begin{document}

? 

Package biblatex Warning: Patching footnotes failed.
(biblatex)                Footnote detection will not work.

! Package biblatex Error: Patching \MakeUppercase failed.

See the biblatex package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.14 \begin{document}

? 

Ich habe versucht, babelmit verschiedenen Optionen zu laden, aber das hat nichts geändert.

BEARBEITEN 1Mein erstes Beispiel war zu minimal: Mir ist jetzt klar, dass das Problem nur auftritt, wenn ich versuche, diese Pakete als Teil einer benutzerdefinierten Klasse zu verwenden.

BEARBEITEN 2Derselbe Fehler tritt beim Laden biblatexmit der style=chicago-notesOption auf, daher habe ich das MWE entsprechend bearbeitet. Um das Debuggen zu vereinfachen, habe ich es tex4htin das MWE eingefügt, damit Sie pdflatexes direkt ausführen können.

Datei mwe.cls:

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mwe}[2016/02/10 biblatex-chicago + tex4ht test]
\LoadClass{article}
\RequirePackage[style=chicago-notes]{biblatex}
\endinput

Datei bib4ht.tex:

\documentclass{mwe}
\usepackage{tex4ht}

\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@Book{Sample,
author={Last, First},
title={Sample Book},
year=2016
}
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}
Test.\cite{Sample}
\end{document}

Antwort1

Da tex4hteinige interne biblatexMakros gepatcht werden, kommt es manchmal zu Fehlern, wenn sich diese Makros in neuen biblatexVersionen ändern. Ich habe dieses Problem gemeldet auftex4ht Fehlertrackerund Bugfix bereitgestellt, der jetzt in TeX-Distributionen enthalten ist, sodass Ihr Beispiel beispielsweise mit aktualisiertem TeX Live fehlerfrei kompiliert wird

Bildbeschreibung hier eingeben

Antwort2

Kurz zusammengefasstLaden Sie biblatexbei Verwendung nicht aus einer Klassendatei tex4ht, es sei denn, jemand kann dieses Problem lösen. Wenn ich meine Klassendatei in ein Paket umwandle, funktioniert es einwandfrei.

biblatexmit der Option „Chicago Style“ ruft das Paket auf biblatex2.sty, und diese Datei führt eine Reihe von Tests für die Klasse aus, um bestimmte Befehle zu patchen.Ich findedas bei der Verarbeitung mit tex4htund Verwendung einer benutzerdefinierten Klasse biblatexdiese Tests aus irgendeinem Grund nicht erfolgreich durchläuft.


Nachfolgend finden Sie Notizen zu meiner Untersuchung, die für jemanden nützlich sein könnten, der die Frage tatsächlich beantworten möchte. Wenn Sie das tun, werde ich gerne eine Belohnung aussetzen.

Ich habe \usepackage{tex4ht}und \tracingallzur .texDatei hinzugefügt und mit kompiliert pdflatex. Der Fehler wird direkt nach Zeile 1409146 der .logDatei ausgegeben:

\@firstoftwo #1#2->#1
#1<-\csname etb@tgl@blx@tempa\endcsname
#2<-\etb@err@notoggle {blx@tempa}\@gobbletwo
{\csname}

\etb@tgl@blx@tempa #1#2->#1
#1<-\blx@err@patch {'ifthen' package}
#2<-

\blx@err@patch #1->\blx@error {Patching #1 failed} {This is an internal issue t
ypically caused by a conflict\MessageBreak between biblatex and some other pack
age. Modifying\MessageBreak the package loading order may fix the problem}
#1<-'ifthen' package

\blx@error #1#2->\begingroup \blx@safe@actives \PackageError {biblatex}{#1}{#2.
}\endgroup
#1<-Patching 'ifthen' package failed
#2<-This is an internal issue typically caused by a conflict\MessageBreak betwe
en biblatex and some other package. Modifying\MessageBreak the package loading
order may fix the problem
{\begingroup}
{entering semi simple group (level 1) at line 15}

Ich kann nur sagen, dass der Fehler auftritt, weil es ein Problem mit der Art und Weise der etb@tgl@blx@tempaÜbergabe gibt \@firstoftwo.


Derselbe Fehler tritt auf, wenn ich das mache, was biblatex-chicagointern gemacht wird, also einfach mache \RequirePackage[style=chicago-notes]{biblatex}. Biblatex.styruft dann standardmäßig auf biblatex2.sty.

Der 'ifthen'Fehler tritt nach Zeile 135 von auf biblatex2.sty. Er wird ausgegeben, wenn \TE@hooknicht definiert ist. Das einzige Paket, das diesen Befehl definiert (ich habe sie alle gegrept), ist xifthen. Das Laden xifthenvor dem Laden biblatexbehebt den ifthenFehler.

Jetzt gibt es immer noch den footnoteFehler, der nach Zeile 154 in auftritt biblatex2.sty. Hier prüft das Paket, welche Klassen geladen sind, und definiert die Fußnotenbefehle bei Bedarf für jede neu. Wenn der Fußnotenbefehl erfolgreich gepatcht wurde, wird er blx@tmpaauf gesetzt false. Wenn nach all den Tests blx@tmpaimmer noch wahr ist, wird diese Fehlermeldung über die Fußnoten gedruckt.

verwandte Informationen