倾斜(斜体)数学符​​号定位错误

倾斜(斜体)数学符​​号定位错误

数学重音通常取自文本字体(仅\vec取自数学斜体字体)。我希望在数学模式下斜体字母上也有一个斜体重音。为了快速呈现问题,我将文本斜体字体加载到fam0

梅威瑟:

Good: $ \ddot f $,
%
\textfont0=\tenit% to get italic accents
%
bad: $ \ddot f $

\bye

这导致斜体重音符号定位错误。发生了什么?

我不明白。

编辑:skewchar 应该可以解决重音间距的所有问题,不是吗? 在此处输入图片描述

答案1

我不确定这样做的原因是什么:数学重音符号本身就是符号,与重音符号无关。无论如何,您的方法是有缺陷的:请参阅规则上方的第 2 行和第 3 行。以及我建议的修复方法。

% your attempt
\textfont0=\tenit

1. $\ddot{f}\ddot{\mathop f}f$

2. $\ddot{x}\ddot{\mathop x}x$

3. $\sin x$

\bigskip
\hrule
\bigskip

% revert
\textfont0=\tenrm
\newfam\italicaccents
\textfont\italicaccents=\tenit
\skewchar\textfont1=-1

\def\gobble#1{}
\def\newaccent#1{%
  \edef\temp{\expandafter\gobble#1}%
  \edef#1{\mathaccent\the\numexpr\temp+256*\the\italicaccents\relax\space}%
}
\newaccent\ddot

1. $f\ddot{f}f$

2. $x\ddot{x}x$

3. $\sin x$

\bye

在此处输入图片描述

答案2

字体中的双点重音符号\tenit本身向右倾斜,并且此效果被添加到\skewchar校正\teni f相加,导致其总体向右移动得太远。

在阅读 TeXbook 附录 G 中的规则 12 后,我发现可以\skewchar通过将单个字符替换f为 a \mathpunct f(而不是\mathop,因为这可能会使字符垂直居中)来避免更正。或者,您可以设置\skewchar\teni=-1避免更正。或者,您可以设置。斜体重音比直重音稍微靠左一些。

如果您不喜欢,您可以使用非数学口音。

\textfont0=\tenit
$\ddot f - \ddot{\mathpunct f} - \hbox{\tenit\"{\teni f}}$
\bye

倾斜疯狂

相关内容