나는 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를 편집했습니다. 디버깅을 단순화하기 위해 tex4ht
MWE에 직접 실행할 수 있도록 했습니다 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
TL;DRbiblatex
누군가가 이 문제를 해결할 수 없다면 를 사용할 때 클래스 파일에서 로드하지 마십시오 tex4ht
. 클래스 파일을 패키지로 변환하면 제대로 작동합니다.
biblatex
시카고 스타일 옵션을 사용하면 package 를 호출 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
내부적으로 하고 있는 일, 즉 단지 do 를 하면 같은 오류가 발생합니다 \RequirePackage[style=chicago-notes]{biblatex}
. Biblatex.sty
, 기본적으로 biblatex2.sty
.
'ifthen'
의 135번째 줄 이후에 오류가 발생 합니다 biblatex2.sty
. \TE@hook
정의되지 않은 경우 발행됩니다 . 해당 명령을 정의하는 유일한 패키지(저는 모두 grep했습니다)는 xifthen
. xifthen
이전에 로드하면 오류가 biblatex
제거됩니다 ifthen
.
이제 footnote
. biblatex2.sty
여기서 패키지는 어떤 클래스가 로드되었는지 확인하고 각 클래스에 대해 필요에 따라 각주 명령을 재정의합니다. 각주 명령이 성공적으로 패치되면 blx@tmpa
로 설정됩니다 false
. 모든 테스트 후에도 blx@tmpa
여전히 true이면 각주에 대해 이 오류 메시지가 인쇄됩니다.