背景

背景

背景

我在尝试着代替当用户生成的文本中出现双连字符 ( ) 时,使用破折号代替--。我使用的字体 (奇沃Gentium 基础版) 会导致在文档中添加双连字符,而不是\emdash{}(—)。

问题

替换代码类似于:

\def\SubEmdash#1{%
  \ctxlua{context(string.gsub("#1", "[-][-]", "\\emdash{}"))}
}

\starttext
  \SubEmdash{Escaping ampersands -- \& -- is troublesome.}
\stoptext

对于包含“&”符号的字符串,此操作会失败。

问题

对以下任何一个问题的回答都将非常有帮助:

  • 无论字体如何,如何强制--在整个文本中产生破折号?
  • 如何转义用户生成的文本以使\SubEmdash宏永远不会失败?

有关的

以下答案也无法处理参数化文本中的“&”符号:

答案1

问题在于字体功能默认情况下处于禁用状态。启用字体功能如下:

\starttypescript [serif] [ContentBody]
  \definefontsynonym [Serif] [name:librebaskervilleregular] [features=default]
\stoptypescript

\definetypeface[ContentFont] [rm] [serif] [ContentBody] [default]
\usetypescript[ContentFont] [ec]
\setupbodyfont[ContentFont]

这应该会自动输出花括号、长破折号和连字符。

相关内容