1" Vim syntax file 2" Language: TeX 3" Maintainer: Charles E. Campbell <[email protected]> 4" Last Change: Mar 11, 2013 5" Version: 78 6" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TEX 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 40let s:keepcpo= &cpo 41set cpo&vim 42scriptencoding utf-8 43 44" Define the default highlighting. {{{1 45" For version 5.7 and earlier: only when not done already 46" For version 5.8 and later: only when an item doesn't have highlighting yet 47if version >= 508 || !exists("did_tex_syntax_inits") 48 let did_tex_syntax_inits = 1 49 if version < 508 50 command -nargs=+ HiLink hi link <args> 51 else 52 command -nargs=+ HiLink hi def link <args> 53 endif 54endif 55if exists("g:tex_no_error") && g:tex_no_error 56 let s:tex_no_error= 1 57endif 58 59" by default, enable all region-based highlighting 60let s:tex_fast= "bcmMprsSvV" 61if exists("g:tex_fast") 62 if type(g:tex_fast) != 1 63 " g:tex_fast exists and is not a string, so 64 " turn off all optional region-based highighting 65 let s:tex_fast= "" 66 else 67 let s:tex_fast= g:tex_fast 68 endif 69 let s:tex_no_error= 1 70else 71 let s:tex_fast= "bcmMprsSvV" 72endif 73 74" let user determine which classes of concealment will be supported 75" a=accents/ligatures d=delimiters m=math symbols g=Greek s=superscripts/subscripts 76if !exists("g:tex_conceal") 77 let s:tex_conceal= 'abdmgs' 78else 79 let s:tex_conceal= g:tex_conceal 80endif 81 82" Determine whether or not to use "*.sty" mode {{{1 83" The user may override the normal determination by setting 84" g:tex_stylish to 1 (for "*.sty" mode) 85" or to 0 else (normal "*.tex" mode) 86" or on a buffer-by-buffer basis with b:tex_stylish 87let s:extfname=expand("%:e") 88if exists("g:tex_stylish") 89 let b:tex_stylish= g:tex_stylish 90elseif !exists("b:tex_stylish") 91 if s:extfname == "sty" || s:extfname == "cls" || s:extfname == "clo" || s:extfname == "dtx" || s:extfname == "ltx" 92 let b:tex_stylish= 1 93 else 94 let b:tex_stylish= 0 95 endif 96endif 97 98" handle folding {{{1 99if !exists("g:tex_fold_enabled") 100 let g:tex_fold_enabled= 0 101elseif g:tex_fold_enabled && !has("folding") 102 let g:tex_fold_enabled= 0 103 echomsg "Ignoring g:tex_fold_enabled=".g:tex_fold_enabled."; need to re-compile vim for +fold support" 104endif 105if g:tex_fold_enabled && &fdm == "manual" 106 setl fdm=syntax 107endif 108 109" (La)TeX keywords: uses the characters 0-9,a-z,A-Z,192-255 only... {{{1 110" but _ is the only one that causes problems. 111" One may override this iskeyword setting by providing 112" g:tex_isk 113if exists("g:tex_isk") 114 exe "setlocal isk=".g:tex_isk 115else 116 setlocal isk=48-57,a-z,A-Z,192-255 117endif 118if b:tex_stylish 119 setlocal isk+=@-@ 120endif 121if exists("g:tex_nospell") && g:tex_nospell && !exists("g:tex_comment_nospell") 122 let g:tex_comment_nospell= 1 123endif 124 125" Clusters: {{{1 126" -------- 127syn cluster texCmdGroup contains=texCmdBody,texComment,texDefParm,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texBeginEnd,texBeginEndName,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle 128if !exists("s:tex_no_error") 129 syn cluster texCmdGroup add=texMathError 130endif 131syn cluster texEnvGroup contains=texMatcher,texMathDelim,texSpecialChar,texStatement 132syn 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,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texBoldStyle,texItalStyle,texNoSpell 133syn cluster texBoldGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texBoldStyle,texBoldItalStyle,texNoSpell 134syn cluster texItalGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texItalStyle,texItalBoldStyle,texNoSpell 135if !exists("g:tex_nospell") || !g:tex_nospell 136 syn 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 137 syn 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 138else 139 syn 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 140 syn 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,texStyleMatcher 141endif 142syn cluster texPreambleMatchGroup 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 143syn cluster texRefGroup contains=texMatcher,texComment,texDelimiter 144if !exists("tex_no_math") 145 syn cluster texMathZones contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ 146 syn cluster texMatchGroup add=@texMathZones 147 syn cluster texMathDelimGroup contains=texMathDelimBad,texMathDelimKey,texMathDelimSet1,texMathDelimSet2 148 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 149 syn cluster texMathZoneGroup contains=texComment,texDelimiter,texLength,texMathDelim,texMathMatcher,texMathOper,texMathSymbol,texMathText,texRefZone,texSpecialChar,texStatement,texTypeSize,texTypeStyle 150 if !exists("s:tex_no_error") 151 syn cluster texMathMatchGroup add=texMathError 152 syn cluster texMathZoneGroup add=texMathError 153 endif 154 syn cluster texMathZoneGroup add=@NoSpell 155 " following used in the \part \chapter \section \subsection \subsubsection 156 " \paragraph \subparagraph \author \title highlighting 157 syn cluster texDocGroup contains=texPartZone,@texPartGroup 158 syn cluster texPartGroup contains=texChapterZone,texSectionZone,texParaZone 159 syn cluster texChapterGroup contains=texSectionZone,texParaZone 160 syn cluster texSectionGroup contains=texSubSectionZone,texParaZone 161 syn cluster texSubSectionGroup contains=texSubSubSectionZone,texParaZone 162 syn cluster texSubSubSectionGroup contains=texParaZone 163 syn cluster texParaGroup contains=texSubParaZone 164 if has("conceal") && &enc == 'utf-8' 165 syn cluster texMathZoneGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol 166 syn cluster texMathMatchGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol 167 endif 168endif 169 170" Try to flag {} and () mismatches: {{{1 171if s:tex_fast =~ 'm' 172 if !exists("s:tex_no_error") 173 syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texMatchGroup,texError 174 syn region texMatcher matchgroup=Delimiter start="\[" end="]" contains=@texMatchGroup,texError,@NoSpell 175 else 176 syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texMatchGroup 177 syn region texMatcher matchgroup=Delimiter start="\[" end="]" contains=@texMatchGroup 178 endif 179 if !exists("g:tex_nospell") || !g:tex_nospell 180 syn region texParen start="(" end=")" contains=@texMatchGroup,@Spell 181 else 182 syn region texParen start="(" end=")" contains=@texMatchGroup 183 endif 184endif 185if !exists("s:tex_no_error") 186 syn match texError "[}\])]" 187endif 188if s:tex_fast =~ 'M' 189 if !exists("tex_no_math") 190 if !exists("s:tex_no_error") 191 syn match texMathError "}" contained 192 endif 193 syn region texMathMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\}" end="}" end="%stopzone\>" contained contains=@texMathMatchGroup 194 endif 195endif 196 197" TeX/LaTeX keywords: {{{1 198" Instead of trying to be All Knowing, I just match \..alphameric.. 199" Note that *.tex files may not have "@" in their \commands 200if exists("g:tex_tex") || b:tex_stylish 201 syn match texStatement "\\[a-zA-Z@]\+" 202else 203 syn match texStatement "\\\a\+" 204 if !exists("s:tex_no_error") 205 syn match texError "\\\a*@[a-zA-Z@]*" 206 endif 207endif 208 209" TeX/LaTeX delimiters: {{{1 210syn match texDelimiter "&" 211syn match texDelimiter "\\\\" 212syn match texDelimiter "[{}]" 213 214" Tex/Latex Options: {{{1 215syn match texOption "[^\\]\zs#\d\+\|^#\d\+" 216 217" texAccent (tnx to Karim Belabas) avoids annoying highlighting for accents: {{{1 218if b:tex_stylish 219 syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1 220 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1 221else 222 syn match texAccent "\\[bcdvuH]\A"me=e-1 223 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)\A"me=e-1 224endif 225syn match texAccent "\\[bcdvuH]$" 226syn match texAccent +\\[=^.\~"`']+ 227syn match texAccent +\\['=t'.c^ud"vb~Hr]{\a}+ 228syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)$" 229 230" \begin{}/\end{} section markers: {{{1 231syn match texBeginEnd "\\begin\>\|\\end\>" nextgroup=texBeginEndName 232if s:tex_fast =~ 'm' 233 syn region texBeginEndName matchgroup=Delimiter start="{" end="}" contained nextgroup=texBeginEndModifier contains=texComment 234 syn region texBeginEndModifier matchgroup=Delimiter start="\[" end="]" contained contains=texComment,@NoSpell 235endif 236 237" \documentclass, \documentstyle, \usepackage: {{{1 238syn match texDocType "\\documentclass\>\|\\documentstyle\>\|\\usepackage\>" nextgroup=texBeginEndName,texDocTypeArgs 239if s:tex_fast =~ 'm' 240 syn region texDocTypeArgs matchgroup=Delimiter start="\[" end="]" contained nextgroup=texBeginEndName contains=texComment,@NoSpell 241endif 242 243" Preamble syntax-based folding support: {{{1 244if g:tex_fold_enabled && has("folding") 245 syn region texPreamble transparent fold start='\zs\\documentclass\>' end='\ze\\begin{document}' contains=texStyle,@texPreambleMatchGroup 246endif 247 248" TeX input: {{{1 249syn match texInput "\\input\s\+[a-zA-Z/.0-9_^]\+"hs=s+7 contains=texStatement 250syn match texInputFile "\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt 251syn match texInputFile "\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt 252syn match texInputCurlies "[{}]" contained 253if s:tex_fast =~ 'm' 254 syn region texInputFileOpt matchgroup=Delimiter start="\[" end="\]" contained contains=texComment 255endif 256 257" Type Styles (LaTeX 2.09): {{{1 258syn match texTypeStyle "\\rm\>" 259syn match texTypeStyle "\\em\>" 260syn match texTypeStyle "\\bf\>" 261syn match texTypeStyle "\\it\>" 262syn match texTypeStyle "\\sl\>" 263syn match texTypeStyle "\\sf\>" 264syn match texTypeStyle "\\sc\>" 265syn match texTypeStyle "\\tt\>" 266 267" Type Styles: attributes, commands, families, etc (LaTeX2E): {{{1 268if s:tex_conceal !~ 'b' 269 syn match texTypeStyle "\\textbf\>" 270 syn match texTypeStyle "\\textit\>" 271endif 272syn match texTypeStyle "\\textmd\>" 273syn match texTypeStyle "\\textrm\>" 274syn match texTypeStyle "\\textsc\>" 275syn match texTypeStyle "\\textsf\>" 276syn match texTypeStyle "\\textsl\>" 277syn match texTypeStyle "\\texttt\>" 278syn match texTypeStyle "\\textup\>" 279syn match texTypeStyle "\\emph\>" 280 281syn match texTypeStyle "\\mathbb\>" 282syn match texTypeStyle "\\mathbf\>" 283syn match texTypeStyle "\\mathcal\>" 284syn match texTypeStyle "\\mathfrak\>" 285syn match texTypeStyle "\\mathit\>" 286syn match texTypeStyle "\\mathnormal\>" 287syn match texTypeStyle "\\mathrm\>" 288syn match texTypeStyle "\\mathsf\>" 289syn match texTypeStyle "\\mathtt\>" 290 291syn match texTypeStyle "\\rmfamily\>" 292syn match texTypeStyle "\\sffamily\>" 293syn match texTypeStyle "\\ttfamily\>" 294 295syn match texTypeStyle "\\itshape\>" 296syn match texTypeStyle "\\scshape\>" 297syn match texTypeStyle "\\slshape\>" 298syn match texTypeStyle "\\upshape\>" 299 300syn match texTypeStyle "\\bfseries\>" 301syn match texTypeStyle "\\mdseries\>" 302 303" Some type sizes: {{{1 304syn match texTypeSize "\\tiny\>" 305syn match texTypeSize "\\scriptsize\>" 306syn match texTypeSize "\\footnotesize\>" 307syn match texTypeSize "\\small\>" 308syn match texTypeSize "\\normalsize\>" 309syn match texTypeSize "\\large\>" 310syn match texTypeSize "\\Large\>" 311syn match texTypeSize "\\LARGE\>" 312syn match texTypeSize "\\huge\>" 313syn match texTypeSize "\\Huge\>" 314 315" Spacecodes (TeX'isms): {{{1 316" \mathcode`\^^@="2201 \delcode`\(="028300 \sfcode`\)=0 \uccode`X=`X \lccode`x=`x 317syn match texSpaceCode "\\\(math\|cat\|del\|lc\|sf\|uc\)code`"me=e-1 nextgroup=texSpaceCodeChar 318syn match texSpaceCodeChar "`\\\=.\(\^.\)\==\(\d\|\"\x\{1,6}\|`.\)" contained 319 320" Sections, subsections, etc: {{{1 321if s:tex_fast =~ 'p' 322 if !exists("g:tex_nospell") || !g:tex_nospell 323 if g:tex_fold_enabled && has("folding") 324 syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' fold contains=@texFoldGroup,@texDocGroup,@Spell 325 syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texPartGroup,@Spell 326 syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texChapterGroup,@Spell 327 syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texSectionGroup,@Spell 328 syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texSubSectionGroup,@Spell 329 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 330 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 331 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 332 syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' fold contains=@texFoldGroup,@Spell 333 syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' fold contains=@texFoldGroup,@Spell 334 else 335 syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup,@Spell 336 syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup,@Spell 337 syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup,@Spell 338 syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup,@Spell 339 syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup,@Spell 340 syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSubSectionGroup,@Spell 341 syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texParaGroup,@Spell 342 syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@Spell 343 syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup,@Spell 344 syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup,@Spell 345 endif 346 else 347 if g:tex_fold_enabled && has("folding") 348 syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' fold contains=@texFoldGroup,@texDocGroup 349 syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texPartGroup 350 syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texChapterGroup 351 syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texSectionGroup 352 syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texSubSectionGroup 353 syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texSubSubSectionGroup 354 syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup,@texParaGroup 355 syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' fold contains=@texFoldGroup 356 syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' fold contains=@texFoldGroup 357 syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' fold contains=@texFoldGroup 358 else 359 syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup 360 syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup 361 syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup 362 syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup 363 syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup 364 syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSubSectionGroup 365 syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texParaGroup 366 syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup 367 syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup 368 syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup 369 endif 370 endif 371endif 372 373" particular support for bold and italic {{{1 374if s:tex_fast =~ 'b' 375 if s:tex_conceal =~ 'b' 376 syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" end="}" concealends contains=@texBoldGroup 377 syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*{" end="}" concealends contains=@texItalGroup 378 syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*{" end="}" concealends contains=@texItalGroup 379 syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" end="}" concealends contains=@texBoldGroup 380 endif 381endif 382 383" Bad Math (mismatched): {{{1 384if !exists("g:tex_no_math") && !exists("s:tex_no_error") 385 syn match texBadMath "\\end\s*{\s*\(array\|gathered\|bBpvV]matrix\|split\|subequations\|smallmatrix\|xxalignat\)\s*}" 386 syn match texBadMath "\\end\s*{\s*\(align\|alignat\|displaymath\|displaymath\|eqnarray\|equation\|flalign\|gather\|math\|multline\|xalignat\)\*\=\s*}" 387 syn match texBadMath "\\[\])]" 388endif 389 390" Math Zones: {{{1 391if !exists("tex_no_math") 392 " TexNewMathZone: function creates a mathzone with the given suffix and mathzone name. {{{2 393 " Starred forms are created if starform is true. Starred 394 " forms have syntax group and synchronization groups with a 395 " "S" appended. Handles: cluster, syntax, sync, and HiLink. 396 fun! TexNewMathZone(sfx,mathzone,starform) 397 let grpname = "texMathZone".a:sfx 398 let syncname = "texSyncMathZone".a:sfx 399 if g:tex_fold_enabled 400 let foldcmd= " fold" 401 else 402 let foldcmd= "" 403 endif 404 exe "syn cluster texMathZones add=".grpname 405 if s:tex_fast =~ 'M' 406 exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd 407 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' 408 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' 409 endif 410 exe 'hi def link '.grpname.' texMath' 411 if a:starform 412 let grpname = "texMathZone".a:sfx.'S' 413 let syncname = "texSyncMathZone".a:sfx.'S' 414 exe "syn cluster texMathZones add=".grpname 415 if s:tex_fast =~ 'M' 416 exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd 417 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' 418 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' 419 endif 420 exe 'hi def link '.grpname.' texMath' 421 endif 422 endfun 423 424 " Standard Math Zones: {{{2 425 call TexNewMathZone("A","align",1) 426 call TexNewMathZone("B","alignat",1) 427 call TexNewMathZone("C","displaymath",1) 428 call TexNewMathZone("D","eqnarray",1) 429 call TexNewMathZone("E","equation",1) 430 call TexNewMathZone("F","flalign",1) 431 call TexNewMathZone("G","gather",1) 432 call TexNewMathZone("H","math",1) 433 call TexNewMathZone("I","multline",1) 434 call TexNewMathZone("J","subequations",0) 435 call TexNewMathZone("K","xalignat",1) 436 call TexNewMathZone("L","xxalignat",0) 437 438 " Inline Math Zones: {{{2 439 if s:tex_fast =~ 'M' 440 if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~ 'd' 441 syn region texMathZoneV matchgroup=Delimiter start="\\(" matchgroup=Delimiter end="\\)\|%stopzone\>" keepend concealends contains=@texMathZoneGroup 442 syn region texMathZoneW matchgroup=Delimiter start="\\\[" matchgroup=Delimiter end="\\]\|%stopzone\>" keepend concealends contains=@texMathZoneGroup 443 syn region texMathZoneX matchgroup=Delimiter start="\$" skip="\\\\\|\\\$" matchgroup=Delimiter end="\$" end="%stopzone\>" concealends contains=@texMathZoneGroup 444 syn region texMathZoneY matchgroup=Delimiter start="\$\$" matchgroup=Delimiter end="\$\$" end="%stopzone\>" concealends keepend contains=@texMathZoneGroup 445 else 446 syn region texMathZoneV matchgroup=Delimiter start="\\(" matchgroup=Delimiter end="\\)\|%stopzone\>" keepend contains=@texMathZoneGroup 447 syn region texMathZoneW matchgroup=Delimiter start="\\\[" matchgroup=Delimiter end="\\]\|%stopzone\>" keepend contains=@texMathZoneGroup 448 syn region texMathZoneX matchgroup=Delimiter start="\$" skip="\\\\\|\\\$" matchgroup=Delimiter end="\$" end="%stopzone\>" contains=@texMathZoneGroup 449 syn region texMathZoneY matchgroup=Delimiter start="\$\$" matchgroup=Delimiter end="\$\$" end="%stopzone\>" keepend contains=@texMathZoneGroup 450 endif 451 syn region texMathZoneZ matchgroup=texStatement start="\\ensuremath\s*{" matchgroup=texStatement end="}" end="%stopzone\>" contains=@texMathZoneGroup 452 endif 453 454 syn match texMathOper "[_^=]" contained 455 456 " Text Inside Math Zones: {{{2 457 if s:tex_fast =~ 'M' 458 if !exists("g:tex_nospell") || !g:tex_nospell 459 syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{' end='}' contains=@texFoldGroup,@Spell 460 else 461 syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{' end='}' contains=@texFoldGroup 462 endif 463 endif 464 465 " \left..something.. and \right..something.. support: {{{2 466 syn match texMathDelimBad contained "\S" 467 if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~ 'm' 468 syn match texMathDelim contained "\\left\\{\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar={ 469 syn match texMathDelim contained "\\right\\}\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar=} 470 let s:texMathDelimList=[ 471 \ ['<' , '<'] , 472 \ ['>' , '>'] , 473 \ ['(' , '('] , 474 \ [')' , ')'] , 475 \ ['\[' , '['] , 476 \ [']' , ']'] , 477 \ ['\\{' , '{'] , 478 \ ['\\}' , '}'] , 479 \ ['|' , '|'] , 480 \ ['\\|' , '‖'] , 481 \ ['\\backslash' , '\'] , 482 \ ['\\downarrow' , '↓'] , 483 \ ['\\Downarrow' , '⇓'] , 484 \ ['\\langle' , '<'] , 485 \ ['\\lbrace' , '['] , 486 \ ['\\lceil' , '⌈'] , 487 \ ['\\lfloor' , '⌊'] , 488 \ ['\\lgroup' , '⌊'] , 489 \ ['\\lmoustache' , '⎛'] , 490 \ ['\\rangle' , '>'] , 491 \ ['\\rbrace' , ']'] , 492 \ ['\\rceil' , '⌉'] , 493 \ ['\\rfloor' , '⌋'] , 494 \ ['\\rgroup' , '⌋'] , 495 \ ['\\rmoustache' , '⎞'] , 496 \ ['\\uparrow' , '↑'] , 497 \ ['\\Uparrow' , '↑'] , 498 \ ['\\updownarrow', '↕'] , 499 \ ['\\Updownarrow', '⇕']] 500 syn match texMathDelim '\\[bB]igg\=[lr]' contained nextgroup=texMathDelimBad 501 for texmath in s:texMathDelimList 502 exe "syn match texMathDelim '\\\\[bB]igg\\=[lr]\\=".texmath[0]."' contained conceal cchar=".texmath[1] 503 endfor 504 505 else 506 syn match texMathDelim contained "\\\(left\|right\)\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad 507 syn match texMathDelim contained "\\[bB]igg\=[lr]\=\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad 508 syn match texMathDelimSet2 contained "\\" nextgroup=texMathDelimKey,texMathDelimBad 509 syn match texMathDelimSet1 contained "[<>()[\]|/.]\|\\[{}|]" 510 syn keyword texMathDelimKey contained backslash lceil lVert rgroup uparrow 511 syn keyword texMathDelimKey contained downarrow lfloor rangle rmoustache Uparrow 512 syn keyword texMathDelimKey contained Downarrow lgroup rbrace rvert updownarrow 513 syn keyword texMathDelimKey contained langle lmoustache rceil rVert Updownarrow 514 syn keyword texMathDelimKey contained lbrace lvert rfloor 515 endif 516 syn match texMathDelim contained "\\\(left\|right\)arrow\>\|\<\([aA]rrow\|brace\)\=vert\>" 517 syn match texMathDelim contained "\\lefteqn\>" 518endif 519 520" Special TeX characters ( \$ \& \% \# \{ \} \_ \S \P ) : {{{1 521syn match texSpecialChar "\\[$&%#{}_]" 522if b:tex_stylish 523 syn match texSpecialChar "\\[SP@][^a-zA-Z@]"me=e-1 524else 525 syn match texSpecialChar "\\[SP@]\A"me=e-1 526endif 527syn match texSpecialChar "\\\\" 528if !exists("tex_no_math") 529 syn match texOnlyMath "[_^]" 530endif 531syn match texSpecialChar "\^\^[0-9a-f]\{2}\|\^\^\S" 532 533" Comments: {{{1 534" Normal TeX LaTeX : %.... 535" Documented TeX Format: ^^A... -and- leading %s (only) 536if !exists("g:tex_comment_nospell") || !g:tex_comment_nospell 537 syn cluster texCommentGroup contains=texTodo,@Spell 538else 539 syn cluster texCommentGroup contains=texTodo,@NoSpell 540endif 541syn case ignore 542syn keyword texTodo contained combak fixme todo xxx 543syn case match 544if s:extfname == "dtx" 545 syn match texComment "\^\^A.*$" contains=@texCommentGroup 546 syn match texComment "^%\+" contains=@texCommentGroup 547else 548 if g:tex_fold_enabled 549 " allows syntax-folding of 2 or more contiguous comment lines 550 " single-line comments are not folded 551 syn match texComment "%.*$" contains=@texCommentGroup 552 if s:tex_fast =~ 'c' 553 syn region texComment start="^\zs\s*%.*\_s*%" skip="^\s*%" end='^\ze\s*[^%]' fold 554 syn region texNoSpell contained fold matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell 555 endif 556 else 557 syn match texComment "%.*$" contains=@texCommentGroup 558 if s:tex_fast =~ 'c' 559 syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell 560 endif 561 endif 562endif 563 564" Separate lines used for verb` and verb# so that the end conditions {{{1 565" will appropriately terminate. 566" If g:tex_verbspell exists, then verbatim texZones will permit spellchecking there. 567if s:tex_fast =~ 'v' 568 if exists("g:tex_verbspell") && g:tex_verbspell 569 syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>" contains=@Spell 570 " listings package: 571 syn region texZone start="\\begin{lstlisting}" end="\\end{lstlisting}\|%stopzone\>" contains=@Spell 572 if version < 600 573 syn region texZone start="\\verb\*\=`" end="`\|%stopzone\>" contains=@Spell 574 syn region texZone start="\\verb\*\=#" end="#\|%stopzone\>" contains=@Spell 575 else 576 if b:tex_stylish 577 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>" contains=@Spell 578 else 579 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>" contains=@Spell 580 endif 581 endif 582 else 583 syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>" 584 if version < 600 585 syn region texZone start="\\verb\*\=`" end="`\|%stopzone\>" 586 syn region texZone start="\\verb\*\=#" end="#\|%stopzone\>" 587 else 588 if b:tex_stylish 589 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>" 590 else 591 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>" 592 endif 593 endif 594 endif 595endif 596 597" Tex Reference Zones: {{{1 598if s:tex_fast =~ 'r' 599 syn region texZone matchgroup=texStatement start="@samp{" end="}\|%stopzone\>" contains=@texRefGroup 600 syn region texRefZone matchgroup=texStatement start="\\nocite{" end="}\|%stopzone\>" contains=@texRefGroup 601 syn region texRefZone matchgroup=texStatement start="\\bibliography{" end="}\|%stopzone\>" contains=@texRefGroup 602 syn region texRefZone matchgroup=texStatement start="\\label{" end="}\|%stopzone\>" contains=@texRefGroup 603 syn region texRefZone matchgroup=texStatement start="\\\(page\|eq\)ref{" end="}\|%stopzone\>" contains=@texRefGroup 604 syn region texRefZone matchgroup=texStatement start="\\v\=ref{" end="}\|%stopzone\>" contains=@texRefGroup 605 syn region texRefOption contained matchgroup=Delimiter start='\[' end=']' contains=@texRefGroup,texRefZone nextgroup=texRefOption,texCite 606 syn region texCite contained matchgroup=Delimiter start='{' end='}' contains=@texRefGroup,texRefZone,texCite 607endif 608syn match texRefZone '\\cite\%([tp]\*\=\)\=' nextgroup=texRefOption,texCite 609 610" Handle newcommand, newenvironment : {{{1 611syn match texNewCmd "\\newcommand\>" nextgroup=texCmdName skipwhite skipnl 612if s:tex_fast =~ 'V' 613 syn region texCmdName contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texCmdArgs,texCmdBody skipwhite skipnl 614 syn region texCmdArgs contained matchgroup=Delimiter start="\["rs=s+1 end="]" nextgroup=texCmdBody skipwhite skipnl 615 syn region texCmdBody contained matchgroup=Delimiter start="{"rs=s+1 skip="\\\\\|\\[{}]" matchgroup=Delimiter end="}" contains=@texCmdGroup 616endif 617syn match texNewEnv "\\newenvironment\>" nextgroup=texEnvName skipwhite skipnl 618if s:tex_fast =~ 'V' 619 syn region texEnvName contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texEnvBgn skipwhite skipnl 620 syn region texEnvBgn contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texEnvEnd skipwhite skipnl contains=@texEnvGroup 621 syn region texEnvEnd contained matchgroup=Delimiter start="{"rs=s+1 end="}" skipwhite skipnl contains=@texEnvGroup 622endif 623 624" Definitions/Commands: {{{1 625syn match texDefCmd "\\def\>" nextgroup=texDefName skipwhite skipnl 626if b:tex_stylish 627 syn match texDefName contained "\\[a-zA-Z@]\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl 628 syn match texDefName contained "\\[^a-zA-Z@]" nextgroup=texDefParms,texCmdBody skipwhite skipnl 629else 630 syn match texDefName contained "\\\a\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl 631 syn match texDefName contained "\\\A" nextgroup=texDefParms,texCmdBody skipwhite skipnl 632endif 633syn match texDefParms contained "#[^{]*" contains=texDefParm nextgroup=texCmdBody skipwhite skipnl 634syn match texDefParm contained "#\d\+" 635 636" TeX Lengths: {{{1 637syn match texLength "\<\d\+\([.,]\d\+\)\=\s*\(true\)\=\s*\(bp\|cc\|cm\|dd\|em\|ex\|in\|mm\|pc\|pt\|sp\)\>" 638 639" TeX String Delimiters: {{{1 640syn match texString "\(``\|''\|,,\)" 641 642" makeatletter -- makeatother sections 643if !exists("s:tex_no_error") 644 if s:tex_fast =~ 'S' 645 syn region texStyle matchgroup=texStatement start='\\makeatletter' end='\\makeatother' contains=@texStyleGroup contained 646 endif 647 syn match texStyleStatement "\\[a-zA-Z@]\+" contained 648 if s:tex_fast =~ 'S' 649 syn region texStyleMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texStyleGroup,texError contained 650 syn region texStyleMatcher matchgroup=Delimiter start="\[" end="]" contains=@texStyleGroup,texError contained 651 endif 652endif 653 654" Conceal mode support (supports set cole=2) {{{1 655if has("conceal") && &enc == 'utf-8' 656 657 " Math Symbols {{{2 658 " (many of these symbols were contributed by Björn Winckler) 659 if s:tex_conceal =~ 'm' 660 let s:texMathList=[ 661 \ ['|' , '‖'], 662 \ ['aleph' , 'ℵ'], 663 \ ['amalg' , '∐'], 664 \ ['angle' , '∠'], 665 \ ['approx' , '≈'], 666 \ ['ast' , '∗'], 667 \ ['asymp' , '≍'], 668 \ ['backepsilon' , '∍'], 669 \ ['backsimeq' , '≃'], 670 \ ['backslash' , '∖'], 671 \ ['barwedge' , '⊼'], 672 \ ['because' , '∵'], 673 \ ['between' , '≬'], 674 \ ['bigcap' , '∩'], 675 \ ['bigcirc' , '○'], 676 \ ['bigcup' , '∪'], 677 \ ['bigodot' , '⊙'], 678 \ ['bigoplus' , '⊕'], 679 \ ['bigotimes' , '⊗'], 680 \ ['bigsqcup' , '⊔'], 681 \ ['bigtriangledown', '∇'], 682 \ ['bigtriangleup' , '∆'], 683 \ ['bigvee' , '⋁'], 684 \ ['bigwedge' , '⋀'], 685 \ ['blacksquare' , '∎'], 686 \ ['bot' , '⊥'], 687 \ ['bowtie' , '⋈'], 688 \ ['boxdot' , '⊡'], 689 \ ['boxminus' , '⊟'], 690 \ ['boxplus' , '⊞'], 691 \ ['boxtimes' , '⊠'], 692 \ ['bullet' , '•'], 693 \ ['bumpeq' , '≏'], 694 \ ['Bumpeq' , '≎'], 695 \ ['cap' , '∩'], 696 \ ['Cap' , '⋒'], 697 \ ['cdot' , '·'], 698 \ ['cdots' , '⋯'], 699 \ ['circ' , '∘'], 700 \ ['circeq' , '≗'], 701 \ ['circlearrowleft', '↺'], 702 \ ['circlearrowright', '↻'], 703 \ ['circledast' , '⊛'], 704 \ ['circledcirc' , '⊚'], 705 \ ['clubsuit' , '♣'], 706 \ ['complement' , '∁'], 707 \ ['cong' , '≅'], 708 \ ['coprod' , '∐'], 709 \ ['copyright' , '©'], 710 \ ['cup' , '∪'], 711 \ ['Cup' , '⋓'], 712 \ ['curlyeqprec' , '⋞'], 713 \ ['curlyeqsucc' , '⋟'], 714 \ ['curlyvee' , '⋎'], 715 \ ['curlywedge' , '⋏'], 716 \ ['dagger' , '†'], 717 \ ['dashv' , '⊣'], 718 \ ['ddagger' , '‡'], 719 \ ['ddots' , '⋱'], 720 \ ['diamond' , '⋄'], 721 \ ['diamondsuit' , '♢'], 722 \ ['div' , '÷'], 723 \ ['doteq' , '≐'], 724 \ ['doteqdot' , '≑'], 725 \ ['dotplus' , '∔'], 726 \ ['dots' , '…'], 727 \ ['dotsb' , '⋯'], 728 \ ['dotsc' , '…'], 729 \ ['dotsi' , '⋯'], 730 \ ['dotso' , '…'], 731 \ ['doublebarwedge' , '⩞'], 732 \ ['downarrow' , '↓'], 733 \ ['Downarrow' , '⇓'], 734 \ ['ell' , 'ℓ'], 735 \ ['emptyset' , '∅'], 736 \ ['eqcirc' , '≖'], 737 \ ['eqsim' , '≂'], 738 \ ['eqslantgtr' , '⪖'], 739 \ ['eqslantless' , '⪕'], 740 \ ['equiv' , '≡'], 741 \ ['exists' , '∃'], 742 \ ['fallingdotseq' , '≒'], 743 \ ['flat' , '♭'], 744 \ ['forall' , '∀'], 745 \ ['frown' , '⁔'], 746 \ ['ge' , '≥'], 747 \ ['geq' , '≥'], 748 \ ['geqq' , '≧'], 749 \ ['gets' , '←'], 750 \ ['gg' , '⟫'], 751 \ ['gneqq' , '≩'], 752 \ ['gtrdot' , '⋗'], 753 \ ['gtreqless' , '⋛'], 754 \ ['gtrless' , '≷'], 755 \ ['gtrsim' , '≳'], 756 \ ['hbar' , 'ℏ'], 757 \ ['heartsuit' , '♡'], 758 \ ['hookleftarrow' , '↩'], 759 \ ['hookrightarrow' , '↪'], 760 \ ['iiint' , '∭'], 761 \ ['iint' , '∬'], 762 \ ['Im' , 'ℑ'], 763 \ ['imath' , 'ɩ'], 764 \ ['in' , '∈'], 765 \ ['infty' , '∞'], 766 \ ['int' , '∫'], 767 \ ['lceil' , '⌈'], 768 \ ['ldots' , '…'], 769 \ ['le' , '≤'], 770 \ ['leadsto' , '↝'], 771 \ ['left(' , '('], 772 \ ['left\[' , '['], 773 \ ['left\\{' , '{'], 774 \ ['leftarrow' , '⟵'], 775 \ ['Leftarrow' , '⟸'], 776 \ ['leftarrowtail' , '↢'], 777 \ ['leftharpoondown', '↽'], 778 \ ['leftharpoonup' , '↼'], 779 \ ['leftrightarrow' , '↔'], 780 \ ['Leftrightarrow' , '⇔'], 781 \ ['leftrightsquigarrow', '↭'], 782 \ ['leftthreetimes' , '⋋'], 783 \ ['leq' , '≤'], 784 \ ['leq' , '≤'], 785 \ ['leqq' , '≦'], 786 \ ['lessdot' , '⋖'], 787 \ ['lesseqgtr' , '⋚'], 788 \ ['lesssim' , '≲'], 789 \ ['lfloor' , '⌊'], 790 \ ['ll' , '≪'], 791 \ ['lmoustache' , '╭'], 792 \ ['lneqq' , '≨'], 793 \ ['ltimes' , '⋉'], 794 \ ['mapsto' , '↦'], 795 \ ['measuredangle' , '∡'], 796 \ ['mid' , '∣'], 797 \ ['models' , '╞'], 798 \ ['mp' , '∓'], 799 \ ['nabla' , '∇'], 800 \ ['natural' , '♮'], 801 \ ['ncong' , '≇'], 802 \ ['ne' , '≠'], 803 \ ['nearrow' , '↗'], 804 \ ['neg' , '¬'], 805 \ ['neq' , '≠'], 806 \ ['nexists' , '∄'], 807 \ ['ngeq' , '≱'], 808 \ ['ngeqq' , '≱'], 809 \ ['ngtr' , '≯'], 810 \ ['ni' , '∋'], 811 \ ['nleftarrow' , '↚'], 812 \ ['nLeftarrow' , '⇍'], 813 \ ['nLeftrightarrow', '⇎'], 814 \ ['nleq' , '≰'], 815 \ ['nleqq' , '≰'], 816 \ ['nless' , '≮'], 817 \ ['nmid' , '∤'], 818 \ ['notin' , '∉'], 819 \ ['nprec' , '⊀'], 820 \ ['nrightarrow' , '↛'], 821 \ ['nRightarrow' , '⇏'], 822 \ ['nsim' , '≁'], 823 \ ['nsucc' , '⊁'], 824 \ ['ntriangleleft' , '⋪'], 825 \ ['ntrianglelefteq', '⋬'], 826 \ ['ntriangleright' , '⋫'], 827 \ ['ntrianglerighteq', '⋭'], 828 \ ['nvdash' , '⊬'], 829 \ ['nvDash' , '⊭'], 830 \ ['nVdash' , '⊮'], 831 \ ['nwarrow' , '↖'], 832 \ ['odot' , '⊙'], 833 \ ['oint' , '∮'], 834 \ ['ominus' , '⊖'], 835 \ ['oplus' , '⊕'], 836 \ ['oslash' , '⊘'], 837 \ ['otimes' , '⊗'], 838 \ ['owns' , '∋'], 839 \ ['P' , '¶'], 840 \ ['parallel' , '║'], 841 \ ['partial' , '∂'], 842 \ ['perp' , '⊥'], 843 \ ['pitchfork' , '⋔'], 844 \ ['pm' , '±'], 845 \ ['prec' , '≺'], 846 \ ['precapprox' , '⪷'], 847 \ ['preccurlyeq' , '≼'], 848 \ ['preceq' , '⪯'], 849 \ ['precnapprox' , '⪹'], 850 \ ['precneqq' , '⪵'], 851 \ ['precsim' , '≾'], 852 \ ['prime' , '′'], 853 \ ['prod' , '∏'], 854 \ ['propto' , '∝'], 855 \ ['rceil' , '⌉'], 856 \ ['Re' , 'ℜ'], 857 \ ['rfloor' , '⌋'], 858 \ ['right)' , ')'], 859 \ ['right]' , ']'], 860 \ ['right\\}' , '}'], 861 \ ['rightarrow' , '⟶'], 862 \ ['Rightarrow' , '⟹'], 863 \ ['rightarrowtail' , '↣'], 864 \ ['rightleftharpoons', '⇌'], 865 \ ['rightsquigarrow', '↝'], 866 \ ['rightthreetimes', '⋌'], 867 \ ['risingdotseq' , '≓'], 868 \ ['rmoustache' , '╮'], 869 \ ['rtimes' , '⋊'], 870 \ ['S' , '§'], 871 \ ['searrow' , '↘'], 872 \ ['setminus' , '∖'], 873 \ ['sharp' , '♯'], 874 \ ['sim' , '∼'], 875 \ ['simeq' , '⋍'], 876 \ ['smile' , '‿'], 877 \ ['spadesuit' , '♠'], 878 \ ['sphericalangle' , '∢'], 879 \ ['sqcap' , '⊓'], 880 \ ['sqcup' , '⊔'], 881 \ ['sqsubset' , '⊏'], 882 \ ['sqsubseteq' , '⊑'], 883 \ ['sqsupset' , '⊐'], 884 \ ['sqsupseteq' , '⊒'], 885 \ ['star' , '✫'], 886 \ ['subset' , '⊂'], 887 \ ['Subset' , '⋐'], 888 \ ['subseteq' , '⊆'], 889 \ ['subseteqq' , '⫅'], 890 \ ['subsetneq' , '⊊'], 891 \ ['subsetneqq' , '⫋'], 892 \ ['succ' , '≻'], 893 \ ['succapprox' , '⪸'], 894 \ ['succcurlyeq' , '≽'], 895 \ ['succeq' , '⪰'], 896 \ ['succnapprox' , '⪺'], 897 \ ['succneqq' , '⪶'], 898 \ ['succsim' , '≿'], 899 \ ['sum' , '∑'], 900 \ ['supset' , '⊃'], 901 \ ['Supset' , '⋑'], 902 \ ['supseteq' , '⊇'], 903 \ ['supseteqq' , '⫆'], 904 \ ['supsetneq' , '⊋'], 905 \ ['supsetneqq' , '⫌'], 906 \ ['surd' , '√'], 907 \ ['swarrow' , '↙'], 908 \ ['therefore' , '∴'], 909 \ ['times' , '×'], 910 \ ['to' , '→'], 911 \ ['top' , '⊤'], 912 \ ['triangle' , '∆'], 913 \ ['triangleleft' , '⊲'], 914 \ ['trianglelefteq' , '⊴'], 915 \ ['triangleq' , '≜'], 916 \ ['triangleright' , '⊳'], 917 \ ['trianglerighteq', '⊵'], 918 \ ['twoheadleftarrow', '↞'], 919 \ ['twoheadrightarrow', '↠'], 920 \ ['uparrow' , '↑'], 921 \ ['Uparrow' , '⇑'], 922 \ ['updownarrow' , '↕'], 923 \ ['Updownarrow' , '⇕'], 924 \ ['varnothing' , '∅'], 925 \ ['vartriangle' , '∆'], 926 \ ['vdash' , '⊢'], 927 \ ['vDash' , '⊨'], 928 \ ['Vdash' , '⊩'], 929 \ ['vdots' , '⋮'], 930 \ ['vee' , '∨'], 931 \ ['veebar' , '⊻'], 932 \ ['Vvdash' , '⊪'], 933 \ ['wedge' , '∧'], 934 \ ['wp' , '℘'], 935 \ ['wr' , '≀']] 936" \ ['jmath' , 'X'] 937" \ ['uminus' , 'X'] 938" \ ['uplus' , 'X'] 939 for texmath in s:texMathList 940 if texmath[0] =~ '\w$' 941 exe "syn match texMathSymbol '\\\\".texmath[0]."\\>' contained conceal cchar=".texmath[1] 942 else 943 exe "syn match texMathSymbol '\\\\".texmath[0]."' contained conceal cchar=".texmath[1] 944 endif 945 endfor 946 947 if &ambw == "double" 948 syn match texMathSymbol '\\gg\>' contained conceal cchar=≫ 949 syn match texMathSymbol '\\ll\>' contained conceal cchar=≪ 950 else 951 syn match texMathSymbol '\\gg\>' contained conceal cchar=⟫ 952 syn match texMathSymbol '\\ll\>' contained conceal cchar=⟪ 953 endif 954 955 syn match texMathSymbol '\\hat{a}' contained conceal cchar=â 956 syn match texMathSymbol '\\hat{A}' contained conceal cchar= 957 syn match texMathSymbol '\\hat{c}' contained conceal cchar=ĉ 958 syn match texMathSymbol '\\hat{C}' contained conceal cchar=Ĉ 959 syn match texMathSymbol '\\hat{e}' contained conceal cchar=ê 960 syn match texMathSymbol '\\hat{E}' contained conceal cchar=Ê 961 syn match texMathSymbol '\\hat{g}' contained conceal cchar=ĝ 962 syn match texMathSymbol '\\hat{G}' contained conceal cchar=Ĝ 963 syn match texMathSymbol '\\hat{i}' contained conceal cchar=î 964 syn match texMathSymbol '\\hat{I}' contained conceal cchar=Î 965 syn match texMathSymbol '\\hat{o}' contained conceal cchar=ô 966 syn match texMathSymbol '\\hat{O}' contained conceal cchar=Ô 967 syn match texMathSymbol '\\hat{s}' contained conceal cchar=ŝ 968 syn match texMathSymbol '\\hat{S}' contained conceal cchar=Ŝ 969 syn match texMathSymbol '\\hat{u}' contained conceal cchar=û 970 syn match texMathSymbol '\\hat{U}' contained conceal cchar=Û 971 syn match texMathSymbol '\\hat{w}' contained conceal cchar=ŵ 972 syn match texMathSymbol '\\hat{W}' contained conceal cchar=Ŵ 973 syn match texMathSymbol '\\hat{y}' contained conceal cchar=ŷ 974 syn match texMathSymbol '\\hat{Y}' contained conceal cchar=Ŷ 975 endif 976 977 " Greek {{{2 978 if s:tex_conceal =~ 'g' 979 fun! s:Greek(group,pat,cchar) 980 exe 'syn match '.a:group." '".a:pat."' contained conceal cchar=".a:cchar 981 endfun 982 call s:Greek('texGreek','\\alpha\>' ,'α') 983 call s:Greek('texGreek','\\beta\>' ,'β') 984 call s:Greek('texGreek','\\gamma\>' ,'γ') 985 call s:Greek('texGreek','\\delta\>' ,'δ') 986 call s:Greek('texGreek','\\epsilon\>' ,'ϵ') 987 call s:Greek('texGreek','\\varepsilon\>' ,'ε') 988 call s:Greek('texGreek','\\zeta\>' ,'ζ') 989 call s:Greek('texGreek','\\eta\>' ,'η') 990 call s:Greek('texGreek','\\theta\>' ,'θ') 991 call s:Greek('texGreek','\\vartheta\>' ,'ϑ') 992 call s:Greek('texGreek','\\kappa\>' ,'κ') 993 call s:Greek('texGreek','\\lambda\>' ,'λ') 994 call s:Greek('texGreek','\\mu\>' ,'μ') 995 call s:Greek('texGreek','\\nu\>' ,'ν') 996 call s:Greek('texGreek','\\xi\>' ,'ξ') 997 call s:Greek('texGreek','\\pi\>' ,'π') 998 call s:Greek('texGreek','\\varpi\>' ,'ϖ') 999 call s:Greek('texGreek','\\rho\>' ,'ρ') 1000 call s:Greek('texGreek','\\varrho\>' ,'ϱ') 1001 call s:Greek('texGreek','\\sigma\>' ,'σ') 1002 call s:Greek('texGreek','\\varsigma\>' ,'ς') 1003 call s:Greek('texGreek','\\tau\>' ,'τ') 1004 call s:Greek('texGreek','\\upsilon\>' ,'υ') 1005 call s:Greek('texGreek','\\phi\>' ,'φ') 1006 call s:Greek('texGreek','\\varphi\>' ,'ϕ') 1007 call s:Greek('texGreek','\\chi\>' ,'χ') 1008 call s:Greek('texGreek','\\psi\>' ,'ψ') 1009 call s:Greek('texGreek','\\omega\>' ,'ω') 1010 call s:Greek('texGreek','\\Gamma\>' ,'Γ') 1011 call s:Greek('texGreek','\\Delta\>' ,'Δ') 1012 call s:Greek('texGreek','\\Theta\>' ,'Θ') 1013 call s:Greek('texGreek','\\Lambda\>' ,'Λ') 1014 call s:Greek('texGreek','\\Xi\>' ,'Χ') 1015 call s:Greek('texGreek','\\Pi\>' ,'Π') 1016 call s:Greek('texGreek','\\Sigma\>' ,'Σ') 1017 call s:Greek('texGreek','\\Upsilon\>' ,'Υ') 1018 call s:Greek('texGreek','\\Phi\>' ,'Φ') 1019 call s:Greek('texGreek','\\Psi\>' ,'Ψ') 1020 call s:Greek('texGreek','\\Omega\>' ,'Ω') 1021 delfun s:Greek 1022 endif 1023 1024 " Superscripts/Subscripts {{{2 1025 if s:tex_conceal =~ 's' 1026 if s:tex_fast =~ 's' 1027 syn region texSuperscript matchgroup=Delimiter start='\^{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSuperscripts,texStatement,texSubscript,texSuperscript,texMathMatcher 1028 syn region texSubscript matchgroup=Delimiter start='_{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSubscripts,texStatement,texSubscript,texSuperscript,texMathMatcher 1029 endif 1030 fun! s:SuperSub(group,leader,pat,cchar) 1031 exe 'syn match '.a:group." '".a:leader.a:pat."' contained conceal cchar=".a:cchar 1032 exe 'syn match '.a:group."s '".a:pat."' contained conceal cchar=".a:cchar.' nextgroup='.a:group.'s' 1033 endfun 1034 call s:SuperSub('texSuperscript','\^','0','⁰') 1035 call s:SuperSub('texSuperscript','\^','1','¹') 1036 call s:SuperSub('texSuperscript','\^','2','²') 1037 call s:SuperSub('texSuperscript','\^','3','³') 1038 call s:SuperSub('texSuperscript','\^','4','⁴') 1039 call s:SuperSub('texSuperscript','\^','5','⁵') 1040 call s:SuperSub('texSuperscript','\^','6','⁶') 1041 call s:SuperSub('texSuperscript','\^','7','⁷') 1042 call s:SuperSub('texSuperscript','\^','8','⁸') 1043 call s:SuperSub('texSuperscript','\^','9','⁹') 1044 call s:SuperSub('texSuperscript','\^','a','ᵃ') 1045 call s:SuperSub('texSuperscript','\^','b','ᵇ') 1046 call s:SuperSub('texSuperscript','\^','c','ᶜ') 1047 call s:SuperSub('texSuperscript','\^','d','ᵈ') 1048 call s:SuperSub('texSuperscript','\^','e','ᵉ') 1049 call s:SuperSub('texSuperscript','\^','f','ᶠ') 1050 call s:SuperSub('texSuperscript','\^','g','ᵍ') 1051 call s:SuperSub('texSuperscript','\^','h','ʰ') 1052 call s:SuperSub('texSuperscript','\^','i','ⁱ') 1053 call s:SuperSub('texSuperscript','\^','j','ʲ') 1054 call s:SuperSub('texSuperscript','\^','k','ᵏ') 1055 call s:SuperSub('texSuperscript','\^','l','ˡ') 1056 call s:SuperSub('texSuperscript','\^','m','ᵐ') 1057 call s:SuperSub('texSuperscript','\^','n','ⁿ') 1058 call s:SuperSub('texSuperscript','\^','o','ᵒ') 1059 call s:SuperSub('texSuperscript','\^','p','ᵖ') 1060 call s:SuperSub('texSuperscript','\^','r','ʳ') 1061 call s:SuperSub('texSuperscript','\^','s','ˢ') 1062 call s:SuperSub('texSuperscript','\^','t','ᵗ') 1063 call s:SuperSub('texSuperscript','\^','u','ᵘ') 1064 call s:SuperSub('texSuperscript','\^','v','ᵛ') 1065 call s:SuperSub('texSuperscript','\^','w','ʷ') 1066 call s:SuperSub('texSuperscript','\^','x','ˣ') 1067 call s:SuperSub('texSuperscript','\^','y','ʸ') 1068 call s:SuperSub('texSuperscript','\^','z','ᶻ') 1069 call s:SuperSub('texSuperscript','\^','A','ᴬ') 1070 call s:SuperSub('texSuperscript','\^','B','ᴮ') 1071 call s:SuperSub('texSuperscript','\^','D','ᴰ') 1072 call s:SuperSub('texSuperscript','\^','E','ᴱ') 1073 call s:SuperSub('texSuperscript','\^','G','ᴳ') 1074 call s:SuperSub('texSuperscript','\^','H','ᴴ') 1075 call s:SuperSub('texSuperscript','\^','I','ᴵ') 1076 call s:SuperSub('texSuperscript','\^','J','ᴶ') 1077 call s:SuperSub('texSuperscript','\^','K','ᴷ') 1078 call s:SuperSub('texSuperscript','\^','L','ᴸ') 1079 call s:SuperSub('texSuperscript','\^','M','ᴹ') 1080 call s:SuperSub('texSuperscript','\^','N','ᴺ') 1081 call s:SuperSub('texSuperscript','\^','O','ᴼ') 1082 call s:SuperSub('texSuperscript','\^','P','ᴾ') 1083 call s:SuperSub('texSuperscript','\^','R','ᴿ') 1084 call s:SuperSub('texSuperscript','\^','T','ᵀ') 1085 call s:SuperSub('texSuperscript','\^','U','ᵁ') 1086 call s:SuperSub('texSuperscript','\^','W','ᵂ') 1087 call s:SuperSub('texSuperscript','\^',',','︐') 1088 call s:SuperSub('texSuperscript','\^',':','︓') 1089 call s:SuperSub('texSuperscript','\^',';','︔') 1090 call s:SuperSub('texSuperscript','\^','+','⁺') 1091 call s:SuperSub('texSuperscript','\^','-','⁻') 1092 call s:SuperSub('texSuperscript','\^','<','˂') 1093 call s:SuperSub('texSuperscript','\^','>','˃') 1094 call s:SuperSub('texSuperscript','\^','/','ˊ') 1095 call s:SuperSub('texSuperscript','\^','(','⁽') 1096 call s:SuperSub('texSuperscript','\^',')','⁾') 1097 call s:SuperSub('texSuperscript','\^','\.','˙') 1098 call s:SuperSub('texSuperscript','\^','=','˭') 1099 call s:SuperSub('texSubscript','_','0','₀') 1100 call s:SuperSub('texSubscript','_','1','₁') 1101 call s:SuperSub('texSubscript','_','2','₂') 1102 call s:SuperSub('texSubscript','_','3','₃') 1103 call s:SuperSub('texSubscript','_','4','₄') 1104 call s:SuperSub('texSubscript','_','5','₅') 1105 call s:SuperSub('texSubscript','_','6','₆') 1106 call s:SuperSub('texSubscript','_','7','₇') 1107 call s:SuperSub('texSubscript','_','8','₈') 1108 call s:SuperSub('texSubscript','_','9','₉') 1109 call s:SuperSub('texSubscript','_','a','ₐ') 1110 call s:SuperSub('texSubscript','_','e','ₑ') 1111 call s:SuperSub('texSubscript','_','i','ᵢ') 1112 call s:SuperSub('texSubscript','_','o','ₒ') 1113 call s:SuperSub('texSubscript','_','u','ᵤ') 1114 call s:SuperSub('texSubscript','_',',','︐') 1115 call s:SuperSub('texSubscript','_','+','₊') 1116 call s:SuperSub('texSubscript','_','-','₋') 1117 call s:SuperSub('texSubscript','_','/','ˏ') 1118 call s:SuperSub('texSubscript','_','(','₍') 1119 call s:SuperSub('texSubscript','_',')','₎') 1120 call s:SuperSub('texSubscript','_','\.','‸') 1121 call s:SuperSub('texSubscript','_','r','ᵣ') 1122 call s:SuperSub('texSubscript','_','v','ᵥ') 1123 call s:SuperSub('texSubscript','_','x','ₓ') 1124 call s:SuperSub('texSubscript','_','\\beta\>' ,'ᵦ') 1125 call s:SuperSub('texSubscript','_','\\delta\>','ᵨ') 1126 call s:SuperSub('texSubscript','_','\\phi\>' ,'ᵩ') 1127 call s:SuperSub('texSubscript','_','\\gamma\>','ᵧ') 1128 call s:SuperSub('texSubscript','_','\\chi\>' ,'ᵪ') 1129 delfun s:SuperSub 1130 endif 1131 1132 " Accented characters: {{{2 1133 if s:tex_conceal =~ 'a' 1134 if b:tex_stylish 1135 syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1 1136 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1 1137 else 1138 fun! s:Accents(chr,...) 1139 let i= 1 1140 for accent in ["`","\\'","^",'"','\~','\.',"c","H","k","r","u","v"] 1141 if i > a:0 1142 break 1143 endif 1144 if strlen(a:{i}) == 0 || a:{i} == ' ' || a:{i} == '?' 1145 let i= i + 1 1146 continue 1147 endif 1148 if accent =~ '\a' 1149 exe "syn match texAccent '".'\\'.accent.'\(\s*{'.a:chr.'}\|\s\+'.a:chr.'\)'."' conceal cchar=".a:{i} 1150 else 1151 exe "syn match texAccent '".'\\'.accent.'\s*\({'.a:chr.'}\|'.a:chr.'\)'."' conceal cchar=".a:{i} 1152 endif 1153 let i= i + 1 1154 endfor 1155 endfun 1156 " \` \' \^ \" \~ \. \c \H \k \r \u \v 1157 call s:Accents('a','à','á','â','ä','ã','ȧ',' ',' ','ą','å','ă','ă') 1158 call s:Accents('A','À','Á','Â','Ä','Ã','Ȧ',' ',' ','Ą','Å','Ă','Ă') 1159 call s:Accents('c',' ','ć','ĉ',' ',' ','ċ','ç',' ',' ',' ',' ','č') 1160 call s:Accents('C',' ','Ć','Ĉ',' ',' ','Ċ','Ç',' ',' ',' ',' ','Č') 1161 call s:Accents('d',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ď') 1162 call s:Accents('D',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Ď') 1163 call s:Accents('e','è','é','ê','ë','ẽ','ė','ȩ',' ','ę',' ','ĕ','ě') 1164 call s:Accents('E','È','É','Ê','Ë','Ẽ','Ė','Ȩ',' ','Ę',' ','Ĕ','Ě') 1165 call s:Accents('g',' ','ǵ','ĝ',' ',' ','ġ','ģ',' ',' ',' ','ğ',' ') 1166 call s:Accents('G',' ','Ǵ','Ĝ',' ',' ','Ġ','Ģ',' ',' ',' ','Ğ',' ') 1167 call s:Accents('h',' ',' ','ĥ',' ',' ',' ',' ',' ',' ',' ',' ','ȟ') 1168 call s:Accents('H',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Ȟ') 1169 call s:Accents('i','ì','í','î','ï','ĩ','į',' ',' ',' ',' ','ĭ',' ') 1170 call s:Accents('I','Ì','Í','Î','Ï','Ĩ','İ',' ',' ',' ',' ','Ĭ',' ') 1171 call s:Accents('J',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ǰ') 1172 call s:Accents('k',' ',' ',' ',' ',' ',' ','ķ',' ',' ',' ',' ',' ') 1173 call s:Accents('K',' ',' ',' ',' ',' ',' ','Ķ',' ',' ',' ',' ',' ') 1174 call s:Accents('l',' ','ĺ','ľ',' ',' ',' ','ļ',' ',' ',' ',' ','ľ') 1175 call s:Accents('L',' ','Ĺ','Ľ',' ',' ',' ','Ļ',' ',' ',' ',' ','Ľ') 1176 call s:Accents('n',' ','ń',' ',' ','ñ',' ','ņ',' ',' ',' ',' ','ň') 1177 call s:Accents('N',' ','Ń',' ',' ','Ñ',' ','Ņ',' ',' ',' ',' ','Ň') 1178 call s:Accents('o','ò','ó','ô','ö','õ','ȯ',' ','ő','ǫ',' ','ŏ',' ') 1179 call s:Accents('O','Ò','Ó','Ô','Ö','Õ','Ȯ',' ','Ő','Ǫ',' ','Ŏ',' ') 1180 call s:Accents('r',' ','ŕ',' ',' ',' ',' ','ŗ',' ',' ',' ',' ','ř') 1181 call s:Accents('R',' ','Ŕ',' ',' ',' ',' ','Ŗ',' ',' ',' ',' ','Ř') 1182 call s:Accents('s',' ','ś','ŝ',' ',' ',' ','ş',' ','ȿ',' ',' ','š') 1183 call s:Accents('S',' ','Ś','Ŝ',' ',' ',' ','Ş',' ',' ',' ',' ','Š') 1184 call s:Accents('t',' ',' ',' ',' ',' ',' ','ţ',' ',' ',' ',' ','ť') 1185 call s:Accents('T',' ',' ',' ',' ',' ',' ','Ţ',' ',' ',' ',' ','Ť') 1186 call s:Accents('u','ù','ú','û','ü','ũ',' ',' ','ű','ų','ů','ŭ','ǔ') 1187 call s:Accents('U','Ù','Ú','Û','Ü','Ũ',' ',' ','Ű','Ų','Ů','Ŭ','Ǔ') 1188 call s:Accents('w',' ',' ','ŵ',' ',' ',' ',' ',' ',' ',' ',' ',' ') 1189 call s:Accents('W',' ',' ','Ŵ',' ',' ',' ',' ',' ',' ',' ',' ',' ') 1190 call s:Accents('y','ỳ','ý','ŷ','ÿ','ỹ',' ',' ',' ',' ',' ',' ',' ') 1191 call s:Accents('Y','Ỳ','Ý','Ŷ','Ÿ','Ỹ',' ',' ',' ',' ',' ',' ',' ') 1192 call s:Accents('z',' ','ź',' ',' ',' ','ż',' ',' ',' ',' ',' ','ž') 1193 call s:Accents('Z',' ','Ź',' ',' ',' ','Ż',' ',' ',' ',' ',' ','Ž') 1194 call s:Accents('\\i','ì','í','î','ï','ĩ','į',' ',' ',' ',' ','ĭ',' ') 1195 " \` \' \^ \" \~ \. \c \H \k \r \u \v 1196 delfun s:Accents 1197 syn match texAccent '\\aa\>' conceal cchar=å 1198 syn match texAccent '\\AA\>' conceal cchar=Å 1199 syn match texAccent '\\o\>' conceal cchar=ø 1200 syn match texAccent '\\O\>' conceal cchar=Ø 1201 syn match texLigature '\\AE\>' conceal cchar=Æ 1202 syn match texLigature '\\ae\>' conceal cchar=æ 1203 syn match texLigature '\\oe\>' conceal cchar=œ 1204 syn match texLigature '\\OE\>' conceal cchar=Œ 1205 syn match texLigature '\\ss\>' conceal cchar=ß 1206 endif 1207 endif 1208endif 1209 1210" --------------------------------------------------------------------- 1211" LaTeX synchronization: {{{1 1212syn sync maxlines=200 1213syn sync minlines=50 1214 1215syn sync match texSyncStop groupthere NONE "%stopzone\>" 1216 1217" Synchronization: {{{1 1218" The $..$ and $$..$$ make for impossible sync patterns 1219" (one can't tell if a "$$" starts or stops a math zone by itself) 1220" The following grouptheres coupled with minlines above 1221" help improve the odds of good syncing. 1222if !exists("tex_no_math") 1223 syn sync match texSyncMathZoneA groupthere NONE "\\end{abstract}" 1224 syn sync match texSyncMathZoneA groupthere NONE "\\end{center}" 1225 syn sync match texSyncMathZoneA groupthere NONE "\\end{description}" 1226 syn sync match texSyncMathZoneA groupthere NONE "\\end{enumerate}" 1227 syn sync match texSyncMathZoneA groupthere NONE "\\end{itemize}" 1228 syn sync match texSyncMathZoneA groupthere NONE "\\end{table}" 1229 syn sync match texSyncMathZoneA groupthere NONE "\\end{tabular}" 1230 syn sync match texSyncMathZoneA groupthere NONE "\\\(sub\)*section\>" 1231endif 1232 1233" --------------------------------------------------------------------- 1234" Highlighting: {{{1 1235if did_tex_syntax_inits == 1 1236 let did_tex_syntax_inits= 2 1237 " TeX highlighting groups which should share similar highlighting 1238 if !exists("s:tex_no_error") 1239 if !exists("g:tex_no_math") 1240 HiLink texBadMath texError 1241 HiLink texMathDelimBad texError 1242 HiLink texMathError texError 1243 if !b:tex_stylish 1244 HiLink texOnlyMath texError 1245 endif 1246 endif 1247 HiLink texError Error 1248 endif 1249 1250 hi texBoldStyle gui=bold cterm=bold 1251 hi texItalStyle gui=italic cterm=italic 1252 hi texBoldItalStyle gui=bold,italic cterm=bold,italic 1253 hi texItalBoldStyle gui=bold,italic cterm=bold,italic 1254 HiLink texCite texRefZone 1255 HiLink texDefCmd texDef 1256 HiLink texDefName texDef 1257 HiLink texDocType texCmdName 1258 HiLink texDocTypeArgs texCmdArgs 1259 HiLink texInputFileOpt texCmdArgs 1260 HiLink texInputCurlies texDelimiter 1261 HiLink texLigature texSpecialChar 1262 if !exists("tex_no_math") 1263 HiLink texMathDelimSet1 texMathDelim 1264 HiLink texMathDelimSet2 texMathDelim 1265 HiLink texMathDelimKey texMathDelim 1266 HiLink texMathMatcher texMath 1267 HiLink texAccent texStatement 1268 HiLink texGreek texStatement 1269 HiLink texSuperscript texStatement 1270 HiLink texSubscript texStatement 1271 HiLink texSuperscripts texSuperscript 1272 HiLink texSubscripts texSubscript 1273 HiLink texMathSymbol texStatement 1274 HiLink texMathZoneV texMath 1275 HiLink texMathZoneW texMath 1276 HiLink texMathZoneX texMath 1277 HiLink texMathZoneY texMath 1278 HiLink texMathZoneV texMath 1279 HiLink texMathZoneZ texMath 1280 endif 1281 HiLink texBeginEnd texCmdName 1282 HiLink texBeginEndName texSection 1283 HiLink texSpaceCode texStatement 1284 HiLink texStyleStatement texStatement 1285 HiLink texTypeSize texType 1286 HiLink texTypeStyle texType 1287 1288 " Basic TeX highlighting groups 1289 HiLink texCmdArgs Number 1290 HiLink texCmdName Statement 1291 HiLink texComment Comment 1292 HiLink texDef Statement 1293 HiLink texDefParm Special 1294 HiLink texDelimiter Delimiter 1295 HiLink texInput Special 1296 HiLink texInputFile Special 1297 HiLink texLength Number 1298 HiLink texMath Special 1299 HiLink texMathDelim Statement 1300 HiLink texMathOper Operator 1301 HiLink texNewCmd Statement 1302 HiLink texNewEnv Statement 1303 HiLink texOption Number 1304 HiLink texRefZone Special 1305 HiLink texSection PreCondit 1306 HiLink texSpaceCodeChar Special 1307 HiLink texSpecialChar SpecialChar 1308 HiLink texStatement Statement 1309 HiLink texString String 1310 HiLink texTodo Todo 1311 HiLink texType Type 1312 HiLink texZone PreCondit 1313 1314 delcommand HiLink 1315endif 1316 1317" Cleanup: {{{1 1318unlet s:extfname 1319let b:current_syntax = "tex" 1320let &cpo = s:keepcpo 1321unlet s:keepcpo 1322" vim: ts=8 fdm=marker 1323