当我在 ConTeXt 中向 MetaPost 绘图添加标签时,它不会使用文档其余部分的字体,而是使用数学字体或 ConTeXt 使用的默认字体。例如,我可以为特定项目设置字体,但似乎不符合 ConTeXt 的label("\sourcefont This will appear with the correct font", (25,75));
理念,我必须为每个标签设置字体(我有数百个标签)。有没有一种全局设置方法,要么在文档中的所有 MetaPost 绘图中设置,要么至少在 MetaPost 的开头设置,它将在放置标签的任何地方使用?
答案1
Metafun 标签的默认字体设置为meta-ini.mkiv
to MetafunDefault
which 是 which 的同义词Regular
,通常是衬线文本字体,默认为拉丁现代罗马字体。
因此,您有两种选择来更改字体。
将同义词重置
MetafunDefault
为您选择的字体:\definefontsynonym [MetafunDefault] [file:texgyrepagella-regular*default] \starttext This is the text font \startMPcode label("This is the Metafun font", origin) ; \stopMPcode \stoptext
使用
MPinitializations
do 将defaultfont
变量设置为不同的值。这是记录的方法,请参阅 10.3“标签”Metafun 手册。\startMPinitializations defaultfont := "file:texgyrepagella-regular*default" ; \stopMPinitializations \starttext This is the text font \startMPcode label("This is the Metafun font", origin) ; \stopMPcode \stoptext
答案2
textstyle
我使用MPinstance
用于更改字体。默认的 metapost 图形是使用实例绘制的metafun
。因此,您只需执行以下操作:
\setupMPinstance[metafun][textstyle={\sourcefont}]
这是一个完整的例子:
\setupbodyfont[modern,10pt]
\setupMPinstance[metafun][textstyle={\switchtobodyfont[pagella,10pt]}]
\starttext
This is the text font
\startMPcode
label("This is the Metafun font", origin) ;
\stopMPcode
\stoptext
这使
答案3
我犹豫着是否该回答这个问题,因为我读过MetaFun 手册仅适用\startMPenvironemnt \stopMPenvironment
于 mkii,mkiv 不需要(参见第 10.2 节)。
无论如何,我已经成功地使用这种方法多年了:
\setupbodyfont[bonum]
\startbuffer[lefigure]
\startplacefigure[location=nonumber]
\startMPcode
draw fullcircle scaled 2cm;
label.rt(textext("east"),(1cm,0));
label.top(textext("north"),(0,1cm));
label.lft(textext("west"),(-1cm,0));
label.bot(textext("south"),(0,-1cm));
\stopMPcode
\stopplacefigure
\stopbuffer
\startTEXpage[offset=0.25in]
Normal text set with bonum. MetaPost figures uses the same font:
\getbuffer[lefigure]
\startMPenvironment
\setupbodyfont[latinmodern,ss,6pt]
\stopMPenvironment
Efter we have changed the bodyfont inside a \tex{startMPenvironment} \tex{stopMPenvironment}
we get this new font in our MetaPost figures:
\getbuffer[lefigure]
\stopTEXpage
我不建议多次进行此类更改,而是一劳永逸。通常:
\setupbodyfont[bonum]
\startMPenvironment
\setupbodyfont[6pt]
\stopMPenvironment
\starttext
...
\stoptext