2012-11-28 52 views
4

我試圖改善markdown文檔中數學的語法高亮。Vim數學語法高亮

Multimarkdown使用括號\\[ .. \\]\\(.. \\)分別指示顯示和內聯數學。我想用TeX突出這些內容。

這裏是我到目前爲止有:

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

的問題是,什麼是括號內無人拿起由tex.vim裏數學,因爲它不是在$ .. $封閉。有沒有辦法解決這個問題?我認爲這是我想在這裏使用的語法/ tex.vim中的texMath組。

有什麼方法可以強制括號內容被解釋爲Tex數學嗎?

+1

如果用'contains = @ texMathZoneGroup'替換'contains = @ tex'會怎樣? –

+0

作品,謝謝。該文件確實說這會起作用,但是它幾次閱讀後不會發生。 – aaren

+0

啊,很好,所以我的直覺是對的。我已經添加了一個更詳細的答案。請接受它:-) –

回答

2

:syntax include @tex syntax/tex.vim爲您提供了一個@tex語法集羣,可用於包含Tex的區域,但實際上您想要引用tex.vim,@texMathZoneGroup中存在的特定集羣。

由於不存在語法簇的嵌套,因此您可以直接通過[email protected]來引用它。

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

Vim文檔(:help syn-include)實際上指出這很清楚地(雖然可以用一個例子也許做):

如果被包含的語法文件裏的頂層語法項目是 載在包括語法的區域內,你可以使用 「:語法包括」命令:

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

如果要從包含的語法文件中包含特定的頂級語法項「foo」,則需要在syn region命令中包含[email protected]

在包含文件中聲明的所有語法項目都會添加 「包含」標誌。另外,如果指定了組列表,則 包含文件中的所有頂級語法項目將被添加到 列表中。

因此我的問題中的@tex grouplist-name不需要指定。如果我在文檔中有更大的TeX區域,則需要指定它,因爲它允許訪問包含的語法文件的名稱空間,以便[email protected]將根據所包含的語法文件的所有規則高亮顯示整個區域。