\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
,该错误已得到修复。
原始答案
这是一个严重的错误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}