tex4ht
を操作できませんbiblatex-chicago
。以下の MWE を でコンパイルすると、pdflatex
次のエラーが発生します。
(/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}
?
babel
さまざまなオプションでロードしてみましたが、何も変わりませんでした。
編集1私の最初の例はあまりにも簡潔すぎました。今では、これらのパッケージをカスタム クラスの一部として使用しようとした場合にのみ問題が発生することに気付きました。
編集2biblatex
オプションを指定してロードしただけでも同じエラーが発生するためstyle=chicago-notes
、それを反映するように MWE を編集しました。デバッグを簡単にするために、 MWEに直接tex4ht
実行できるようにしました。pdflatex
ファイルmwe.cls
:
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mwe}[2016/02/10 biblatex-chicago + tex4ht test]
\LoadClass{article}
\RequirePackage[style=chicago-notes]{biblatex}
\endinput
ファイル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}
答え1
tex4ht
いくつかの内部マクロをパッチするためbiblatex
、新しいbiblatex
バージョンでこれらのマクロが変更されると失敗することがあります。この問題を報告しました。tex4ht バグトラッカーバグ修正が提供され、これは現在TeXディストリビューションに含まれているため、サンプルは更新されたTeX Liveでエラーなくコンパイルされます。たとえば、
答え2
要約biblatex
誰かがこの問題を解決できない限り、を使用するときにクラス ファイルからロードしないでくださいtex4ht
。クラス ファイルをパッケージに変換すると、正常に動作します。
biblatex
シカゴ スタイルのオプションを使用するとパッケージが呼び出されbiblatex2.sty
、このファイルは特定のコマンドにパッチを適用するためにクラスに対して一連のテストを実行します。私は思うtex4ht
カスタム クラスを使用して処理する場合、何らかの理由でbiblatex
これらのテストを正常に通過できません。
以下は私の調査メモです。この質問に実際に答えたい人にとって役立つかもしれません。もし答えてくれたら、喜んで賞金を差し上げます。
ファイルに\usepackage{tex4ht}
とを追加し、 でコンパイルしました。エラーが出力される場所は、ファイルの 1409146 行目の直後です。\tracingall
.tex
pdflatex
.log
\@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}
etb@tgl@blx@tempa
私が言えるのは、が に渡される方法に何らかの問題があるためにエラーが発行されるということだけです\@firstoftwo
。
biblatex-chicago
内部で が行っていること、つまり を実行するだけの場合、同じエラーが発生します\RequirePackage[style=chicago-notes]{biblatex}
。Biblatex.sty
その後、 はデフォルトで を呼び出しますbiblatex2.sty
。
エラー'ifthen'
は の 135 行目以降で発生しますbiblatex2.sty
。 が定義されていない場合に発生します\TE@hook
。 このコマンドを定義するパッケージは (すべてを grep で検索しました) のみですxifthen
。xifthen
の前にをロードすると、エラーがbiblatex
解消されますifthen
。
footnote
の 154 行目以降から発生するエラーがまだ残っていますbiblatex2.sty
。ここで、パッケージはどのクラスがロードされているかを確認し、それぞれに必要に応じて脚注コマンドを再定義しています。脚注コマンドが正常にパッチされると、 がblx@tmpa
に設定されますfalse
。すべてのテストの後でもblx@tmpa
がまだ true である場合、脚注に関するこのエラー メッセージが出力されます。