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