符號自動間距

符號自動間距

我很好奇如何自動在寫在一起的符號周圍獲得一點間距。

讓我們假設我們有代表一些抽象物件的A符號。B我們定義命令\A\B插入符號。

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

現在,當與其他符號一起書寫時,我希望這些符號之間有一些空格。不幸的是,根據上述定義,有必要明確添加這些空格。

所需輸出

如何自動取得額外間距?特別重要的是,不僅僅是添加靜態的空格量,以防止等號和符號之間以及重複符號之間出現額外的空格。


產生上述輸出的 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}

在此輸入影像描述 在此輸入影像描述

我重複了三次,看起來很像。我認為任何事情都不需要大膽才能傳達訊息。大寫字母矩陣,小寫字母向量。轉置不是標準的,有些使用素數,但小寫的 t 總是看起來像印刷錯誤的素數,特別是當矩陣是粗體時,因為它沒有足夠的權重。

答案2

如果有人在尋找解決方案,我將分享我經過反覆試驗後得出的結論。

在這個答案中,該組合\mathrm{}\!用於在微分之前添加一點間距d。所以我定義了以下兩個命令來在符號的左側和右側添加空格:

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

然後我手動將空格新增到我的符號中:

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

這似乎產生了預期的效果:

似乎有效

答案3

我喜歡 Mathematica 用空格表示乘積的方式(horresco 引用!)。為了在 TeX 中做到這一點,我重新定義了*(見下文),以便它在數學模式下插入一個薄空格。這不是自動的,但它似乎適用於普通原子、括號和運算子。如果需要,可以輕鬆關閉。

*對於數學模式中的其他用途,\ast可以改為使用。*數學模式之外的行為保持不變。

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

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

(請注意,使用\,而不是*在最後一個表達式中插入不需要的空格。)

相關內容