
\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}
次の 4 つのエラー メッセージがあります。
! 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
アップデート
2016/11/18 リリースのバージョン 3.96では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}