\color{} 前后的间距

\color{} 前后的间距

我想定义一个命令\makered,使物体变成红色。考虑三个候选命令:

1\newcommand{\makered}[1]{{\color{red}#1}}

2\newcommand{\makered}[1]{\colorlet{savedcol}{.}\color{red}#1\color{savedcol}}

3\newcommand{\makered}[1]{\colorlet{savedcol}{.}\color{red}#1 \color{savedcol}}

两者都有各自的缺点。例如,1当我们运行

\begin{gather*}
\text{A \makered{is} B}\\
A\makered{=}B\\
A=B
\end{gather*}

我们将得到

在此处输入图片描述

这表明 周围的间距错误mathrel

但有了2,我们就会得到

在此处输入图片描述

显示了 之后的错误间距text

3解决了所有这些问题,但如果我们运行

\begin{gather*}
\underbrace{\text{A}}\\
\underbrace{\text{\makered{A}}}
\end{gather*}

我们将得到

在此处输入图片描述

有没有其他解决方案或修复此问题的方法?


平均能量损失

\documentclass[10pt]{article}
\usepackage{amsmath}
\usepackage{xcolor}

\newcommand{\makered}[1]{\colorlet{cb@saved}{.}\color{red}#1 \color{cb@saved}}
\newcommand{\makered}[1]{{\color{red} #1}}
\begin{document}
\begin{gather*}
\text{A \makered{is} B}\\
A\makered{=}B\\
A=B\\
\underbrace{\text{A}}\\
\underbrace{\text{\makered{A}}}
\end{gather*}
\end{document}

答案1

您确定要使用 吗color?此宏是一个切换宏,可能不是此处的最佳选项。

\textcolor{red}{some text}只需在文本模式和数学模式下使用即可\mathcolor{red}{some math}。后者将正确处理间距。

答案2

您的第二次尝试几乎正确。但 LaTeX在其末尾\color{...}运行\ignorespaces原始。您必须停用它,例如通过\relax

\newcommand{\makered}[1]{\colorlet{savedcol}{.}\color{red}#1\color{savedcol}\relax}

另一种方法。使用第一次尝试中的想法,但不要使用\bgroup\group对(即{...}),因为它会在数学排版中创建 Ord 原子。使用\begingroup\endgroup。它也分配组,但不会创建 Ord 原子:

\def\makered#1{\begingroup\color{red}#1\endgroup}

相关内容