後続の文字に応じて自動的に和欧文間空白か欧文間空白を挿入する方法
% uplatex + dvipdfmx
\documentclass[dvipdfmx,uplatex]{jsarticle}
\usepackage{tcolorbox}
\tcbuselibrary{theorems}
\newcommand*{\fermatlast}{%<br /> 3以上の自然数$n$について$x^n + y^n = z^n$となる自然数$(x, y, z)$の組は存在しない.<br />}
\newtcbtheorem{theorem}{定理}{}{theo}
\begin{document}
\begin{theorem}{フェルマーの最終定理}{}
\fermatlast
\end{theorem}
\begingroup
\xkanjiskip=1zw
\begin{theorem}{フェルマーの最終定理}{}
\fermatlast
\end{theorem}
\endgroup
\end{document}
上のソースにおける定理2では「理」と「2」および「:」と「フ」の間が欧文間空白になっています。
次のような theorem1 環境にすれば,これらの空白は適切に和欧文間空白になりますが,その代わりに今度は定理名が欧文文字から始まるときにもコロンと当該欧文文字の間に和欧文間空白が挿入されてしまいます。
\makeatletter
\newtcbtheorem{theorem1}{定理\@gobble}{separator sign={:\hspace{\xkanjiskip}\@gobble}}{theo1}
\makeatother
\begingroup
\xkanjiskip=1zw
\begin{theorem1}{フェルマーの最終定理}{}
\fermatlast
\end{theorem1}
\begin{theorem1}{Fermatの最終定理}{}
\fermatlast
\end{theorem1}
\endgroup
定理番号は欧文文字であることが(デフォルトから変更しなければ)保証されているので,“定理\@gobble” はつねに意図通りに挙動してくれますが,定理名は「Fermatの最終定理」のように欧文文字が含まれることは十分に考えられます。定理の名称の一文字目が和文文字か欧文文字かに応じてコロンとの間に和欧文間空白か欧文間空白のいずれかを適切に挿入できるようにしたいのですが,欧文間空白を挿入するには \(x)kanjiskip とは異なりソース中に明示的に書く必要があるためか両者を適切に挿入することができません。
定理名が和文文字で始まるか欧文文字で始まるかに応じて挿入する空白量を切り替える方法がもしあれば,ご教授いただけますと幸いです。