
Recibo mensajes de error cuando uso \mathbb
en el encabezado de un teorema de tcolorbox. Aquí hay un MWE:
\documentclass{article}
\usepackage{amsfonts}
\usepackage{tcolorbox}
\tcbuselibrary{theorems}
\newtcbtheorem{boxtheorem}{Theorem}{}{thm}
\begin{document}
\begin{boxtheorem}{This is the problem: $\mathbb{N}$}{}
This is fine: $\mathbb{N}$
\end{boxtheorem}
\end{document}
Aquí están los cuatro mensajes de error:
! Undefined control sequence.
\GenericError ...
#4 \errhelp \@err@ ...
! Undefined control sequence.
\GenericError ...
\let \@err@ ...
! Undefined control sequence.
\GenericError ...
\@empty \def \MessageBreak...
! Undefined control sequence.
\GenericError ...
\endgroup
Yo uso MiKTeX 2.9. Está recién instalado y todos los paquetes y formatos están actualizados. Sorprendentemente, ese parece ser el problema: cuando compilo el mismo documento en otra computadora con paquetes más antiguos, no hay problemas. Pero tener que depender de paquetes más antiguos no es sostenible a largo plazo, por lo que necesito descubrir cómo resolver el problema con los paquetes más nuevos. ¿Alguien puede ayudarme por favor?
Respuesta1
Actualizar
A partir de tcolorbox
la versión 3.96, lanzada el 18/11/2016, el error se ha solucionado.
Respuesta original
Es un error grave en tcolorbox
: la macro \tcb@gettitle
lo hace \edef
en lugar de \protected@edef
, así quemuchosLos comandos fallarán, no solo \mathbb
(piense en \emph
, por ejemplo).
Puedes solucionarlo redefiniendo la macro incorrecta.
\documentclass{article}
\usepackage{amsfonts}
\usepackage{tcolorbox}
\tcbuselibrary{theorems}
\newtcbtheorem{boxtheorem}{Theorem}{}{thm}
\makeatletter
\def\tcb@gettitle#1{\protected@edef\@currentlabelname{#1}}
\makeatother
\begin{document}
\begin{boxtheorem}{This is the \emph{problem}: $\mathbb{N}$}{}
This is fine: $\mathbb{N}$
\end{boxtheorem}
\end{document}
Respuesta2
Puedes hacer que el comando sea robusto:
\documentclass{article}
\usepackage{amsfonts}
\usepackage{tcolorbox}
\tcbuselibrary{theorems}
\newtcbtheorem{boxtheorem}{Theorem}{}{thm}
\usepackage{etoolbox}
\robustify\mathbb
\begin{document}
\begin{boxtheorem}{This is the problem: $\mathbb{N}$}{}
This is fine: $\mathbb{N}$
\end{boxtheorem}
\end{document}