ConTeXt 中重叠部分顶部文本的字体大小是多少?

ConTeXt 中重叠部分顶部文本的字体大小是多少?

我有一份包含如下内容的文档:

\starttext
    \math{
        \overset{
            \text{Text A}
        }{
            \text{Text B}
        }
    }
\stoptext

“文本 A”打印出来比“文本 B”小。我希望其他文本也以与“文本 A”相同的大小显示。如何设置其他文本以匹配相同的大小?我尝试将其设置为“小”和“微小”。将其他文本设置为“小”会产生比“文本 A”高几个像素的文本。将其设置为“微小”不会导致字体大小发生任何变化。

答案1

让我们分析一下这里发生了什么。首先,我们想了解更多关于 的信息\overset,它的定义在math-ali.mkiv

\unexpanded\def\overset#1#2%
  {\math_binrel_apply{#2}{\mathop{\kern\zeropoint#2}\limits\normalsuperscript{#1}}}

啊哈!显然,第一个参数放在里面\mathop,第二个参数放在上标里面。上标和下标总是排版在里面\scriptstyle(除非\scriptstyle之前处于活动状态,然后它变成\scriptscriptstyle)。因此,我们得出结论,我们可以通过使用

\math{\scriptstyle\text{Foo}}

但我们可以更进一步。我们还可以找出命令中实际使用的字体大小。\text因此,我们查找了\textmath-ini.mkiv

\appendtoks \let\text\mathtext \to \everymathematics

\unexpanded\def\mathtext{\mathortext{\math_text_choice_font\relax}\hbox}

\def\math_text_choice_font#1#2#%
  {\normalizebodyfontsize\m_math_text_choice_face{\mathstyleface\normalmathstyle}%
   \hbox#2\bgroup
   \bgroup
   \aftergroup\hss
   \aftergroup\egroup
   \hss
   \font_basics_switchtobodyfont\m_math_text_choice_face
   #1%
   \let\next}

大奖!这就是我们要找的。这里感兴趣的是

\font_basics_switchtobodyfont\m_math_text_choice_face

从宏名可以看出,此命令将字体大小切换为当前的大小\m_math_text_choice_face。前面几行中,此大小是使用

\normalizebodyfontsize\m_math_text_choice_face{\mathstyleface\normalmathstyle}

这意味着我们可以自己查询脚本字体的大小并使用它

\starttext
\normalizebodyfontsize\scriptsize{\mathstyleface\scriptstyle}
Text A \switchtobodyfont[\scriptsize] Text B
\stoptext

或者,如果我们不想使用附加\scriptsize

\starttext
Text A \switchtobodyfont[\thenormalizedbodyfontsize{\mathstyleface\scriptstyle}] Text B
\stoptext

相关内容