通过我对本网站的研究,我发现排版多字母变量的最佳方式是使用\mathit
。但是,如果变量具有混合格式(即粗体、斜体和罗马体)或上标/下标,则间距方面的结果并不令人满意。
就我的情况而言,我试图将扰动(表示为$\delta$
)表示为变量$f_0$
和$\bm{f}_1$
。简单地添加增量会产生太多空间,而将整个组放入\mathit
会影响下标间距和粗体字体。我已将我的最佳尝试作为 MWE 附在下面。
如果有一个命令\mathgroup
或者某个东西可以表示多字母变量而不影响格式的话,那将会很有帮助。
\documentclass[preview]{standalone}
\usepackage{amsmath}
\usepackage{bm}
\begin{document}
% Case 1
$ \mathit{\delta f_\mathrm{0}}$ has less subscript spacing between $f$ and 0 than \\
$\delta f_0$ and even less than than \\
$ \mathit{\delta f}_0$
% Case 2: The only way I've found to achieve something close to what I want except for spacing
$\mathit{\delta \bm{{f_{\mbox{\unboldmath$\scriptstyle 1$}}}}} $ appears identical to \\
$ \delta \bm{f}_1$ the following are not solutions either\\
$ \mathit{\delta \bm{{f}}_\mathrm{1}}$ \\
$ \mathit{\delta \bm{{f}}}_1$
\end{document}
答案1
您似乎想要将字距\delta
与下一个字母对齐,将“f”向后推得比其他字母更远。
实际上我不会这么做,但这是一个概念证明。
\documentclass{article}
\usepackage{amsmath,bm}
\makeatletter
\DeclareRobustCommand{\prt}{\mathop{}\!\delta\check@f}
\newcommand{\check@f}{%
\@ifnextchar f{\mspace{-3mu}}{\check@bmf}%
}
\newcommand{\check@bmf}{%
\@ifnextchar\bm{\check@bmf@i}{\mspace{-1.5mu}}%
}
\newcommand{\check@bmf@i}[2]{% #1 is \bm, #2 is the letter
\if f\unexpanded{#2}%
\mspace{-3mu}%
\else
\mspace{-1.5mu}%
\fi
\bm{#2}%
}
\makeatother
\begin{document}
$\prt g \prt f \prt\bm{f} \prt\bm{g}$
\end{document}
答案2
\documentclass{article}
\usepackage{amsmath}
\usepackage{bm}
\begin{document}
$ \delta f_0$ $ \delta \bm{f}_1$
$ \delta\!f_0$ $ \delta\!\bm{f}_1$
$ \delta \mkern-2mu f_0$ $ \delta \mkern-2mu \bm{f}_1$
\end{document}
\mathit
这里不合适,因为没有相邻的(拉丁)字母需要排版为一个单词。我可能会使用第一行,但如果你想要更紧密的间距,你可以添加一个负的字距,我发现标准\!
(默认为 -3mu)太多了,但也许 -2mu 是一个改进。