符号自动间距

符号自动间距

我很好奇如何自动在一起书写的符号周围获得一些间距。

假设我们有符号AB,它们代表一些抽象对象。我们定义命令\A和,\B它们插入符号。

\newcommand\A{\mathrm{A}}
\newcommand\B{\mathrm{B}}

现在我希望这些符号与其他符号一起书写时,它们之间能留出一点空格。不幸的是,根据上述定义,必须明确添加这些空格。

Desired output

如何自动获得额外的空格?特别重要的是,不要只添加静态的空格量,以防止等号和符号之间以及重复符号之间出现多余的空格。


产生上述输出的 MWE:

\documentclass[preview,border=10pt,fleqn]{standalone}

\usepackage{amsmath}
\setlength\mathindent{0pt}

\newcommand\A{\mathrm{A}}
\newcommand\B{\mathrm{B}}

\begin{document}

Symbols with no spacing \eqref{nospaces},
explicit \texttt{\textbackslash,} spaces \eqref{spaces}.
\begin{align}
\label{nospaces}
y &= \A x &
y &= x' \A x &
\B &= \A \A &
\B &= \A' \A
\\
\label{spaces}
y &= \A \, x &
y &= x' \, \A \, x &
\B &= \A \, \A &
\B &= \A' \, \A
\end{align}

\end{document}

答案1

肯定不是一个答案,但比较以下两个结果。

\documentclass[preview,border=10pt,fleqn]{standalone}
\usepackage{mathtools}
\begin{document}
\begin{align*}
     y &= Ax &\chi^2 &= x^TAx &C&= AB &D &= A^T B\\
     y &= A\,x &\chi^2 &= x^T \, A \, x &C &= A   \, B &D &= A^T \, B\\
     y &= A   x &\chi^2 &= x^T A x &C &= AB &D &= A^T B
\end{align*}
\end{document}

enter image description here enter image description here

我重复了三次,看起来相似。我认为任何东西都不需要加粗才能传达信息。大写字母矩阵,小写字母向量。转置不是标准的,有些人使用素数,但小写字母 t 总是看起来像一个印刷错误的素数,尤其是当矩阵加粗时,因为它没有足够的权重。

答案2

如果还有其他人正在寻找解决方案,我将分享我经过反复试验后得出的结论。

在这个答案中,该组合\mathrm{}\!用于在差分之前添加一点间距d。所以我定义了下面两个命令,分别在符号的左右两侧添加空格:

\newcommand\lxspace{\mathop{}\!}
\newcommand\rxspace{\!\mathop{}\nolimits}

然后我手动将空格添加到我的符号中:

\newcommand\A{\lxspace\mathrm{A}\rxspace}
\newcommand\B{\lxspace\mathrm{B}\rxspace}

这似乎产生了预期的效果:

Seems to work

答案3

我喜欢 Mathematica 用空格表示乘积的方式(太可怕了!)。为了在 TeX 中实现这一点,我重新定义了*(见下文),以便在数学模式下插入一个细空格。这不是自动的,但它似乎可以很好地与普通原子、括号和运算符配合使用。如果需要,可以轻松关闭它。

*对于数学模式中的其他用途,可以使用。数学模式之外\ast的行为保持不变。*

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

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

(请注意,使用\,Instead of*会在最后一个表达式中插入不需要的空格。)

相关内容