Se me han informado varios errores con este ejemplo mínimo (último TeX Live 2012). Los errores se introdujeron con actualizaciones recientes de TeX Live.
\RequirePackage[l2tabu, orthodox]{nag}
\documentclass{scrbook}
\usepackage{morewrites}
\RequirePackage{listings}
\AtBeginDocument{%
\RequirePackage{mdframed}
}
\begin{document}
\end{document}
En xparse.sty
:
! El uso de
\GetIdInfoAuxI
no coincide con su definición. l.66\GetIdInfo$ Id: xparse.dtx 4467 2013-03-12 08:29:05Z joseph $
En etoolbox.sty
:
(
c:/texlive/2012/texmf-dist/tex/latex/etoolbox/etoolbox.sty
! Falta$
insertado.
En mdframed.sty
:
! Se superó la capacidad de TeX, lo siento
[input stack size=5000]
.\etoolbox.sty-h@@k ->\etoolbox.sty-h@@k \etb@catcodes \undef \etb@catcodes
1.72\RequirePackage{etoolbox}
[03/01/2011]
Respuesta1
La respuesta de @DavidCarlisle detalla la causa de este problema y, aunque la solución funciona, puede ser preferible utilizar una solución con menos magia de código cat. Utilizando la \AtEndPreamble
macro proporcionada por etoolbox
, se puede reescribir el MWE para que no se produzcan errores:
\RequirePackage[l2tabu, orthodox]{nag}
\documentclass{scrbook}
\usepackage{morewrites}
\RequirePackage{listings}
\usepackage{etoolbox}
\AtEndPreamble{%
\RequirePackage{mdframed}
}
\begin{document}
\end{document}
Aunque no veo ninguna razón para posponer la carga mdframed
para empezar.
Respuesta2
El paquete nag cambia $
de su definición habitual a "activo"
\AtBeginDocument{\catcode`$\active}%$
\AtEndDocument{\catcode`$=3\relax}
Intenta minimizar los conflictos que esto puede provocar retrasando el inicio del documento.
el uso mdframed (a través de xparse) $
para analizar los encabezados de control de fuente en los archivos del paquete. Esto falla porque RequirePackage
se retrasó hasta BeginDocument.
La solución más obvia para esto es simplemente usar
\usepackage{mdframed}
en vez de
\AtBeginDocument{%
\RequirePackage{mdframed}
}
Pero depende de por qué se retrasó la carga del paquete en primer lugar...
Como se señaló en los comentarios, retrasar la carga del paquete \AtBeginDocument
siempre es riesgoso ya que carga el paquete más tarde de lo previsto, después de que LaTeX haya configurado las estructuras globales de fuente y tamaño de página; sin embargo, esto funciona:
\RequirePackage[l2tabu, orthodox]{nag}
\documentclass{scrbook}
\usepackage{morewrites}
\RequirePackage{listings}
\AtBeginDocument{%
\edef\saveddcatcode{\the\catcode\expandafter`\string$}%
\catcode`\$3 %
\RequirePackage{mdframed}%
\catcode`\$ \saveddcatcode\relax
}
\begin{document}
\end{document}