我很好奇如何自動在寫在一起的符號周圍獲得一點間距。
讓我們假設我們有代表一些抽象物件的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$
(請注意,使用\,
而不是*
在最後一個表達式中插入不需要的空格。)