我有以下内联代码:
$\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)$