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