![背景](https://linux22.com/image/285056/%E8%83%8C%E6%99%AF.png)
背景
我在尝试着代替当用户生成的文本中出现双连字符 ( ) 时,使用破折号代替--
。我使用的字体 (奇沃和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]
这应该会自动输出花括号、长破折号和连字符。