No puedo ponerme tex4ht
a trabajar con biblatex-chicago
. Compile el MWE a continuación y pdflatex
genera 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 babel
con 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 biblatex
con la style=chicago-notes
opción, así que edité el MWE para reflejar eso. Para simplificar la depuración, lo instalé tex4ht
en MWE para que puedas ejecutarlo pdflatex
directamente.
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 tex4ht
parchea algunas macros internas biblatex
, a veces falla cuando estas macros cambian en nuevas biblatex
versiones. 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.
Respuesta2
TL;DRNo cargue biblatex
desde 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.
biblatex
con la opción estilo chicago llama al paquete biblatex2.sty
y este archivo ejecuta una serie de pruebas en la clase para parchear ciertos comandos.Creoque al procesar tex4ht
y utilizar una clase personalizada, por alguna razón biblatex
no 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 \tracingall
al .tex
archivo y lo compilé con pdflatex
. El lugar donde se genera el error ocurre justo después de la línea 1409146 del .log
archivo:
\@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@tempa
se pasa a \@firstoftwo
.
El mismo error surge si hago lo que biblatex-chicago
está 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@hook
no está definido. El único paquete que define ese comando (los guardé todos) es xifthen
. Cargar xifthen
antes biblatex
elimina el ifthen
error.
Ahora todavía existe el footnote
error, 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@tmpa
en false
. Si, después de toda la prueba, blx@tmpa
sigue siendo cierto, imprime este mensaje de error sobre las notas al pie.