Conflicto entre tex4ht y biblatex-chicago

Conflicto entre tex4ht y biblatex-chicago

No puedo ponerme tex4hta trabajar con biblatex-chicago. Compile el MWE a continuación y pdflatexgenera los siguientes errores:

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

? 

Intenté cargar babelcon varias opciones pero esto no cambió nada.

EDITAR 1Mi ejemplo inicial era demasiado mínimo: ahora me doy cuenta de que el problema sólo ocurre cuando intento utilizar estos paquetes como parte de una clase personalizada.

EDITAR 2El mismo error ocurre al cargar biblatexcon la style=chicago-notesopción, así que edité el MWE para reflejar eso. Para simplificar la depuración, lo instalé tex4hten MWE para que puedas ejecutarlo pdflatexdirectamente.

Archivo mwe.cls:

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

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

Respuesta1

Como tex4htparchea algunas macros internas biblatex, a veces falla cuando estas macros cambian en nuevas biblatexversiones. Informé este problema enrastreador de errores tex4hty proporcionó una corrección de errores, que ahora se incluye en las distribuciones de TeX, por lo que su muestra se compila sin errores con TeX Live actualizado, por ejemplo.

ingrese la descripción de la imagen aquí

Respuesta2

TL;DRNo cargue biblatexdesde un archivo de clase cuando use tex4ht, a menos que alguien pueda resolver este problema. Si convierto mi archivo de clase en un paquete, funciona bien.

biblatexcon la opción estilo chicago llama al paquete biblatex2.styy este archivo ejecuta una serie de pruebas en la clase para parchear ciertos comandos.Creoque al procesar tex4hty utilizar una clase personalizada, por alguna razón biblatexno supera estas pruebas con éxito.


A continuación se encuentran notas de mi investigación, que podrían ser útiles para alguien que quiera responder la pregunta. Si lo haces, con mucho gusto te recompensaré con una recompensa.

Agregué \usepackage{tex4ht}y \tracingallal .texarchivo y lo compilé con pdflatex. El lugar donde se genera el error ocurre justo después de la línea 1409146 del .logarchivo:

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

Todo lo que puedo decir es que el error se genera debido a algún problema con la forma en que etb@tgl@blx@tempase pasa a \@firstoftwo.


El mismo error surge si hago lo que biblatex-chicagoestá haciendo internamente, que es solo hacer \RequirePackage[style=chicago-notes]{biblatex}. Biblatex.sty, entonces, por defecto llama biblatex2.sty.

El 'ifthen'error ocurre después de la línea 135 de biblatex2.sty. Se emite cuando \TE@hookno está definido. El único paquete que define ese comando (los guardé todos) es xifthen. Cargar xifthenantes biblatexelimina el ifthenerror.

Ahora todavía existe el footnoteerror, que viene después de la línea 154 en biblatex2.sty. Aquí el paquete verifica qué clases están cargadas y redefine los comandos de notas al pie según sea necesario para cada una. Cuando el comando de nota al pie se parchea correctamente, se establece blx@tmpaen false. Si, después de toda la prueba, blx@tmpasigue siendo cierto, imprime este mensaje de error sobre las notas al pie.

información relacionada