
Ich erhalte Fehlermeldungen, wenn ich \mathbb
in der Überschrift eines Tcolorbox-Theorems verwende. Hier ist ein 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}
Hier sind die vier Fehlermeldungen:
! 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
Ich verwende MiKTeX 2.9. Es ist neu installiert und alle Pakete und Formate sind aktualisiert. Überraschenderweise scheint das das Problem zu sein: Wenn ich dasselbe Dokument auf einem anderen Computer mit älteren Paketen kompiliere, gibt es keine Probleme. Aber auf lange Sicht auf ältere Pakete angewiesen zu sein, ist nicht tragbar, also muss ich herausfinden, wie ich das Problem mit den neuesten Paketen lösen kann. Kann mir bitte jemand helfen?
Antwort1
Aktualisieren
Ab tcolorbox
Version 3.96, veröffentlicht am 18.11.2016, ist der Fehler behoben.
Ursprüngliche Antwort
Es handelt sich um einen schlimmen Fehler in tcolorbox
: das Makro \tcb@gettitle
führt \edef
statt aus \protected@edef
, alsovieleBefehle werden fehlschlagen, nicht nur \mathbb
(denken Sie \emph
beispielsweise an ).
Sie können das Problem beheben, indem Sie das fehlerhafte Makro neu definieren.
\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}
Antwort2
Sie können den Befehl robust machen:
\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}