是否有一种首选/支持的方法可以将当前字体大小切换为绝对ConT E Xt中的值?
维基页面字体切换和参考手册描述诸如\tfb
和 之类的命令\tfx
,用于放大或缩小字体大小相对的到当前大小。
\switchtobodyfont
接受绝对字体大小,但不会将字体大小调整回所需大小,如下所示:
\mainlanguage[en]
\setuppapersize[letter]
\setupbodyfont[modern,12pt]
\starttext
1. Normal text (12pt)
2. {\tt \{\backslash tfb \{\backslash switchtobodyfont[12pt] normal\}\}} \longrightarrow\ {\tfb tfb{\switchtobodyfont[12pt] normal}}
3. {\tt \{\backslash tfb \{\backslash switchtobodyfont[10pt] normal\}\}} \longrightarrow\ {\tfb tfb{\switchtobodyfont[10pt] normal}}
4. {\tt \{\backslash tfb \{\backslash switchtobodyfont[8pt] normal\}\}} \longrightarrow\ {\tfb tfb{\switchtobodyfont[8pt] normal}}
\stoptext
在上述所有\switchtobodyfont[<new_font_size>]
项目中,最终的字体大小为更大比<new_font_size>
,最有趣的是,在(2)中使用\switchtobodyfont[12pt]
可以保持字体大小不变。
根据这一观察,也许\switchtobodyfont[<new_font_size>]
不是<new_font_size>
绝对值,而是相对于<standard_font_size>
?\setupbodyfont[<standard_font_size>]
这可以解释第 (2) 项中的字体大小未调整,因为12pt / 12pt = 1
,但这只是一个猜测......
(上面的例子是为了说明目的而精心设计和简化的。)
答案1
您可以使用\fullrestoreglobalbodyfont
。在下面的 MWE 中,我定义了一个命令来将此设置与新字体大小的选择相结合。与名称所暗示的不同,此设置是组内的本地设置。
\mainlanguage[en]
\setuppapersize[letter]
\setupbodyfont[modern,12pt]
\define[1]\globalfsize{\fullrestoreglobalbodyfont\switchtobodyfont[#1]}
\starttext
1. Normal text (12pt)
2. {\tt \{\backslash tfb \{\backslash switchtobodyfont[12pt]\}\}} \longrightarrow\ {\tfb tfb{\globalfsize{12pt} Normal} still tfb} Normal
3. {\tt \{\backslash tfb \{\backslash switchtobodyfont[10pt]\}\}} \longrightarrow\ {\tfb tfb{\globalfsize{10pt} Normal} still tfb} Normal
4. {\tt \{\backslash tfb \{\backslash switchtobodyfont[8pt]\}\}} \longrightarrow\ {\tfb tfb{\globalfsize{8pt} Normal} still tfb} Normal
\stoptext