如何使用宏来减少 \cdot 左右之间的间隙?

如何使用宏来减少 \cdot 左右之间的间隙?

例子

\documentclass[a4paper,11pt,border=1pt]{standalone}
%\LetLtxMacro{\oldcdot}{\cdot}
%\renewcommand{\cdot}{\!\cdot\!} <-- Like this
\begin{document}
$3\cdot 10^8$ m/s
\end{document}

我得到了以下输出。

在此处输入图片描述

但是\cdot左右之间有很多空格。我如何得到下面的图像?我应该使用宏吗?

在此处输入图片描述

相关:https://tex.stackexchange.com/a/29838/33075

答案1

\cdot定义为fontmath.ltx

\DeclareMathSymbol{\cdot}{\mathbin}{symbols}{"01}

这意味着它是一个bin元运算符 ( \mathbin),因此它前后会有一个额外的空格,就像其他二元运算符一样,例如+-

\cdot如果你“隐藏”在括号内,TeX 将不会插入该空格:

\documentclass[11pt,border=1pt]{standalone}
\begin{document}
$3{\cdot} 10^8$ m/s
\end{document}

如果要多次使用该符号,您可以定义一个ord一元数学符号 ( \mathord),其字形如下\cdot

\documentclass[11pt,border=1pt]{standalone}
\DeclareMathSymbol{\mdot}{\mathord}{symbols}{"01}
\begin{document}
$3\mdot 10^8$ m/s
\end{document}

或者您可以\cdot使用相同的命令重新定义。

答案2

为此siunitx,我建议确保数字和单位的统一。

\documentclass{article}
\usepackage{amsmath}
\usepackage{siunitx}

\sisetup{
  exponent-product={{\cdot}}, % double brace for avoiding the space
  per-mode=symbol,
}

\begin{document}

\SI{3e8}{\meter\per\second} % long form

\SI{3e8}{m/s} % abbreviated form

\SI[per-mode=reciprocal]{3e8}{\meter\per\second} % long form

\end{document}

请注意,当使用长格式时(推荐),很容易从一种表示形式更改为另一种表示形式。

这样做的好处还在于,如果您改变了主意,关于如何呈现该产品,那么您只需要改变序言中的选项即可。

在此处输入图片描述

使用选项可以获得相同的效果tight-spacing,但它也会作用于所有二进制运算,例如不确定性。

\documentclass{article}
\usepackage{amsmath}
\usepackage{siunitx}

\sisetup{
  exponent-product=\cdot,
  tight-spacing,
  per-mode=symbol,
}

\begin{document}

\SI{3e8}{\meter\per\second} % long form

\SI{3e8}{m/s} % abbreviated form

\SI[per-mode=reciprocal]{3e8}{\meter\per\second} % long form

\end{document}

相关内容