
Я получаю сообщения об ошибках, когда использую \mathbb
в заголовке теоремы tcolorbox. Вот 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}
Вот четыре сообщения об ошибках:
! 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
Я использую MiKTeX 2.9. Он недавно установлен, и все пакеты и форматы обновлены. Удивительно, но, похоже, проблема в этом: когда я компилирую тот же документ на другом компьютере со старыми пакетами, проблем не возникает. Но полагаться на старые пакеты в долгосрочной перспективе невыгодно, поэтому мне нужно выяснить, как решить проблему с новейшими пакетами. Может ли кто-нибудь мне помочь?
решение1
Обновлять
Начиная с tcolorbox
версии 3.96, выпущенной 18.11.2016, ошибка была исправлена.
Оригинальный ответ
Это серьезная ошибка в tcolorbox
: макрос \tcb@gettitle
делает \edef
вместо \protected@edef
, поэтомумногокоманды не только не будут выполнены \mathbb
(например \emph
, ).
Вы можете исправить это, переопределив плохой макрос.
\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}
решение2
Вы можете сделать команду более надежной:
\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}