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