在宏中放置二元运算符时间距不正确

在宏中放置二元运算符时间距不正确

我有以下形式的宏

\newcommand{\typo}[1]{{\color{red}#1}}% for pointing out that there is a typo

但是,当我在数学模式下使用此命令时,它会使用二元运算符($A\otimes B$$A\typo{\otimes}B$)创建不正确的间距。

我怀疑这是\otimes{...}(见确保二元运算符的宏间距),但{...}对于保持颜色的完整性是必要的。我可以通过$A\typo{\otimes}B$用 替换 来解决这个问题$A\mathbin{\typo{\otimes}}B$

但有办法解决吗宏的定义\typo,这样$A\typo{\otimes}B$会产生与 相同的间距吗$A\otimes B$

以下是 MWE:

\documentclass{article} 
\usepackage{xcolor}
\newcommand{\typo}[1]{{\color{red}#1}}% for pointing out that there is a typo

\begin{document} 

Compare $A\otimes B$ with $A\typo{\otimes}B$ with $A\mathbin{\typo{\otimes}}B$.

The first and third have correct spacing; the middle does not.

\end{document}

答案1

在此处输入图片描述

\begingroup不会以相同的方式影响间距。

\documentclass{article} 
\usepackage{xcolor}
\newcommand{\typo}[1]{\begingroup\color{red}#1\endgroup}% for pointing out that there is a typo

\begin{document} 

Compare $A\otimes B$ with $A\typo{\otimes}B$ with $A\mathbin{\typo{\otimes}}B$.

The first and third have correct spacing; the middle does not.

\end{document}

如果您使用(x)color已经可用的下一个版本,如果您使用pdflatex-dev而不是pdflatex在 texlive 中,您可以使用\mathcolor基于这个想法的定义(但以更好的方式处理上标)

\documentclass{article} 
\usepackage{color}
\usepackage{xcolor}
\newcommand{\typo}[1]{\mathcolor{red}{#1}}% for pointing out that there is a typo

\begin{document} 

Compare $A\otimes B$ with $A\typo{\otimes}B$ with $A\mathbin{\typo{\otimes}}B$.

The first and third have correct spacing; the middle does not.

\end{document}

相关内容