
Recebo mensagens de erro quando uso \mathbb
o título de um teorema tcolorbox. Aqui está um 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}
Aqui estão as quatro mensagens de erro:
! 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
Eu uso o MiKTeX 2.9. Ele foi instalado recentemente e todos os pacotes e formatos foram atualizados. Surpreendentemente, esse parece ser o problema: quando compilo o mesmo documento em outro computador com pacotes mais antigos, não há problemas. Mas ter que depender de pacotes mais antigos não é sustentável no longo prazo, então preciso descobrir como resolver o problema com os pacotes mais novos. Alguém pode me ajudar por favor?
Responder1
Atualizar
A partir da tcolorbox
versão 3.96, lançada em 18/11/2016, o bug foi corrigido.
Resposta original
É um bug grave tcolorbox
: a macro \tcb@gettitle
faz \edef
em vez de \protected@edef
, entãomuitosos comandos falharão, não apenas \mathbb
(pense em \emph
, por exemplo).
Você pode consertar isso redefinindo a macro incorreta.
\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}
Responder2
Você pode tornar o comando 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}