背景

背景

背景

希望更改特定类型的宏块(环境)中强调文本的字体。只有强调的文本才应更改;环境中未强调的任何文本都不应受到影响。

文本以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 作为块引用环境之外的斜体字体。如果仔细观察上图,您会注意到差异(比较pz)。这也应该适用于新奇的字体选择机制,而不是使用 typescript 的旧方法,但我遇到了问题并恢复了这种方法。

相关内容