我想知道是否可以更改 LaTeX 排版上标和下标的方式(单独排版,即不能同时排版),以适应默认字距不适合我的元素。在序言中设置并忘记。
\documentclass{minimal}
\usepackage{amssymb}
\newcommand\F{\mathbb{F}}
\newcommand\f[2]{\F_{\mkern-1mu{#1}}^{\mkern1mu{#2}}}
\begin{document}
I want to type $\F_q^d$ and achieve $\f{q}{d}$
\end{document}
\f
我知道我可以简单地创建一个像示例中那样的短宏,并为缺失部分提供空参数,但我发现该解决方案令人不满意:\f{}{}
当字母是裸露的时候会不必要地混乱,并且诸如和之类的东西\f{q}{}
令人\f{q}{d}
困惑并且不能立即清楚哪个脚本是由哪个参数填充的。
如果相关的话,我正在使用 pdflatex。
答案1
下标和上标的定位是通过字符宽度(CHARWD)和斜体校正(CHARIC)来完成的,如果核心是一个字符的话。假设排版的是核心之前的排版点。那么下标就放在CHARWD的位置,上标就放在CHARWD+CHARIC的位置。
在 TeX 中这不是一个很好的概念,因为这个度量信息用于其他目的:在普通文本中排版下一个字符时使用 CHARWD,而\/
使用原始字符时使用 CHARIC。
如果您知道该符号不会在没有下标/上标的普通文本中使用,则可以更改提到的度量信息。但这种情况非常罕见,因此以下提示仅作为学术实验。
tftopl msbm10 > msbm10.pl
在您的工作目录中执行。然后编辑msbm10.pl
部分 (CHARACTER O 106 ... 这是您示例中提到的黑板 F。将 CHARWD 减少 1mu,即减少 .05555,并将 CHARIC 添加为 2mu,即 .111111。结果如下所示:
(CHARACTER O 106
(CHARWD R 0.555557)
(CHARHT R 0.688889)
(CHARIC R 0.111111)
)
然后运行pltotf msbm10.pl
。如果您在这里工作,此过程会msbm10.tfm
在您的工作目录中创建具有优先级的度量。您可以在此目录中尝试您的示例。您将看到 F 子/上标的定位符合您的要求,无需在宏级别进行校正。
但我不推荐这样做,原因上面已经说了。
你可以\F
更精确地定义宏。相反
\newcommand\F{\mathbb{F}}
例如,您可以执行以下操作:
\def\F{\mathbb{F}\sbcorr{-2mu}{1mu}}
\def\sbcorr#1#2{\def\tmpa{#1}\def\tmpb{#2}\futurelet\next\sbcorrA}
\def\sbcorrA{\ifx\next_\expandafter\sbcorrB\fi}
\def\sbcorrB_#1{_{\mkern\tmpa#1}\futurelet\next\sbcorrC}
\def\sbcorrC{\ifx\next^\expandafter\sbcorrD\fi}
\def\sbcorrD^#1{^{\mkern\tmpb#1}}
Test: $\F(x), \F_a^b, \F$.