在 ConTeXt 中格式化给定段落(或一组段落)的最佳方式

在 ConTeXt 中格式化给定段落(或一组段落)的最佳方式

虽然我已经阅读了文档,但我还没有找到明确的答案,所以我希望有人比我有更好的理解。

我想让一个段落(或一组)从其他段落中脱颖而出,例如,让我们想象在一本小说中:

  • 将你的角色正在阅读的文本置于中心位置
  • 您想要用引号写一些文本块并将其对齐到右侧,例如您的角色正在阅读的信件的标题。

此段落位于章节或场景内,它本身并不是文本的一部分,所以由于我不知道如何有效地获得这种效果,所以在犯任何错误之前,我宁愿问一下。

现在我考虑以下可能性:

  • 文本块
  • 框架
  • 新命令可以准确排版我想要的内容
  • 结合以上几种

答案1

有很多不同的方法可以改变某个文本块的布局。

要改变段落的颜色,您可以将其置于\startcolor环境中。

\starttext

\input ward

\startcolor[orange]
\input ward
\stopcolor

\stoptext

要为段落选择特殊字体,您可以使用采用\startfont与命令相同参数的环境\definedfont

\starttext

\input ward

\startfont[SansBold]
\input ward
\stopfont

\stoptext

使用\startstyle环境,您可以设置段落的样式和颜色。您可以将两个值都设置为命令的参数\startcolor,也可以使用命令创建一个命名集,并将\definestyle名称用作命令的参数\startstyle

\definestyle[important][color=blue,style=italic]

\starttext

\input ward

\startstyle[important]
\input ward
\stopstyle

\input ward

\startstyle[color=red,style=bold]
\input ward
\stopstyle

\stoptext

\startalignment可以使用与命令相同的参数的环境来改变一个或多个段落的对齐方式\setupalign

\starttext

\input ward

\startalignment[middle]
\input ward
\stopalignment

\stoptext

上述例子的缺点是标记和内容之间没有分离,但可以通过以下两种解决方案来实现。

第一种方法是\startparagraph环境,它允许您设置段落的样式和颜色。可以使用键添加其他设置setups,用于更改内容的对齐方式。

\startsetups[paragraph:important]
  \setupalign[middle]
\stopsetups

\defineparagraph
  [important]
  [color=green
   style=italic,
   setups=paragraph:important]

\starttext

\input ward

\startparagraph[important]
\input ward
\stopparagraph

\stoptext

第二种方法是使用\definestartstop命令创建您自己的环境,在其中设置内容的样式和颜色。使用键(无需commands使用环境)您可以添加其他设置。使用此方法时,您必须确保段落在命令之前结束,以确保对齐生效。\startsetupsstop

\startsetups[startstop:important]
  \setupalign[middle]
\stopsetups

\definestartstop
  [important]
  [color=green
   style=italic,
  %before={\startnarrower[2*middle]},
  %after=\stopnarrower,
   commands=\directsetup{startstop:important}]

\starttext

\input ward

\startimportant
\input ward\par
\stopimportant

\stoptext

相关内容