我喜欢 mathdesign 包,但有些字母之间的间距看起来很糟糕,例如,看看这个字母A:
我在这里找到了解决方案:在数学模式下通过宏激活字符. 因此,使用此代码
\makeatletter
\newcommand{\DeclareMathActive}[2]{%
% #1 is the character, #2 is the definition
\expandafter\edef\csname keep@#1@code\endcsname{\mathchar\the\mathcode`#1 }
\begingroup\lccode`~=`#1\relax
\lowercase{\endgroup\def~}{#2}%
\AtBeginDocument{\mathcode`#1="8000}%
}
\newcommand{\std}[1]{\csname keep@#1@code\endcsname}
\makeatother
\DeclareMathActive{A}{\mkern+1.5mu\std{A}\mkern+1.5mu}
间距变得更好:
但对于这段代码我仍有一些疑问:
有没有办法保留这封信原来的上标/下标间距?如果上标比下标稍微靠左一点,那就合乎逻辑了。
由于我不确定上一个问题的答案,所以我决定自己找到如何定义这个间距的方法,答案如下:“语义化”调整上标和下标的字距。但有时我需要将此字符本身用作下标/上标,并且我希望能够这样写:
X_A
。现在我可以在定义中添加一对括号:\DeclareMathActive{A}{{\mkern+1.5mu\std{A}\mkern+1.5mu}}
。但futurelet
之后就不起作用了。使字符在数学模式下活跃还有其他缺点吗?
- 是否存在其他方法可以在数学模式下调整字符间距?