将 * 变成细空格,以获得更清晰的数学间距

将 * 变成细空格,以获得更清晰的数学间距

在公式中,变量之间的间距通常隐式对应于乘法运算符。我发现 LaTeX 的默认间距不太易读:符号彼此太近,我希望它们之间自动留出更多空间(即无需手动插入)。诚然,这是一个品味问题,但在我看来也与易读性有关。正如 MWE 所说:

$a x + b$ vs $a \hspace{0.07em} x + b$ and $y dx$ vs $y \hspace{0.07em} dx$   

ax+b 和 y dx 具有标准间距和额外间距

全局更改数学间距可能 (i) 有点复杂,并且 (ii) 会弄乱精细调整的 LaTeX 编译。但是特克斯麦克斯建议通过决定将符号*排版为(细)空格来实现这一点。这样,人们就可以保留源中的含义(乘法),这仍然是可读的(x * yx \, y),同时获得视觉上令人愉悦的输出。
我不熟悉catcode,但它可以用来*用预定的空间替换所有内容吗?(无论如何,我可以不用符号*。)我知道以前的邮政关于这个话题,但答案未能说服我,我想继续。

答案1

\begingroup\lccode`\~=`\*\lowercase{\endgroup\def~}{\,}
\AtBeginDocument{\mathcode`\*="8000 }

但是,关于差异,我会使用宏

\newcommand*\dif{\mathop{}\!d}

所以你会写

$a x + b$ vs $a * x + b$ and $y dx$ vs $y \dif x$

答案2

你可能对我的回答感兴趣符号自动间距. 再说一遍:

\mathcode`\*="8000
{\catcode`\*=\active
\gdef*{\mathclose{}\,\mathopen{}}}

比较

$a*b$ 
$a b$ 
$a\,b$
$a*\cos b$
$a \cos b$
$a\,\cos b$

如果在 前面,则避免\mathopen{}插入两个细空格。*\mathop

在此处输入图片描述

相关内容