5

マークダウンドキュメントでの数学の構文の強調表示を改善しようとしています。

Multimarkdownは角かっこ\\[ .. \\]を使用し\\( .. \\)て、表示とインラインの計算をそれぞれ示します。これらの内容をTeXで強調したいと思います。

これが私がこれまでに得たものです:

syntax include @tex syntax/tex.vim
syn region displaymaths matchgroup=mkdMaths start = "\\\\\[" end="\\\\\]" contains=@tex
syn region inlinemaths matchgroup=mkdMaths start = "\\\\(" end="\\\\)" contains=@tex
hi def link mkdMaths SpecialComment

問題は、角かっこで囲まれていないため、角かっこで囲まれているものがtex.vimによって数学として取得されないことです$ .. $。これを回避する方法はありますか?ここで使用したいのはsyntax/tex.vimのtexMathグループだと思います。

括弧の内容をTex数学として解釈させる方法はありますか?

4

2 に答える 2

2

は、Texを含むリージョンで使用:syntax include @tex syntax/tex.vimする構文クラスターを提供します@texが、実際にはtex.vimに存在する特定のクラスターを参照する必要があります@texMathZoneGroup

構文クラスターはネストされていないため、を介して直接参照できますcontains=@texMathZoneGroup

于 2012-11-29T11:13:08.987 に答える
0
syntax include syntax/tex.vim
syn region displaymaths matchgroup=mkdMaths start = "\\\\\[" end="\\\\\]" contains=@texMathZoneGroup
syn region inlinemaths matchgroup=mkdMaths start = "\\\\(" end="\\\\)" contains=@texMathZoneGroup
hi def link mkdMaths SpecialComment

vimのドキュメント(:help syn-include)は実際にこれを非常に明確に述べています(おそらく例で行うことができますが):

インクルード構文ファイルの最上位の構文項目をインクルード構文のリージョン内に含める場合は、「:syntaxinclude」コマンドを使用できます。

n:sy[ntax] include [@{grouplist-name}] {file-name}

contains=@foo含まれている構文ファイルから特定の最上位の構文項目「foo」を含める場合は、コマンドに含める必要がありますsyn region

インクルードファイルで宣言されているすべての構文アイテムには、「contained」フラグが追加されます。さらに、グループリストが指定されている場合、含まれているファイルのすべての最上位構文項目がそのリストに追加されます。

したがって、@tex私の質問のgrouplist-nameを指定する必要はありませんでした。ただし、ドキュメントにTeXのより大きな領域がある場合は、含まれている構文ファイルの名前空間にアクセスできるため、含まれている構文ファイルのcontains=@texすべてのルールに従って領域全体が強調表示されるように指定する必要があります。

于 2012-11-29T10:53:30.760 に答える