降低 \widetilde 重音符号的代码说明

降低 \widetilde 重音符号的代码说明

这个答案提供以下降低重音的代码\widetilde

\makeatletter
\newcommand*\wt[1]{\mathpalette\wthelper{#1}}
\newcommand*\wthelper[2]{%
        \hbox{\dimen@\accentfontxheight#1%
                \accentfontxheight#11.3\dimen@
                $\m@th#1\widetilde{#2}$%
                \accentfontxheight#1\dimen@
        }%
}

\newcommand*\accentfontxheight[1]{%
        \fontdimen5\ifx#1\displaystyle
                \textfont
        \else\ifx#1\textstyle
                \textfont
        \else\ifx#1\scriptstyle
                \scriptfont
        \else
                \scriptscriptfont
        \fi\fi\fi3
}
\makeatother

有人能解释一下这段代码是如何工作的吗?特别是,我想知道:

  1. 答案是,代码将重音的“x 高度”缩放 1.3。重音的 x 高度到底是什么?我熟悉字体 x 高度的概念,但我不明白为什么缩放 x 高度会降低重音。
  2. 上述代码中的各种命令(例如,\mathpalette\dimen@\fontdimen)有什么作用?这些命令应该做什么?\m@th\accentfontxheight
  3. 为什么代码对小写字母没有任何效果?答案提供了解释,但我不明白为什么它对大写字母有效,但对小写字母无效。
  4. 有没有办法修改代码,以降低小写字母的重音?

答案1

  1. 字体的“x 高度”是指1ex该字体的大小。TeX 利用这一点在数学中设置方框和重音之间的空间。它还有更多内容,但重音放在方框顶部,它们之间的空间减少了,其中min(1ex, h)1ex相对于重音字体的,h是方框的高度(减少因为重音符号正好位于大写字母的高度上方)。
    因此,如果你这样做\widetilde{W},例如,由于的高度W大于,1ex你会得到类似
    \vbox{
        \hbox{<horizontally skewed widetilde accent>}
        \kern-1ex
        \hbox{W}
    }
    

因此,如果增加1ex,则会减少重音和字符之间的间距。

    • \fontdimen是一个 TeX 基元,用于加载字体的某些维度寄存器。它的用法是\fontdimen<number><font>,在本例中\fontdimen5<font>给出的大小。在本例中,我们想要的字体是或等等,具体取决于1ex上下文,因为这些被定义为重音字体。这是宏的目的,如果你给它上下文(,等等 --- 当前数学样式),它会在该上下文中给你。<font>\textfont3\scriptfont3\accentfontxheight\displaystyle\textstyle\fontdimen3
    • \dimen@\dimen0是 TeX 中第 dimen寄存器的简写0。它在这里用作临时寄存器,用于存储 的原始值,\fontdimen以便在 之后重置\wt。执行\dimen@<dimen>会将 设置\dimen0<dimen>,并将<dimen register>\dimen@设置<dimen register>为 中存储的值\dimen0
    • \mathpalette\<macro>{<param>}根据上下文调用
      \<macro>\displaystyle{<param>}、或等,这允许您创建一个根据当前数学样式执行不同操作的宏。
      \<macro>\textstyle{<param>}\<macro>
    • \m@th是 的简写。TeX在数学开启和数学关闭项周围\mathsurround=0pt添加长度的字距。\mathsurround
  1. 之所以对小写字母没有影响,是因为h<=1ex在这种情况下,所以min(h, 1ex)=h,因此增加1ex不会影响这个最小值。

  2. 一种方法是检查被强调的盒子的高度是否小于1ex,如果是,则将强调的内容放入更高的盒子中(升高被强调的材料),强调它,然后将其放低,使其恢复到原始高度。这只是一个想法,可能不是最好的。

所有关于此的信息都可以在 TeXbook 中找到。附录 G 包含有关 TeX 如何从公式生成框的信息,第 443 页的第 12 步包含有关数学重音的相关信息。

相关内容