Conflito entre tex4ht e biblatex-chicago

Conflito entre tex4ht e biblatex-chicago

Não consigo tex4httrabalhar com biblatex-chicago. Compilar o MWE abaixo pdflatexgera os seguintes erros:

(/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}

? 

Tentei carregar babelcom várias opções, mas isso não mudou nada.

EDITAR 1Meu exemplo inicial foi muito mínimo: agora percebo que o problema só ocorre ao tentar usar esses pacotes como parte de uma classe personalizada.

EDITAR 2O mesmo erro ocorre ao carregar apenas biblatexcom a style=chicago-notesopção, então editei o MWE para refletir isso. Para simplificar a depuração, coloquei tex4htno MWE para que você possa executá pdflatex-lo diretamente.

Arquivo mwe.cls:

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

Arquivo 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}

Responder1

Como tex4htcorrige algumas macros internas biblatex, às vezes falha quando essas macros são alteradas em novas biblatexversões. Eu relatei esse problema emrastreador de bugs tex4hte forneceu correção de bug, que agora está incluída nas distribuições do TeX, para que sua amostra seja compilada sem erros com o TeX Live atualizado, por exemplo

insira a descrição da imagem aqui

Responder2

DRNão carregue biblatexde um arquivo de classe ao usar tex4ht, a menos que alguém possa resolver esse problema. Se eu transformar meu arquivo de classe em um pacote, tudo funcionará bem.

biblatexcom a opção estilo chicago chama o pacote biblatex2.stye esse arquivo executa uma série de testes na classe para corrigir determinados comandos.Eu pensoque, ao processar tex4hte usar uma classe personalizada, por algum motivo, biblatexnão passa por esses testes com êxito.


Abaixo estão notas da minha investigação, que podem ser úteis para alguém que queira realmente responder à pergunta. Se você fizer isso, recompensarei com prazer uma recompensa.

Eu adicionei \usepackage{tex4ht}e \tracingallao .texarquivo e compilei com pdflatex. O local onde o erro é gerado acontece logo após a linha 1409146 do .logarquivo:

\@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}

Tudo o que posso dizer é que o erro foi emitido devido a algum problema com a forma como etb@tgl@blx@tempaestá sendo passado para \@firstoftwo.


O mesmo erro surge se eu fizer o que biblatex-chicagoestou fazendo internamente, que é só fazer \RequirePackage[style=chicago-notes]{biblatex}. Biblatex.sty, então, por padrão, chama biblatex2.sty.

O 'ifthen'erro acontece após a linha 135 do biblatex2.sty. É emitido quando \TE@hooké indefinido. O único pacote que define esse comando (eu usei todos eles) é xifthen. Carregar xifthenantes biblatexelimina o ifthenerro.

Agora ainda existe o footnoteerro, que vem depois da linha 154 no arquivo biblatex2.sty. Aqui o pacote verifica quais classes estão carregadas e redefinindo os comandos de nota de rodapé conforme necessário para cada uma. Quando o comando footnote é corrigido com êxito, ele é definido blx@tmpacomo false. Se, depois de todo o teste, blx@tmpaainda for verdade, ele imprime esta mensagem de erro sobre as notas de rodapé.

informação relacionada