“语义化”调整上标和下标的字距

“语义化”调整上标和下标的字距

我想知道是否可以更改 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}

带有上标和下标的 mathbb 字母 F 的默认和首选字距

\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$.

相关内容