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