为什么命令的可选参数会影响 \mathcolor 的间距

为什么命令的可选参数会影响 \mathcolor 的间距

我很惊讶,只需在命令定义中添加一个可选参数,结合 即可改变公式中的间距\mathcolor。为什么会发生这种情况?如何修复?

梅威瑟:

\documentclass{article}
\usepackage{xcolor}

%MINIMAL EXAMPLE:
\newcommand{\optionalSub}[2][a]{_{#2}}

\newcommand{\noOptionalSub}[1]{_{#1}}

%other example:
\newcommand{\coloredSubscript}[2][red]{_{\mathcolor{#1}{#2}}}

\begin{document}

%MINIMAL EXAMPLE:
$a^b\optionalSub{c}$ %correct spacing
$\mathcolor{blue}{a^b}\optionalSub{c}$ % very wrong spacing
$\mathcolor{blue}{a^b}\noOptionalSub{c}$ %correct spacing

%other example:
$a^b\coloredSubscript{c}$ %correct spacing
$\mathcolor{blue}{a^b}\coloredSubscript{c}$ %very wrong spacing

\end{document}

在此处输入图片描述

总结一下:\mathcolor单独使用不会影响间距(我非常欣赏这一点),添加可选参数通常也不会改变间距(我非常欣赏这一点)。但是以某种方式将它们直接放在一起使用会改变间距?为什么?

答案1

您可以使用\NewExpandableDocumentCommand不会受到遗留系统中可选参数检查问题影响的产品\newcommand

\documentclass{article}
\usepackage{xcolor}

%MINIMAL EXAMPLE:
\NewExpandableDocumentCommand{\optionalSub}{O{a}m}{_{#2}}

\NewExpandableDocumentCommand{\noOptionalSub}{m}{_{#1}}

%other example:
\NewExpandableDocumentCommand{\coloredSubscript}{O{red}m}{_{\mathcolor{#1}{#2}}}

\begin{document}

%MINIMAL EXAMPLE:
$a^b\optionalSub{c}$ %correct spacing
$\mathcolor{blue}{a^b}\optionalSub{c}$ % very wrong spacing
$\mathcolor{blue}{a^b}\noOptionalSub{c}$ %correct spacing

%other example:
$a^b\coloredSubscript{c}$ %correct spacing
$\mathcolor{blue}{a^b}\coloredSubscript{c}$ %very wrong spacing

\end{document}

在此处输入图片描述

答案2

OpTeX 中也存在类似的问题,但与不可扩展宏给出的下一个参数无关。只需

$ {\Blue a^b}_c $ 

在后面给出 c a^b(即带有空格,位置错误),因为{...}不仅被解释为开始/结束组,而且还被解释为数学列表中的新原子。我们必须用 , 替换和{。这些TeX 基元仅打开/关闭组,但它们不会构造数学原子。解决方案是:}\begingroup\endgroup

\def\mathcolor#1{\begingroup#1\endgroup}

$\mathcolor{\Blue a^b}_c$

请注意,我们不需要做任何其他事情(不需要_像在 LaTeX 中那样检查以下内容),因为 OpTeX 使用 LuaTeX 属性设置颜色。

相关内容