考虑以下示例。(该代码不是我自己的。)
代码
\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}}
将给出正确的形状并且没有间距问题。