2022 年 6 月 Latex 更新后,使用 \MakeUpperCase 和数学符号会引发“不正确的字母常量”错误

2022 年 6 月 Latex 更新后,使用 \MakeUpperCase 和数学符号会引发“不正确的字母常量”错误

我有一些自定义命令来确保所有向量、矩阵等样式在我的文档中保持一致。下面是其中一个:

\newcommand*{\mat}[1]{{\MakeUppercase{\symbfup{#1}}}}

这曾经工作正常,但在更新 Latex 之后,我开始收到大量“不正确的字母常量”错误,并将其追溯到我尝试将数学符号大写的情况。

以下是 MWE:

%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass{article}
\usepackage{unicode-math}

\newcommand*{\mat}[1]{{\MakeUppercase{\symbfup{#1}}}}

\begin{document}
\def\sample{0123ABCDabcd\Delta\Gamma\Omega\alpha\beta\gamma}
% all work fine
\[ \sample \]
\[ \symbf{\sample} \]
\[ \mathbfup{\sample} \]
\[ \mathbfit{\sample} \]

% fails
\[ \mat{\beta} \]
\[ \mat{\sample} \]

\end{document}

是否有已知的解决方法?

提前致谢!

答案1

我需要调整代码以允许文本中的隐式字符更改。目前,请尝试

%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass{article}
\usepackage{unicode-math}
\newcommand*{\mat}[1]{{\MakeUppercase{\symbfup{#1}}}}
\ExplSyntaxOn
\cs_gset_eq:NN \__text_change_case_cs_check_aux:nnN \__text_change_case_cs_check:nnN
\cs_gset:Npn \__text_change_case_cs_check:nnN #1#2#3
  {
    \exp_args:Ne \__text_change_case_cs_check_aux:nnn
      { \__text_token_to_explicit:N #3 } {#1} {#2}
  }
\cs_new:Npn \__text_change_case_cs_check_aux:nnn #1#2#3
  { \__text_change_case_cs_check_aux:nnN {#2} {#3} #1 }
\ExplSyntaxOff
\begin{document}

\def\sample{0123ABCDabcd\Delta\Gamma\Omega\alpha\beta\gamma}
% all work fine
\[ \sample \]
\[ \symbf{\sample} \]
\[ \mathbfup{\sample} \]
\[ \mathbfit{\sample} \]

% fails
\[ \mat{\beta} \]
\[ \mat{\sample} \]

\end{document}

相关内容