Ich kann nicht tex4ht
mit arbeiten biblatex-chicago
. Das Kompilieren des MWE unten mit pdflatex
erzeugt 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, babel
mit 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 biblatex
mit der style=chicago-notes
Option auf, daher habe ich das MWE entsprechend bearbeitet. Um das Debuggen zu vereinfachen, habe ich es tex4ht
in das MWE eingefügt, damit Sie pdflatex
es 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 tex4ht
einige interne biblatex
Makros gepatcht werden, kommt es manchmal zu Fehlern, wenn sich diese Makros in neuen biblatex
Versionen ä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
Antwort2
Kurz zusammengefasstLaden Sie biblatex
bei 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.
biblatex
mit 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 tex4ht
und Verwendung einer benutzerdefinierten Klasse biblatex
diese 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 \tracingall
zur .tex
Datei hinzugefügt und mit kompiliert pdflatex
. Der Fehler wird direkt nach Zeile 1409146 der .log
Datei 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-chicago
intern gemacht wird, also einfach mache \RequirePackage[style=chicago-notes]{biblatex}
. Biblatex.sty
ruft dann standardmäßig auf biblatex2.sty
.
Der 'ifthen'
Fehler tritt nach Zeile 135 von auf biblatex2.sty
. Er wird ausgegeben, wenn \TE@hook
nicht definiert ist. Das einzige Paket, das diesen Befehl definiert (ich habe sie alle gegrept), ist xifthen
. Das Laden xifthen
vor dem Laden biblatex
behebt den ifthen
Fehler.
Jetzt gibt es immer noch den footnote
Fehler, 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@tmpa
auf gesetzt false
. Wenn nach all den Tests blx@tmpa
immer noch wahr ist, wird diese Fehlermeldung über die Fußnoten gedruckt.