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