ConTeXt:样式替代中的字母间距

ConTeXt:样式替代中的字母间距

我想创建一个新的样式替代方案,这样我就可以更改文本和字体(本例中为大写粗体),同时增加字母间距。但是,尝试这样做会导致崩溃:

\setuppapersize[S3]

\definecharacterkerning [mykerning] [factor=0.16]
\definealternativestyle [mystyle]
  [
    \WORDS\bfx\setcharacterkerning[mykerning]
  ]


\starttext
  {\WORDS\bfx\setcharacterkerning[mykerning] It works here.}
  
  {\mystyle It crashes here.}
\stoptext
tex error       > tex error on line 13 in file /home/…/test.tex: ! Argument of \setcharacterkerning has an extra }

为什么会发生崩溃?(\WORDS可以运行,为什么不运行\setcharacterkerning?)有办法修复吗?我希望能够将其用作 的参数style=

答案1

抱歉回答太长了。括号问题在其他地方讨论过,我认为手册里有解释,但我不记得是哪一本了,所以我在这里简单说一下。

您的问题是:ConTeXt 在第一次出现右括号时关闭一对括号[]。因此,类似

\setupsomething[key=\value[]]

将读取[key=\value[]并崩溃。对于这种情况,ConTeXt 提供\setups包含所有复杂宏的功能:

\startsetups mystyle 
\WORDS\bfx\setcharacterkerning[mykerning]
\stopsetups

\setups[mystyle]和都\setup{mystyle}可以,所以我们选择后者以避免上面的括号问题。

\setuppapersize[S3]
\definecharacterkerning [mykerning] [factor=0.16]
\startsetups mystyle
\WORDS\bfx\setcharacterkerning[mykerning]
\stopsetups
\definealternativestyle[mystyle][\setups{mystyle}]
\setuphead[title][style=\mystyle]
%Test example
\starttext
\starttitle[title=Hello]
\input jojomayer
\stoptitle
\stoptext

在此处输入图片描述

相关内容