在数学模式下,着色后获得与未着色时相同的字距调整

在数学模式下,着色后获得与未着色时相同的字距调整

在下面的代码中,如果我应用颜色和不应用颜色,字距调整会有所不同。我明白为什么会发生这种情况,但我该如何更改命令的定义,\C以便字距调整与颜色为黑色时相同?我寻求一个通用解决方案;我知道我可以手动修复所有字距调整。

这里使用的字体之间的差异并不明显,但使用 mtpro2 等字体时,差异可能会变得非常难看。顺便说一句,两个框的宽度分别为 12.496pt 和 12.13722pt;使用 mtpro2 时,数字分别为 13.9092 和 13.30093。

在此处输入图片描述

\documentclass{article}

\usepackage{amsmath}
\usepackage{xcolor}
\newcommand{\C}[1]{{\color{blue}#1}}
\newsavebox{\Cbox}
\newsavebox{\Obox}

\begin{document}


\begin{equation}
 \C y_{jt}^* \qquad \text{is kerned differently than} \qquad y_{jt}^*
\end{equation}

\savebox{\Cbox}{$\C y_{jt}^*$}
\showthe\wd\Cbox
\savebox{\Obox}{$y_{jt}^*$}
\showthe\wd\Obox

\end{document}

答案1

在此处输入图片描述

其中我们了解到 tex 在下标之前输出上标:-)

问题是y破坏字距后颜色会恢复,因此只要小心一点,您就可以在其他地方重置颜色……

\documentclass{article}

\usepackage{amsmath}
\usepackage{xcolor}
\makeatletter
\def\unrestoredcolor{\aftergroup\@gobble\color}
\let\restorecolor\reset@color
\makeatletter

\newcommand{\C}[1]{\begingroup\unrestoredcolor{blue}#1\endgroup}
\newsavebox{\Cbox}
\newsavebox{\Obox}

\begin{document}

color
\begin{equation}
 \C y_{jt}^{\restorecolor*}\qquad \text{is kerned differently than} \qquad y_{jt}^*
\end{equation}


\savebox{\Cbox}{$\C y_{jt}^{\restorecolor*}$}
\showthe\wd\Cbox
\savebox{\Obox}{$y_{jt}^*$}
\showthe\wd\Obox



\end{document}

答案2

这是一个已知问题(参见https://tex.stackexchange.com/a/183496/29873)可以使用 LuaTeX 来修复luacolor

\documentclass{article}

\usepackage{amsmath}
\usepackage{xcolor}
\usepackage{luacolor}

\newcommand{\C}[1]{{\color{blue}#1}}
\newsavebox{\Cbox}
\newsavebox{\Obox}

\begin{document}


\begin{equation}
 \C y_{jt}^* \qquad \text{is kerned differently than} \qquad y_{jt}^*
\end{equation}

\savebox{\Cbox}{$\C y_{jt}^*$}
\showthe\wd\Cbox
\savebox{\Obox}{$y_{jt}^*$}
\showthe\wd\Obox

\end{document}

相关内容