AvalonEdit XSHD-Ruleset(用于tex)

时间:2010-11-09 14:21:38

标签: avalonedit

我正在使用AvalonEdit控件,我对xshd-ruleset(对于tex)有一个小问题:

原始文件'Mike Krueger(收集自Jedit)的TeX文档2001的语法定义中有一节关于特殊关键字,我想知道如何正确使用它们。

  <!-- some commands must be handled specially -->
  <KeyWords name = "Keyword1" bold = "false" italic = "false" color = "Blue">
    <Key word = "\$" />
    <Key word = "\\" />
    <Key word = "\%" />
  </KeyWords>

我虽然关键字会以蓝色显示,但仅由此处理,但其他规则也会处理这些关键字。 e.g。

  <Span name = "LineComment" color = "SlateGray" stopateol = "true">
    <Begin>%</Begin>
  </Span>

因此,如果你的文字中有“\%”,那么“\”之外的所有内容都将显示为灰色...

如果关键字禁止规则,那将是非常好的,例如如果之前有'\',则为'$'和'%'。

我该怎么办?或者我不理解规则集......

修改

“\\”由keyword1条目处理。 &lt; MarkFollowing ...不用于“\\”,而是&lt; Span ...仍在为“\ $”和“\%”突出显示。

我找到了

  escapecharacter="\"

但它不起作用。

EDIT2

使用新的语法高亮定义,我认为问题是一样的。我将tex突出显示与c#突出显示进行了比较。在c#中我们有:

<Span color="String">
    <Begin>"</Begin>
    <End>"</End>
    <RuleSet>
         <!-- span for escape sequences -->
         <Span begin="\\" end="."/>
    </RuleSet>
</Span>

我不使用sharpdevelop,但我认为它有效,突出显示不会失败,如果我正在逃避像“。所以在我的文件中它类似于那样,

<Span foreground="#FF708090" fontWeight="normal" fontStyle="italic">
    <Begin>%</Begin>
    <RuleSet>
        <Span begin="\\" end="." />
    </RuleSet>
</Span>

但它不起作用......也许存在问题,因为转义字符是&lt;规则&gt; ?

1 个答案:

答案 0 :(得分:1)

尝试将文件移植到新格式,有关详细信息,请参阅http://community.sharpdevelop.net/forums/p/10468/28886.aspx#28886

在新格式中,您可以在规则中使用正则表达式,这比使用关键字/ MarkFollowing尝试伪造TeX构造要好得多。

在您的EDIT2上: 如果你希望\是TeX代码中的转义序列(在注释前面,而不是在字符串/注释中作为转义符号),那么使用主规则集中的转义范围:

<Span begin="\\" end="."/>
<Span foreground="#FF708090" fontWeight="normal" fontStyle="italic">
    <Begin>%</Begin>
</Span>