我有一些自定义命令来确保所有向量、矩阵等样式在我的文档中保持一致。下面是其中一个:
\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}