在下面的代码中,如果我应用颜色和不应用颜色,字距调整会有所不同。我明白为什么会发生这种情况,但我该如何更改命令的定义,\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}