
\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
2016年11月18日發布的3.96版本,該錯誤已修復。
原答案
這是一個嚴重的錯誤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}