加相等分开

加相等分开

我有以下内联代码:

$\texttt{TEST}(v *= 2, v += 2, v = 4)$

但在渲染时,加号离等号很远。如何克服这个问题并让 LaTeX 将 += 视为单个运算符?

渲染

答案1

+是二元运算符,=是二元关系。当 TeX 找到序列

v + = 2

它将其转化为

奥德 垃圾桶 相对 奥德

垃圾桶不允许在相对,因此它变成了奥德

解决方案:

\documentclass{article}

\newcommand{\pluseq}{\mathrel{+}=}
\newcommand{\asteq}{\mathrel{*}=}

\begin{document}

$\texttt{TEST}(v \asteq 2, v \pluseq 2, v = 4)$

\end{document}

或者,手动

\documentclass{article}

\begin{document}

$\texttt{TEST}(v \mathrel{*}= 2, v \mathrel{+}= 2, v = 4)$

\end{document}

这些利用了 TeX 不会在两个连续的相对符號。

在此处输入图片描述

您还可以定义一个切换行为的宏,以便您可以更自然地输入公式:

\documentclass{article}

\newcommand{\switch}{%
  \mathcode`+=\numexpr\mathcode`+ + "1000\relax % turn + into a relation
  \mathcode`*=\numexpr\mathcode`* + "1000\relax
}

\begin{document}

$\switch\texttt{TEST}(v *= 2, v += 2, v = 4)$

$a+=b \quad \begingroup\switch a+=b\endgroup \quad a+=b$
\end{document}

我添加了一行无意义的语句来表明\switch尊重分组。范围\switch以其发布的公式(或组)结束。

在此处输入图片描述

答案2

在此处输入图片描述

$\texttt{TEST}(v \mathrel{{*}{=}} 2, v \mathrel{{+}{=}} 2, v = 4)$

相关内容