Обновлять

Обновлять

Я получаю сообщения об ошибках, когда использую \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} 

Связанный контент