3

AvalonEdit コントロールを使用していますが、xshd-ruleset (tex 用) に小さな問題があります。

元のファイルの「Mike Krueger による TeX ドキュメント 2001 の構文定義 (Jedit から収集)」には、特別なキーワードに関するセクションがあり、それらを正しく使用する方法を知りたいと思っています。

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

キーワードは青く色付けされてこれだけで処理されると思いますが、他のルールでもこれらのキーワードの一部を処理しています。例えば

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

したがって、テキストに「\%」がある場合、「\」を超えるものはすべて灰色になります...

'\' が前にある場合、そのキーワードが規則、例えば '$' と '%' を禁止する場合、それは非常に良いでしょう。

私がしなければならないこと?それとも、ルールセットを理解していませんでした...

編集

"\\" は、keyword1 エントリで処理されます。< MarkFollowing ... は "\\" には使用されませんが、< 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>

しかし、それは機能していません...エスケープ文字が < Rule > であるため、問題がある可能性がありますか?

4

1 に答える 1

1

ファイルを新しい形式に移植してみてください。詳細については、 http://community.sharpdevelop.net/forums/p/10468/28886.aspx#28886を参照してください。

新しい形式では、ルールで正規表現を使用できます。これは、Keywords/MarkFollowing を使用して TeX 構造を偽造しようとするよりもはるかにうまく機能するはずです。

EDIT2 で: \ を TeX コード内のエスケープ シーケンス (文字列/コメント内のエスケープ記号ではなく、コメントの前) にしたい場合は、メイン ルールセット内でエスケープ スパンを使用します。

<Span begin="\\" end="."/>
<Span foreground="#FF708090" fontWeight="normal" fontStyle="italic">
    <Begin>%</Begin>
</Span>
于 2010-11-13T22:27:17.930 に答える