1" Vim syntax file 2" Language: TeX 3" Maintainer: Dr. Charles E. Campbell, Jr. <[email protected]> 4" Last Change: Jul 28, 2010 5" Version: 51 6" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax 7" 8" Notes: {{{1 9" 10" 1. If you have a \begin{verbatim} that appears to overrun its boundaries, 11" use %stopzone. 12" 13" 2. Run-on equations ($..$ and $$..$$, particularly) can also be stopped 14" by suitable use of %stopzone. 15" 16" 3. If you have a slow computer, you may wish to modify 17" 18" syn sync maxlines=200 19" syn sync minlines=50 20" 21" to values that are more to your liking. 22" 23" 4. There is no match-syncing for $...$ and $$...$$; hence large 24" equation blocks constructed that way may exhibit syncing problems. 25" (there's no difference between begin/end patterns) 26" 27" 5. If you have the variable "g:tex_no_error" defined then none of the 28" lexical error-checking will be done. 29" 30" ie. let g:tex_no_error=1 31 32" Version Clears: {{{1 33" For version 5.x: Clear all syntax items 34" For version 6.x: Quit when a syntax file was already loaded 35if version < 600 36 syntax clear 37elseif exists("b:current_syntax") 38 finish 39endif 40 41" Define the default highlighting. {{{1 42" For version 5.7 and earlier: only when not done already 43" For version 5.8 and later: only when an item doesn't have highlighting yet 44if version >= 508 || !exists("did_tex_syntax_inits") 45 let did_tex_syntax_inits = 1 46 if version < 508 47 command -nargs=+ HiLink hi link <args> 48 else 49 command -nargs=+ HiLink hi def link <args> 50 endif 51endif 52if exists("g:tex_tex") && !exists("g:tex_no_error") 53 let g:tex_no_error= 1 54endif 55 56" Determine whether or not to use "*.sty" mode {{{1 57" The user may override the normal determination by setting 58" g:tex_stylish to 1 (for "*.sty" mode) 59" or to 0 else (normal "*.tex" mode) 60" or on a buffer-by-buffer basis with b:tex_stylish 61let b:extfname=expand("%:e") 62if exists("g:tex_stylish") 63 let b:tex_stylish= g:tex_stylish 64elseif !exists("b:tex_stylish") 65 if b:extfname == "sty" || b:extfname == "cls" || b:extfname == "clo" || b:extfname == "dtx" || b:extfname == "ltx" 66 let b:tex_stylish= 1 67 else 68 let b:tex_stylish= 0 69 endif 70endif 71 72" handle folding {{{1 73if !exists("g:tex_fold_enabled") 74 let g:tex_fold_enabled= 0 75elseif g:tex_fold_enabled && !has("folding") 76 let g:tex_fold_enabled= 0 77 echomsg "Ignoring g:tex_fold_enabled=".g:tex_fold_enabled."; need to re-compile vim for +fold support" 78endif 79if g:tex_fold_enabled && &fdm == "manual" 80 setl fdm=syntax 81endif 82 83" (La)TeX keywords: only use the letters a-zA-Z {{{1 84" but _ is the only one that causes problems. 85if version < 600 86 set isk-=_ 87 if b:tex_stylish 88 set isk+=@ 89 endif 90else 91 setlocal isk-=_ 92 if b:tex_stylish 93 setlocal isk+=@ 94 endif 95endif 96 97" Clusters: {{{1 98" -------- 99syn cluster texCmdGroup contains=texCmdBody,texComment,texDefParm,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texSectionMarker,texSectionName,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle 100if !exists("g:tex_no_error") 101 syn cluster texCmdGroup add=texMathError 102endif 103syn cluster texEnvGroup contains=texMatcher,texMathDelim,texSpecialChar,texStatement 104syn cluster texFoldGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texSectionMarker,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract 105syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,@Spell 106syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,@Spell,texStyleMatcher 107syn cluster texRefGroup contains=texMatcher,texComment,texDelimiter 108if !exists("tex_no_math") 109 syn cluster texMathZones contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ 110 syn cluster texMatchGroup add=@texMathZones 111 syn cluster texMathDelimGroup contains=texMathDelimBad,texMathDelimKey,texMathDelimSet1,texMathDelimSet2 112 syn cluster texMathMatchGroup contains=@texMathZones,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathMatcher,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone 113 syn cluster texMathZoneGroup contains=texComment,texDelimiter,texLength,texMathDelim,texMathMatcher,texMathOper,texMathSymbol,texRefZone,texSpecialChar,texStatement,texTypeSize,texTypeStyle 114 if !exists("g:tex_no_error") 115 syn cluster texMathMatchGroup add=texMathError 116 syn cluster texMathZoneGroup add=texMathError 117 endif 118 syn cluster texMathZoneGroup add=@NoSpell 119 " following used in the \part \chapter \section \subsection \subsubsection 120 " \paragraph \subparagraph \author \title highlighting 121 syn cluster texDocGroup contains=texPartZone,@texPartGroup 122 syn cluster texPartGroup contains=texChapterZone,texSectionZone,texParaZone 123 syn cluster texChapterGroup contains=texSectionZone,texParaZone 124 syn cluster texSectionGroup contains=texSubSectionZone,texParaZone 125 syn cluster texSubSectionGroup contains=texSubSubSectionZone,texParaZone 126 syn cluster texSubSubSectionGroup contains=texParaZone 127 syn cluster texParaGroup contains=texSubParaZone 128 if has("conceal") && &enc == 'utf-8' 129 syn cluster texMathZoneGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol 130 syn cluster texMathMatchGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol 131 endif 132endif 133 134" Try to flag {} and () mismatches: {{{1 135if !exists("g:tex_no_error") 136 syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texMatchGroup,texError 137 syn region texMatcher matchgroup=Delimiter start="\[" end="]" contains=@texMatchGroup,texError 138else 139 syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texMatchGroup 140 syn region texMatcher matchgroup=Delimiter start="\[" end="]" contains=@texMatchGroup 141endif 142syn region texParen start="(" end=")" contains=@texMatchGroup,@Spell 143if !exists("g:tex_no_error") 144 syn match texError "[}\])]" 145endif 146if !exists("tex_no_math") 147 if !exists("g:tex_no_error") 148 syn match texMathError "}" contained 149 endif 150 syn region texMathMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\}" end="}" end="%stopzone\>" contained contains=@texMathMatchGroup 151endif 152 153" TeX/LaTeX keywords: {{{1 154" Instead of trying to be All Knowing, I just match \..alphameric.. 155" Note that *.tex files may not have "@" in their \commands 156if exists("g:tex_tex") || b:tex_stylish 157 syn match texStatement "\\[a-zA-Z@]\+" 158else 159 syn match texStatement "\\\a\+" 160 if !exists("g:tex_no_error") 161 syn match texError "\\\a*@[a-zA-Z@]*" 162 endif 163endif 164 165" TeX/LaTeX delimiters: {{{1 166syn match texDelimiter "&" 167syn match texDelimiter "\\\\" 168 169" Tex/Latex Options: {{{1 170syn match texOption "[^\\]\zs#\d\+\|^#\d\+" 171 172" texAccent (tnx to Karim Belabas) avoids annoying highlighting for accents: {{{1 173if b:tex_stylish 174 syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1 175 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1 176else 177 syn match texAccent "\\[bcdvuH]\A"me=e-1 178 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)\A"me=e-1 179endif 180syn match texAccent "\\[bcdvuH]$" 181syn match texAccent +\\[=^.\~"`']+ 182syn match texAccent +\\['=t'.c^ud"vb~Hr]{\a}+ 183syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)$" 184 185" \begin{}/\end{} section markers: {{{1 186syn match texSectionMarker "\\begin\>\|\\end\>" nextgroup=texSectionName 187syn region texSectionName matchgroup=Delimiter start="{" end="}" contained nextgroup=texSectionModifier contains=texComment 188syn region texSectionModifier matchgroup=Delimiter start="\[" end="]" contained contains=texComment 189 190" \documentclass, \documentstyle, \usepackage: {{{1 191syn match texDocType "\\documentclass\>\|\\documentstyle\>\|\\usepackage\>" nextgroup=texSectionName,texDocTypeArgs 192syn region texDocTypeArgs matchgroup=Delimiter start="\[" end="]" contained nextgroup=texSectionName contains=texComment 193 194" Preamble syntax-based folding support: {{{1 195if g:tex_fold_enabled && has("folding") 196 syn region texPreamble transparent fold start='\zs\\documentclass\>' end='\ze\\begin{document}' contains=texStyle,@texMatchGroup 197endif 198 199" TeX input: {{{1 200syn match texInput "\\input\s\+[a-zA-Z/.0-9_^]\+"hs=s+7 contains=texStatement 201syn match texInputFile "\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt 202syn match texInputFile "\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt 203syn match texInputCurlies "[{}]" contained 204syn region texInputFileOpt matchgroup=Delimiter start="\[" end="\]" contained contains=texComment 205 206" Type Styles (LaTeX 2.09): {{{1 207syn match texTypeStyle "\\rm\>" 208syn match texTypeStyle "\\em\>" 209syn match texTypeStyle "\\bf\>" 210syn match texTypeStyle "\\it\>" 211syn match texTypeStyle "\\sl\>" 212syn match texTypeStyle "\\sf\>" 213syn match texTypeStyle "\\sc\>" 214syn match texTypeStyle "\\tt\>" 215 216" Type Styles: attributes, commands, families, etc (LaTeX2E): {{{1 217syn match texTypeStyle "\\textbf\>" 218syn match texTypeStyle "\\textit\>" 219syn match texTypeStyle "\\textmd\>" 220syn match texTypeStyle "\\textrm\>" 221syn match texTypeStyle "\\textsc\>" 222syn match texTypeStyle "\\textsf\>" 223syn match texTypeStyle "\\textsl\>" 224syn match texTypeStyle "\\texttt\>" 225syn match texTypeStyle "\\textup\>" 226syn match texTypeStyle "\\emph\>" 227 228syn match texTypeStyle "\\mathbb\>" 229syn match texTypeStyle "\\mathbf\>" 230syn match texTypeStyle "\\mathcal\>" 231syn match texTypeStyle "\\mathfrak\>" 232syn match texTypeStyle "\\mathit\>" 233syn match texTypeStyle "\\mathnormal\>" 234syn match texTypeStyle "\\mathrm\>" 235syn match texTypeStyle "\\mathsf\>" 236syn match texTypeStyle "\\mathtt\>" 237 238syn match texTypeStyle "\\rmfamily\>" 239syn match texTypeStyle "\\sffamily\>" 240syn match texTypeStyle "\\ttfamily\>" 241 242syn match texTypeStyle "\\itshape\>" 243syn match texTypeStyle "\\scshape\>" 244syn match texTypeStyle "\\slshape\>" 245syn match texTypeStyle "\\upshape\>" 246 247syn match texTypeStyle "\\bfseries\>" 248syn match texTypeStyle "\\mdseries\>" 249 250" Some type sizes: {{{1 251syn match texTypeSize "\\tiny\>" 252syn match texTypeSize "\\scriptsize\>" 253syn match texTypeSize "\\footnotesize\>" 254syn match texTypeSize "\\small\>" 255syn match texTypeSize "\\normalsize\>" 256syn match texTypeSize "\\large\>" 257syn match texTypeSize "\\Large\>" 258syn match texTypeSize "\\LARGE\>" 259syn match texTypeSize "\\huge\>" 260syn match texTypeSize "\\Huge\>" 261 262" Spacecodes (TeX'isms): {{{1 263" \mathcode`\^^@="2201 \delcode`\(="028300 \sfcode`\)=0 \uccode`X=`X \lccode`x=`x 264syn match texSpaceCode "\\\(math\|cat\|del\|lc\|sf\|uc\)code`"me=e-1 nextgroup=texSpaceCodeChar 265syn match texSpaceCodeChar "`\\\=.\(\^.\)\==\(\d\|\"\x\{1,6}\|`.\)" contained 266 267" Sections, subsections, etc: {{{1 268if g:tex_fold_enabled && has("folding") 269 syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' fold contains=@texFoldGroup,@texDocGroup,@Spell 270 syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texPartGroup,@Spell 271 syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texChapterGroup,@Spell 272 syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texSectionGroup,@Spell 273 syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texSubSectionGroup,@Spell 274 syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texSubSubSectionGroup,@Spell 275 syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texParaGroup,@Spell 276 syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@Spell 277 syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' fold contains=@texFoldGroup,@Spell 278 syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' fold contains=@texFoldGroup,@Spell 279else 280 syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup,@Spell 281 syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup,@Spell 282 syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup,@Spell 283 syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup,@Spell 284 syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup,@Spell 285 syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSubSectionGroup,@Spell 286 syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texParaGroup,@Spell 287 syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@Spell 288 syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup,@Spell 289 syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup,@Spell 290endif 291 292" Bad Math (mismatched): {{{1 293if !exists("tex_no_math") 294 syn match texBadMath "\\end\s*{\s*\(array\|gathered\|bBpvV]matrix\|split\|subequations\|smallmatrix\|xxalignat\)\s*}" 295 syn match texBadMath "\\end\s*{\s*\(align\|alignat\|displaymath\|displaymath\|eqnarray\|equation\|flalign\|gather\|math\|multline\|xalignat\)\*\=\s*}" 296 syn match texBadMath "\\[\])]" 297endif 298 299" Math Zones: {{{1 300if !exists("tex_no_math") 301 " TexNewMathZone: function creates a mathzone with the given suffix and mathzone name. {{{2 302 " Starred forms are created if starform is true. Starred 303 " forms have syntax group and synchronization groups with a 304 " "S" appended. Handles: cluster, syntax, sync, and HiLink. 305 fun! TexNewMathZone(sfx,mathzone,starform) 306 let grpname = "texMathZone".a:sfx 307 let syncname = "texSyncMathZone".a:sfx 308 if g:tex_fold_enabled 309 let foldcmd= " fold" 310 else 311 let foldcmd= "" 312 endif 313 exe "syn cluster texMathZones add=".grpname 314 exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd 315 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' 316 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' 317 exe 'hi def link '.grpname.' texMath' 318 if a:starform 319 let grpname = "texMathZone".a:sfx.'S' 320 let syncname = "texSyncMathZone".a:sfx.'S' 321 exe "syn cluster texMathZones add=".grpname 322 exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd 323 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' 324 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' 325 exe 'hi def link '.grpname.' texMath' 326 endif 327 endfun 328 329 " Standard Math Zones: {{{2 330 call TexNewMathZone("A","align",1) 331 call TexNewMathZone("B","alignat",1) 332 call TexNewMathZone("C","displaymath",1) 333 call TexNewMathZone("D","eqnarray",1) 334 call TexNewMathZone("E","equation",1) 335 call TexNewMathZone("F","flalign",1) 336 call TexNewMathZone("G","gather",1) 337 call TexNewMathZone("H","math",1) 338 call TexNewMathZone("I","multline",1) 339 call TexNewMathZone("J","subequations",0) 340 call TexNewMathZone("K","xalignat",1) 341 call TexNewMathZone("L","xxalignat",0) 342 343 " Inline Math Zones: {{{2 344 if has("conceal") && &enc == 'utf-8' 345 syn region texMathZoneV matchgroup=Delimiter start="\\(" matchgroup=Delimiter end="\\)\|%stopzone\>" keepend concealends contains=@texMathZoneGroup 346 syn region texMathZoneW matchgroup=Delimiter start="\\\[" matchgroup=Delimiter end="\\]\|%stopzone\>" keepend concealends contains=@texMathZoneGroup 347 syn region texMathZoneX matchgroup=Delimiter start="\$" skip="\\\\\|\\\$" matchgroup=Delimiter end="\$" end="%stopzone\>" concealends contains=@texMathZoneGroup 348 syn region texMathZoneY matchgroup=Delimiter start="\$\$" matchgroup=Delimiter end="\$\$" end="%stopzone\>" concealends keepend contains=@texMathZoneGroup 349 else 350 syn region texMathZoneV matchgroup=Delimiter start="\\(" matchgroup=Delimiter end="\\)\|%stopzone\>" keepend contains=@texMathZoneGroup 351 syn region texMathZoneW matchgroup=Delimiter start="\\\[" matchgroup=Delimiter end="\\]\|%stopzone\>" keepend contains=@texMathZoneGroup 352 syn region texMathZoneX matchgroup=Delimiter start="\$" skip="\\\\\|\\\$" matchgroup=Delimiter end="\$" end="%stopzone\>" contains=@texMathZoneGroup 353 syn region texMathZoneY matchgroup=Delimiter start="\$\$" matchgroup=Delimiter end="\$\$" end="%stopzone\>" keepend contains=@texMathZoneGroup 354 endif 355 syn region texMathZoneZ matchgroup=texStatement start="\\ensuremath\s*{" matchgroup=texStatement end="}" end="%stopzone\>" contains=@texMathZoneGroup 356 357 syn match texMathOper "[_^=]" contained 358 359 " \left..something.. and \right..something.. support: {{{2 360 syn match texMathDelimBad contained "\S" 361 syn match texMathDelim contained "\\\(left\|right\|[bB]igg\=[lr]\)\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad 362 syn match texMathDelim contained "\\\(left\|right\)arrow\>\|\<\([aA]rrow\|brace\)\=vert\>" 363 syn match texMathDelim contained "\\lefteqn\>" 364 syn match texMathDelimSet2 contained "\\" nextgroup=texMathDelimKey,texMathDelimBad 365 syn match texMathDelimSet1 contained "[<>()[\]|/.]\|\\[{}|]" 366 syn keyword texMathDelimKey contained backslash lceil lVert rgroup uparrow 367 syn keyword texMathDelimKey contained downarrow lfloor rangle rmoustache Uparrow 368 syn keyword texMathDelimKey contained Downarrow lgroup rbrace rvert updownarrow 369 syn keyword texMathDelimKey contained langle lmoustache rceil rVert Updownarrow 370 syn keyword texMathDelimKey contained lbrace lvert rfloor 371endif 372 373" Special TeX characters ( \$ \& \% \# \{ \} \_ \S \P ) : {{{1 374syn match texSpecialChar "\\[$&%#{}_]" 375if b:tex_stylish 376 syn match texSpecialChar "\\[SP@][^a-zA-Z@]"me=e-1 377else 378 syn match texSpecialChar "\\[SP@]\A"me=e-1 379endif 380syn match texSpecialChar "\\\\" 381if !exists("tex_no_math") 382 syn match texOnlyMath "[_^]" 383endif 384syn match texSpecialChar "\^\^[0-9a-f]\{2}\|\^\^\S" 385 386" Comments: {{{1 387" Normal TeX LaTeX : %.... 388" Documented TeX Format: ^^A... -and- leading %s (only) 389if !exists("g:tex_comment_nospell") || !g:tex_comment_nospell 390 syn cluster texCommentGroup contains=texTodo,@Spell 391else 392 syn cluster texCommentGroup contains=texTodo,@NoSpell 393endif 394syn case ignore 395syn keyword texTodo contained combak fixme todo xxx 396syn case match 397if b:extfname == "dtx" 398 syn match texComment "\^\^A.*$" contains=@texCommentGroup 399 syn match texComment "^%\+" contains=@texCommentGroup 400else 401 if g:tex_fold_enabled 402 " allows syntax-folding of 2 or more contiguous comment lines 403 " single-line comments are not folded 404 syn match texComment "%.*$" contains=@texCommentGroup 405 syn region texComment start="^\zs\s*%.*\_s*%" skip="^\s*%" end='^\ze\s*[^%]' fold 406 else 407 syn match texComment "%.*$" contains=@texCommentGroup 408 endif 409endif 410 411" Separate lines used for verb` and verb# so that the end conditions {{{1 412" will appropriately terminate. Ideally vim would let me save a 413" character from the start pattern and re-use it in the end-pattern. 414syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>" contains=@Spell 415" listings package: 416syn region texZone start="\\begin{lstlisting}" end="\\end{lstlisting}\|%stopzone\>" contains=@Spell 417" moreverb package: 418syn region texZone start="\\begin{verbatimtab}" end="\\end{verbatimtab}\|%stopzone\>" contains=@Spell 419syn region texZone start="\\begin{verbatimwrite}" end="\\end{verbatimwrite}\|%stopzone\>" contains=@Spell 420syn region texZone start="\\begin{boxedverbatim}" end="\\end{boxedverbatim}\|%stopzone\>" contains=@Spell 421if version < 600 422 syn region texZone start="\\verb\*\=`" end="`\|%stopzone\>" 423 syn region texZone start="\\verb\*\=#" end="#\|%stopzone\>" 424else 425 if b:tex_stylish 426 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>" 427 else 428 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>" 429 endif 430endif 431 432" Tex Reference Zones: {{{1 433syn region texZone matchgroup=texStatement start="@samp{" end="}\|%stopzone\>" contains=@texRefGroup 434syn region texRefZone matchgroup=texStatement start="\\nocite{" end="}\|%stopzone\>" contains=@texRefGroup 435syn region texRefZone matchgroup=texStatement start="\\bibliography{" end="}\|%stopzone\>" contains=@texRefGroup 436syn region texRefZone matchgroup=texStatement start="\\label{" end="}\|%stopzone\>" contains=@texRefGroup 437syn region texRefZone matchgroup=texStatement start="\\\(page\|eq\)ref{" end="}\|%stopzone\>" contains=@texRefGroup 438syn region texRefZone matchgroup=texStatement start="\\v\=ref{" end="}\|%stopzone\>" contains=@texRefGroup 439syn match texRefZone '\\cite\%([tp]\*\=\)\=' nextgroup=texRefOption,texCite 440syn region texRefOption contained matchgroup=Delimiter start='\[' end=']' contains=@texRefGroup nextgroup=texRefOption,texCite 441syn region texCite contained matchgroup=Delimiter start='{' end='}' contains=@texRefGroup 442 443" Handle newcommand, newenvironment : {{{1 444syn match texNewCmd "\\newcommand\>" nextgroup=texCmdName skipwhite skipnl 445syn region texCmdName contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texCmdArgs,texCmdBody skipwhite skipnl 446syn region texCmdArgs contained matchgroup=Delimiter start="\["rs=s+1 end="]" nextgroup=texCmdBody skipwhite skipnl 447syn region texCmdBody contained matchgroup=Delimiter start="{"rs=s+1 skip="\\\\\|\\[{}]" matchgroup=Delimiter end="}" contains=@texCmdGroup 448syn match texNewEnv "\\newenvironment\>" nextgroup=texEnvName skipwhite skipnl 449syn region texEnvName contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texEnvBgn skipwhite skipnl 450syn region texEnvBgn contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texEnvEnd skipwhite skipnl contains=@texEnvGroup 451syn region texEnvEnd contained matchgroup=Delimiter start="{"rs=s+1 end="}" skipwhite skipnl contains=@texEnvGroup 452 453" Definitions/Commands: {{{1 454syn match texDefCmd "\\def\>" nextgroup=texDefName skipwhite skipnl 455if b:tex_stylish 456 syn match texDefName contained "\\[a-zA-Z@]\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl 457 syn match texDefName contained "\\[^a-zA-Z@]" nextgroup=texDefParms,texCmdBody skipwhite skipnl 458else 459 syn match texDefName contained "\\\a\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl 460 syn match texDefName contained "\\\A" nextgroup=texDefParms,texCmdBody skipwhite skipnl 461endif 462syn match texDefParms contained "#[^{]*" contains=texDefParm nextgroup=texCmdBody skipwhite skipnl 463syn match texDefParm contained "#\d\+" 464 465" TeX Lengths: {{{1 466syn match texLength "\<\d\+\([.,]\d\+\)\=\s*\(true\)\=\s*\(bp\|cc\|cm\|dd\|em\|ex\|in\|mm\|pc\|pt\|sp\)\>" 467 468" TeX String Delimiters: {{{1 469syn match texString "\(``\|''\|,,\)" 470 471" makeatletter -- makeatother sections 472if !exists("g:tex_no_error") 473 syn region texStyle matchgroup=texStatement start='\\makeatletter' end='\\makeatother' contains=@texStyleGroup contained 474 syn match texStyleStatement "\\[a-zA-Z@]\+" contained 475 syn region texStyleMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texStyleGroup,texError contained 476 syn region texStyleMatcher matchgroup=Delimiter start="\[" end="]" contains=@texStyleGroup,texError contained 477endif 478 479" Conceal mode support (supports set cole=1) {{{1 480if has("conceal") && &enc == 'utf-8' 481 482 " Math Symbols {{{2 483 syn match texMathSymbol '\\left(' contained conceal cchar=( 484 syn match texMathSymbol '\\right)' contained conceal cchar=) 485 syn match texMathSymbol '\\left{' contained conceal cchar={ 486 syn match texMathSymbol '\\right}' contained conceal cchar=} 487 syn match texMathSymbol '\\cdot\>' contained conceal cchar=· 488 syn match texMathSymbol '\\leq\>' contained conceal cchar=≤ 489 syn match texMathSymbol '\\geq\>' contained conceal cchar=≥ 490 syn match texMathSymbol '\\cdot\>' contained conceal cchar=· 491 syn match texMathSymbol '\\times\>' contained conceal cchar=× 492 syn match texMathSymbol '\\div\>' contained conceal cchar=÷ 493 syn match texMathSymbol '\\pm\>' contained conceal cchar=± 494 syn match texMathSymbol '\\neq\>' contained conceal cchar=≠ 495 syn match texMathSymbol '\\cong\>' contained conceal cchar=≅ 496 497 " Greek {{{2 498 fun! s:Greek(group,pat,cchar) 499 exe 'syn match '.a:group." '".a:pat."' contained conceal cchar=".a:cchar 500 endfun 501 call s:Greek('texGreek','\\alpha\>' ,'α') 502 call s:Greek('texGreek','\\beta\>' ,'β') 503 call s:Greek('texGreek','\\gamma\>' ,'γ') 504 call s:Greek('texGreek','\\delta\>' ,'δ') 505 call s:Greek('texGreek','\\epsilon\>' ,'ϵ') 506 call s:Greek('texGreek','\\varepsilon\>' ,'ε') 507 call s:Greek('texGreek','\\zeta\>' ,'ζ') 508 call s:Greek('texGreek','\\eta\>' ,'η') 509 call s:Greek('texGreek','\\theta\>' ,'θ') 510 call s:Greek('texGreek','\\vartheta\>' ,'ϑ') 511 call s:Greek('texGreek','\\kappa\>' ,'κ') 512 call s:Greek('texGreek','\\lambda\>' ,'λ') 513 call s:Greek('texGreek','\\mu\>' ,'μ') 514 call s:Greek('texGreek','\\nu\>' ,'ν') 515 call s:Greek('texGreek','\\xi\>' ,'ξ') 516 call s:Greek('texGreek','\\pi\>' ,'π') 517 call s:Greek('texGreek','\\varpi\>' ,'ϖ') 518 call s:Greek('texGreek','\\rho\>' ,'ρ') 519 call s:Greek('texGreek','\\varrho\>' ,'ϱ') 520 call s:Greek('texGreek','\\sigma\>' ,'σ') 521 call s:Greek('texGreek','\\varsigma\>' ,'ς') 522 call s:Greek('texGreek','\\tau\>' ,'τ') 523 call s:Greek('texGreek','\\upsilon\>' ,'υ') 524 call s:Greek('texGreek','\\phi\>' ,'φ') 525 call s:Greek('texGreek','\\varphi\>' ,'ϕ') 526 call s:Greek('texGreek','\\chi\>' ,'χ') 527 call s:Greek('texGreek','\\psi\>' ,'ψ') 528 call s:Greek('texGreek','\\omega\>' ,'ω') 529 call s:Greek('texGreek','\\Gamma\>' ,'Γ') 530 call s:Greek('texGreek','\\Delta\>' ,'Δ') 531 call s:Greek('texGreek','\\Theta\>' ,'Θ') 532 call s:Greek('texGreek','\\Lambda\>' ,'Λ') 533 call s:Greek('texGreek','\\Xi\>' ,'Χ') 534 call s:Greek('texGreek','\\Pi\>' ,'Π') 535 call s:Greek('texGreek','\\Sigma\>' ,'Σ') 536 call s:Greek('texGreek','\\Upsilon\>' ,'Υ') 537 call s:Greek('texGreek','\\Phi\>' ,'Φ') 538 call s:Greek('texGreek','\\Psi\>' ,'Ψ') 539 call s:Greek('texGreek','\\Omega\>' ,'Ω') 540 delfun s:Greek 541 542 " Superscripts/Subscripts {{{2 543 syn region texSuperscript matchgroup=Delimiter start='\^{' end='}' contained concealends contains=texSuperscripts 544 syn region texSubscript matchgroup=Delimiter start='_{' end='}' contained concealends contains=texSubscripts 545 fun! s:SuperSub(group,leader,pat,cchar) 546 exe 'syn match '.a:group." '".a:leader.a:pat."' contained conceal cchar=".a:cchar 547 exe 'syn match '.a:group."s '".a:pat."' contained conceal cchar=".a:cchar.' nextgroup='.a:group.'s' 548 endfun 549 call s:SuperSub('texSuperscript','\^','0','⁰') 550 call s:SuperSub('texSuperscript','\^','1','¹') 551 call s:SuperSub('texSuperscript','\^','2','²') 552 call s:SuperSub('texSuperscript','\^','3','³') 553 call s:SuperSub('texSuperscript','\^','4','⁴') 554 call s:SuperSub('texSuperscript','\^','5','⁵') 555 call s:SuperSub('texSuperscript','\^','6','⁶') 556 call s:SuperSub('texSuperscript','\^','7','⁷') 557 call s:SuperSub('texSuperscript','\^','8','⁸') 558 call s:SuperSub('texSuperscript','\^','9','⁹') 559 call s:SuperSub('texSuperscript','\^','a','ᵃ') 560 call s:SuperSub('texSuperscript','\^','b','ᵇ') 561 call s:SuperSub('texSuperscript','\^','c','ᶜ') 562 call s:SuperSub('texSuperscript','\^','d','ᵈ') 563 call s:SuperSub('texSuperscript','\^','e','ᵉ') 564 call s:SuperSub('texSuperscript','\^','f','ᶠ') 565 call s:SuperSub('texSuperscript','\^','g','ᵍ') 566 call s:SuperSub('texSuperscript','\^','h','ʰ') 567 call s:SuperSub('texSuperscript','\^','i','ⁱ') 568 call s:SuperSub('texSuperscript','\^','j','ʲ') 569 call s:SuperSub('texSuperscript','\^','k','ᵏ') 570 call s:SuperSub('texSuperscript','\^','l','ˡ') 571 call s:SuperSub('texSuperscript','\^','m','ᵐ') 572 call s:SuperSub('texSuperscript','\^','n','ⁿ') 573 call s:SuperSub('texSuperscript','\^','o','ᵒ') 574 call s:SuperSub('texSuperscript','\^','p','ᵖ') 575 call s:SuperSub('texSuperscript','\^','r','ʳ') 576 call s:SuperSub('texSuperscript','\^','s','ˢ') 577 call s:SuperSub('texSuperscript','\^','t','ᵗ') 578 call s:SuperSub('texSuperscript','\^','u','ᵘ') 579 call s:SuperSub('texSuperscript','\^','v','ᵛ') 580 call s:SuperSub('texSuperscript','\^','w','ʷ') 581 call s:SuperSub('texSuperscript','\^','x','ˣ') 582 call s:SuperSub('texSuperscript','\^','y','ʸ') 583 call s:SuperSub('texSuperscript','\^','z','ᶻ') 584 call s:SuperSub('texSuperscript','\^','A','ᴬ') 585 call s:SuperSub('texSuperscript','\^','B','ᴮ') 586 call s:SuperSub('texSuperscript','\^','D','ᴰ') 587 call s:SuperSub('texSuperscript','\^','E','ᴱ') 588 call s:SuperSub('texSuperscript','\^','G','ᴳ') 589 call s:SuperSub('texSuperscript','\^','H','ᴴ') 590 call s:SuperSub('texSuperscript','\^','I','ᴵ') 591 call s:SuperSub('texSuperscript','\^','J','ᴶ') 592 call s:SuperSub('texSuperscript','\^','K','ᴷ') 593 call s:SuperSub('texSuperscript','\^','L','ᴸ') 594 call s:SuperSub('texSuperscript','\^','M','ᴹ') 595 call s:SuperSub('texSuperscript','\^','N','ᴺ') 596 call s:SuperSub('texSuperscript','\^','O','ᴼ') 597 call s:SuperSub('texSuperscript','\^','P','ᴾ') 598 call s:SuperSub('texSuperscript','\^','R','ᴿ') 599 call s:SuperSub('texSuperscript','\^','T','ᵀ') 600 call s:SuperSub('texSuperscript','\^','U','ᵁ') 601 call s:SuperSub('texSuperscript','\^','W','ᵂ') 602 call s:SuperSub('texSuperscript','\^','+','⁺') 603 call s:SuperSub('texSuperscript','\^','-','⁻') 604 call s:SuperSub('texSuperscript','\^','<','˂') 605 call s:SuperSub('texSuperscript','\^','>','˃') 606 call s:SuperSub('texSuperscript','\^','/','ˊ') 607 call s:SuperSub('texSuperscript','\^','(','⁽') 608 call s:SuperSub('texSuperscript','\^',')','⁾') 609 call s:SuperSub('texSuperscript','\^','\.','˙') 610 call s:SuperSub('texSuperscript','\^','=','˭') 611 call s:SuperSub('texSubscript','_','0','₀') 612 call s:SuperSub('texSubscript','_','1','₁') 613 call s:SuperSub('texSubscript','_','2','₂') 614 call s:SuperSub('texSubscript','_','3','₃') 615 call s:SuperSub('texSubscript','_','4','₄') 616 call s:SuperSub('texSubscript','_','5','₅') 617 call s:SuperSub('texSubscript','_','6','₆') 618 call s:SuperSub('texSubscript','_','7','₇') 619 call s:SuperSub('texSubscript','_','8','₈') 620 call s:SuperSub('texSubscript','_','9','₉') 621 call s:SuperSub('texSubscript','_','a','ₐ') 622 call s:SuperSub('texSubscript','_','e','ₑ') 623 call s:SuperSub('texSubscript','_','i','ᵢ') 624 call s:SuperSub('texSubscript','_','o','ₒ') 625 call s:SuperSub('texSubscript','_','u','ᵤ') 626 call s:SuperSub('texSubscript','_','+','₊') 627 call s:SuperSub('texSubscript','_','-','₋') 628 call s:SuperSub('texSubscript','_','/','ˏ') 629 call s:SuperSub('texSubscript','_','(','₍') 630 call s:SuperSub('texSubscript','_',')','₎') 631 call s:SuperSub('texSubscript','_','\.','‸') 632 call s:SuperSub('texSubscript','_','r','ᵣ') 633 call s:SuperSub('texSubscript','_','v','ᵥ') 634 call s:SuperSub('texSubscript','_','x','ₓ') 635 call s:SuperSub('texSubscript','_','\\beta\>' ,'ᵦ') 636 call s:SuperSub('texSubscript','_','\\delta\>','ᵨ') 637 call s:SuperSub('texSubscript','_','\\phi\>' ,'ᵩ') 638 call s:SuperSub('texSubscript','_','\\gamma\>','ᵧ') 639 call s:SuperSub('texSubscript','_','\\chi\>' ,'ᵪ') 640 delfun s:SuperSub 641 642 " Accented characters: {{{2 643 if b:tex_stylish 644 syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1 645 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1 646 else 647 fun! s:Accents(chr,...) 648 let i= 1 649 for accent in ["`","\\'","^",'"','\~',"r","v"] 650 if i > a:0 651 break 652 endif 653 if strlen(a:{i}) == 0 654 let i= i + 1 655 continue 656 endif 657 exe "syn match texAccent '\\\\".accent."{".a:chr."}' conceal cchar=".a:{i} 658 let i= i + 1 659 endfor 660 endfun 661 call s:Accents('a','à','á','â','ä','ã','å','ă') 662 call s:Accents('A','À','Á','Â','Ä','Ã','Å','Ă') 663 call s:Accents('C',"" ,'Ć','Ĉ',"" ,"" ,"" ,'Ć') 664 call s:Accents('e','è','é','ê','ë','ẽ',"" ,'ĕ') 665 call s:Accents('E','È','É','Ê','Ë','Ẽ',"" ,'Ė') 666 call s:Accents('i','ì','í','î','ï','ĩ',"" ,"ĭ") 667 call s:Accents('I','Ì','Í','Î','Ï','Ĩ',"" ,'Ĭ') 668 call s:Accents('o','ò','ó','ô','ö','õ',"" ,'ŏ') 669 call s:Accents('O','Ò','Ó','Ô','Ö','Õ',"" ,'Ŏ') 670 call s:Accents('r',"" ,'ŕ',"" ,"" ,"" ,"" ,'ř') 671 call s:Accents('R',"" ,'Ŕ',"" ,"" ,"" ,"" ,'Ř') 672 call s:Accents('s',"" ,'ś','ŝ',"" ,"" ,"" ,'š') 673 call s:Accents('S',"" ,'Ś','Ŝ',"" ,"" ,"" ,'Š') 674 call s:Accents('u','ù','ú','û','ü','ũ',"" ,'ŭ') 675 call s:Accents('U','Ù','Ú','Û','Ü','Ũ',"" ,'Ŭ') 676 call s:Accents('y','ỳ','ý','ŷ','ÿ','ỹ',"" ,"" ) 677 call s:Accents('Y','Ỳ','Ý','Ŷ','Ÿ','Ỹ',"" ,"" ) 678 delfun s:Accents 679 syn match texAccent '\\aa\>' conceal cchar=å 680 syn match texAccent '\\AA\>' conceal cchar=Å 681 syn match texAccent '\\k{a}' conceal cchar=ą 682 syn match texAccent '\\k{A}' conceal cchar=Ą 683 syn match texAccent '\\c{C}' conceal cchar=Ç 684 syn match texAccent '\\c{c}' conceal cchar=ç 685 syn match texAccent '\\\~{n}' conceal cchar=ñ 686 syn match texAccent '\\\~{N}' conceal cchar=Ñ 687 syn match texAccent '\\o\>' conceal cchar=ø 688 syn match texAccent '\\O\>' conceal cchar=Ø 689 syn match texAccent '\\H{o}' conceal cchar=ő 690 syn match texAccent '\\H{O}' conceal cchar=Ő 691 syn match texAccent '\\c{r}' conceal cchar=ŗ 692 syn match texLigature '\\AE\>' conceal cchar=Æ 693 syn match texLigature '\\ae\>' conceal cchar=æ 694 syn match texLigature '\\oe\>' conceal cchar=œ 695 syn match texLigature '\\OE\>' conceal cchar=Œ 696 syn match texLigature '\\ss\>' conceal cchar=ß 697 endif 698endif 699 700" --------------------------------------------------------------------- 701" LaTeX synchronization: {{{1 702syn sync maxlines=200 703syn sync minlines=50 704 705syn sync match texSyncStop groupthere NONE "%stopzone\>" 706 707" Synchronization: {{{1 708" The $..$ and $$..$$ make for impossible sync patterns 709" (one can't tell if a "$$" starts or stops a math zone by itself) 710" The following grouptheres coupled with minlines above 711" help improve the odds of good syncing. 712if !exists("tex_no_math") 713 syn sync match texSyncMathZoneA groupthere NONE "\\end{abstract}" 714 syn sync match texSyncMathZoneA groupthere NONE "\\end{center}" 715 syn sync match texSyncMathZoneA groupthere NONE "\\end{description}" 716 syn sync match texSyncMathZoneA groupthere NONE "\\end{enumerate}" 717 syn sync match texSyncMathZoneA groupthere NONE "\\end{itemize}" 718 syn sync match texSyncMathZoneA groupthere NONE "\\end{table}" 719 syn sync match texSyncMathZoneA groupthere NONE "\\end{tabular}" 720 syn sync match texSyncMathZoneA groupthere NONE "\\\(sub\)*section\>" 721endif 722 723" --------------------------------------------------------------------- 724" Highlighting: {{{1 725if did_tex_syntax_inits == 1 726 let did_tex_syntax_inits= 2 727 " TeX highlighting groups which should share similar highlighting 728 if !exists("g:tex_no_error") 729 if !exists("tex_no_math") 730 HiLink texBadMath texError 731 HiLink texMathDelimBad texError 732 HiLink texMathError texError 733 if !b:tex_stylish 734 HiLink texOnlyMath texError 735 endif 736 endif 737 HiLink texError Error 738 endif 739 740 HiLink texCite texRefZone 741 HiLink texDefCmd texDef 742 HiLink texDefName texDef 743 HiLink texDocType texCmdName 744 HiLink texDocTypeArgs texCmdArgs 745 HiLink texInputFileOpt texCmdArgs 746 HiLink texInputCurlies texDelimiter 747 HiLink texLigature texSpecialChar 748 if !exists("tex_no_math") 749 HiLink texMathDelimSet1 texMathDelim 750 HiLink texMathDelimSet2 texMathDelim 751 HiLink texMathDelimKey texMathDelim 752 HiLink texMathMatcher texMath 753 HiLink texMathZoneV texMath 754 HiLink texMathZoneW texMath 755 HiLink texMathZoneX texMath 756 HiLink texMathZoneY texMath 757 HiLink texMathZoneV texMath 758 HiLink texMathZoneZ texMath 759 endif 760 HiLink texSectionMarker texCmdName 761 HiLink texSectionName texSection 762 HiLink texSpaceCode texStatement 763 HiLink texStyleStatement texStatement 764 HiLink texTypeSize texType 765 HiLink texTypeStyle texType 766 767 " Basic TeX highlighting groups 768 HiLink texCmdArgs Number 769 HiLink texCmdName Statement 770 HiLink texComment Comment 771 HiLink texDef Statement 772 HiLink texDefParm Special 773 HiLink texDelimiter Delimiter 774 HiLink texInput Special 775 HiLink texInputFile Special 776 HiLink texLength Number 777 HiLink texMath Special 778 HiLink texMathDelim Statement 779 HiLink texMathOper Operator 780 HiLink texNewCmd Statement 781 HiLink texNewEnv Statement 782 HiLink texOption Number 783 HiLink texRefZone Special 784 HiLink texSection PreCondit 785 HiLink texSpaceCodeChar Special 786 HiLink texSpecialChar SpecialChar 787 HiLink texStatement Statement 788 HiLink texString String 789 HiLink texTodo Todo 790 HiLink texType Type 791 HiLink texZone PreCondit 792 793 delcommand HiLink 794endif 795 796" Current Syntax: {{{1 797unlet b:extfname 798let b:current_syntax = "tex" 799" vim: ts=8 fdm=marker 800