数学模式中的间距错误

数学模式中的间距错误

考虑以下示例。(该代码不是我自己的。)

代码

\documentclass{article}

\usepackage{mathtools}
\usepackage{siunitx}

% Subscript text directly in math mode.
\makeatletter
 \begingroup
  \catcode`\_=\active
  \protected\gdef_{\@ifnextchar|\subtextup\sb}
 \endgroup
\def\subtextup|#1|{\sb{\textup{#1}}}
\AtBeginDocument{\catcode`\_=12 \mathcode`\_=32768 }
\makeatother
\ExplSyntaxOff

\DeclareMathOperator{\price}{price}

\DeclareSIUnit\kroner{kr.}

\begin{document}

\begin{align*}
  \MoveEqLeft \price_|total| - \price_|Water park, total|\\
  &= 7 \cdot \price_|hotel, total| + 14 \cdot \price_|adult|(\text{food}) + 14 \cdot \price_|child|(\text{food})\\
  &\hphantom{{}=} - \price_|Water park, total|\\
  &= \SI{2069.00}{\kroner} - \price_|Water park, total|.
\end{align*}

\end{document}

输出

输出

问题

+(a)第二行中,第一行和之间缺少一个空格14。我该如何修复?

(b)最后一行中下标total和之间是否有太多空格.?如果有,我该如何修复?

更新

还有一个问题:代码中32768和之间是否有空格会有区别吗?}

在举几个例子时,我自己还没有能够发现任何差异。

答案1

这只是你从任何

操作二进制顺序

序列。运算符后面的二元运算符号被视为普通符号。 也会发生同样的情况\sin-x

没有理由用 来定义\price\DeclareMathOperator因为它是一个变量。

\newcommand{\price}{\mathrm{price}}

将给出正确的形状并且没有间距问题。

在此处输入图片描述

相关内容