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