答案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