背景
希望更改特定类型的宏块(环境)中强调文本的字体。只有强调的文本才应更改;环境中未强调的任何文本都不应受到影响。
文本以Markdown编写,例如:
> _This is text in a blockquote environment._
This is a paragraph that also includes *emphasized* text.
> This text is also in a blockquote environment.
Pandoc 生成以下 ConTeXt 片段:
\startblockquote
{\em This is text in a blockquote environment.}
\stopblockquote
This is a paragraph that also includes {\em emphasized} text.
\startblockquote
This text is also in a blockquote environment.
\stopblockquote
问题
由于文本已生成,因此无法更改 ConTeXt 片段。我想生成一份类似于以下内容的文档:
请注意第一个 blockquote 环境中强调文本的字体与斜体文本的不同。还请注意第二个 blockquote 环境的字体与第一个环境的字体不同。
问题
如何更改使用 标记的字体{\em ...}
,但前提是它出现在blockquote
环境内(使用 ConTeXt mkiv)?
答案1
\em
改变使用命令的风格\setupbodyfontenvironment
。
\setupdelimitedtext
[blockquote]
[before={\setupbodyfontenvironment[default][em=mono]}]
\starttext
\startblockquote
{\em This is text in a blockquote environment.}
\stopblockquote
This is a paragraph that also includes {\em emphasized} text.
\startblockquote
This text is also in a blockquote environment.
\stopblockquote
\stoptext
答案2
Aditya 提供了答案的要素,因此对他表示敬意。以下是我建议的(希望我理解了你的问题)。
\setupbodyfontenvironment[default][em=italic]
\starttypescript [serif] [blockfont] [name]
\definefontsynonym [Serif] [file:texgyretermes-regular]
\definefontsynonym [SerifItalic] [file:texgyrepagella-italic][rscale=0.9]
\stoptypescript
\starttypescript [blockfont]
\definetypeface [blockfont] [rm] [serif] [blockfont] [default]
\stoptypescript
\usetypescript [blockfont]
\setupbodyfont [termes]
\setupdelimitedtext[blockquote][style={\switchtobodyfont[blockfont]}]
\starttext
\startblockquote
Blockquote environment with {\em emphasized} text.
\stopblockquote
Regular environment with {\em emphasized} text.
\stoptext
这使用 TeX Gyre Pagella 作为块引用环境中的斜体字体,使用 TeX Gyre Termes 作为块引用环境之外的斜体字体。如果仔细观察上图,您会注意到差异(比较p
和z
)。这也应该适用于新奇的字体选择机制,而不是使用 typescript 的旧方法,但我遇到了问题并恢复了这种方法。