1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: TeX 31d9215b9SBram Moolenaar" Maintainer: Charles E. Campbell <[email protected]> 4*2547aa93SBram Moolenaar" Last Change: Jun 29, 2020 5*2547aa93SBram Moolenaar" Version: 119 6ac7bd638SBram Moolenaar" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TEX 7071d4279SBram Moolenaar" 8071d4279SBram Moolenaar" Notes: {{{1 9071d4279SBram Moolenaar" 10071d4279SBram Moolenaar" 1. If you have a \begin{verbatim} that appears to overrun its boundaries, 11071d4279SBram Moolenaar" use %stopzone. 12071d4279SBram Moolenaar" 13071d4279SBram Moolenaar" 2. Run-on equations ($..$ and $$..$$, particularly) can also be stopped 14071d4279SBram Moolenaar" by suitable use of %stopzone. 15071d4279SBram Moolenaar" 16071d4279SBram Moolenaar" 3. If you have a slow computer, you may wish to modify 17071d4279SBram Moolenaar" 18071d4279SBram Moolenaar" syn sync maxlines=200 19071d4279SBram Moolenaar" syn sync minlines=50 20071d4279SBram Moolenaar" 21071d4279SBram Moolenaar" to values that are more to your liking. 22071d4279SBram Moolenaar" 23071d4279SBram Moolenaar" 4. There is no match-syncing for $...$ and $$...$$; hence large 24071d4279SBram Moolenaar" equation blocks constructed that way may exhibit syncing problems. 25071d4279SBram Moolenaar" (there's no difference between begin/end patterns) 26071d4279SBram Moolenaar" 27071d4279SBram Moolenaar" 5. If you have the variable "g:tex_no_error" defined then none of the 28071d4279SBram Moolenaar" lexical error-checking will be done. 29071d4279SBram Moolenaar" 30071d4279SBram Moolenaar" ie. let g:tex_no_error=1 31a6878375SBram Moolenaar" 32a6878375SBram Moolenaar" 6. Please see :help latex-syntax for information on 33a6878375SBram Moolenaar" syntax folding :help tex-folding 34a6878375SBram Moolenaar" spell checking :help tex-nospell 35a6878375SBram Moolenaar" commands and mathzones :help tex-runon 36a6878375SBram Moolenaar" new command highlighting :help tex-morecommands 37a6878375SBram Moolenaar" error highlighting :help tex-error 38a6878375SBram Moolenaar" new math groups :help tex-math 39a6878375SBram Moolenaar" new styles :help tex-style 40a6878375SBram Moolenaar" using conceal mode :help tex-conceal 41071d4279SBram Moolenaar 42071d4279SBram Moolenaar" Version Clears: {{{1 4389bcfda6SBram Moolenaar" quit when a syntax file was already loaded 4489bcfda6SBram Moolenaarif exists("b:current_syntax") 45071d4279SBram Moolenaar finish 46071d4279SBram Moolenaarendif 471514667aSBram Moolenaarlet s:keepcpo= &cpo 481514667aSBram Moolenaarset cpo&vim 494b22cdb0SBram Moolenaarscriptencoding utf-8 50071d4279SBram Moolenaar 51543b7ef7SBram Moolenaar" by default, enable all region-based highlighting 52543b7ef7SBram Moolenaarlet s:tex_fast= "bcmMprsSvV" 53543b7ef7SBram Moolenaarif exists("g:tex_fast") 54543b7ef7SBram Moolenaar if type(g:tex_fast) != 1 55543b7ef7SBram Moolenaar " g:tex_fast exists and is not a string, so 56543b7ef7SBram Moolenaar " turn off all optional region-based highighting 57543b7ef7SBram Moolenaar let s:tex_fast= "" 58543b7ef7SBram Moolenaar else 59543b7ef7SBram Moolenaar let s:tex_fast= g:tex_fast 60ac7bd638SBram Moolenaar endif 61071d4279SBram Moolenaarendif 62071d4279SBram Moolenaar 634b22cdb0SBram Moolenaar" let user determine which classes of concealment will be supported 647fc0c065SBram Moolenaar" a=accents/ligatures d=delimiters m=math symbols g=Greek s=superscripts/subscripts 654b22cdb0SBram Moolenaarif !exists("g:tex_conceal") 66bc488a76SBram Moolenaar let s:tex_conceal= 'abdmgsS' 674b22cdb0SBram Moolenaarelse 684b22cdb0SBram Moolenaar let s:tex_conceal= g:tex_conceal 694b22cdb0SBram Moolenaarendif 706e932461SBram Moolenaarif !exists("g:tex_superscripts") 71802a0d90SBram Moolenaar let s:tex_superscripts= '[0-9a-zA-W.,:;+-<>/()=]' 7203413f44SBram Moolenaarelse 7303413f44SBram Moolenaar let s:tex_superscripts= g:tex_superscripts 746e932461SBram Moolenaarendif 756e932461SBram Moolenaarif !exists("g:tex_subscripts") 76802a0d90SBram Moolenaar let s:tex_subscripts= '[0-9aehijklmnoprstuvx,+-/().]' 7703413f44SBram Moolenaarelse 7803413f44SBram Moolenaar let s:tex_subscripts= g:tex_subscripts 796e932461SBram Moolenaarendif 804b22cdb0SBram Moolenaar 81f1f8bc5bSBram Moolenaar" Determine whether or not to use "*.sty" mode {{{1 82071d4279SBram Moolenaar" The user may override the normal determination by setting 83071d4279SBram Moolenaar" g:tex_stylish to 1 (for "*.sty" mode) 84071d4279SBram Moolenaar" or to 0 else (normal "*.tex" mode) 85071d4279SBram Moolenaar" or on a buffer-by-buffer basis with b:tex_stylish 8681af9250SBram Moolenaarlet s:extfname=expand("%:e") 87071d4279SBram Moolenaarif exists("g:tex_stylish") 88071d4279SBram Moolenaar let b:tex_stylish= g:tex_stylish 89071d4279SBram Moolenaarelseif !exists("b:tex_stylish") 9081af9250SBram Moolenaar if s:extfname == "sty" || s:extfname == "cls" || s:extfname == "clo" || s:extfname == "dtx" || s:extfname == "ltx" 91071d4279SBram Moolenaar let b:tex_stylish= 1 92071d4279SBram Moolenaar else 93071d4279SBram Moolenaar let b:tex_stylish= 0 94071d4279SBram Moolenaar endif 95071d4279SBram Moolenaarendif 96071d4279SBram Moolenaar 97f1f8bc5bSBram Moolenaar" handle folding {{{1 98f1f8bc5bSBram Moolenaarif !exists("g:tex_fold_enabled") 99b4ff518dSBram Moolenaar let s:tex_fold_enabled= 0 100f1f8bc5bSBram Moolenaarelseif g:tex_fold_enabled && !has("folding") 101b4ff518dSBram Moolenaar let s:tex_fold_enabled= 0 102f1f8bc5bSBram Moolenaar echomsg "Ignoring g:tex_fold_enabled=".g:tex_fold_enabled."; need to re-compile vim for +fold support" 103b4ff518dSBram Moolenaarelse 104b4ff518dSBram Moolenaar let s:tex_fold_enabled= 1 105f1f8bc5bSBram Moolenaarendif 106b4ff518dSBram Moolenaarif s:tex_fold_enabled && &fdm == "manual" 10700a927d6SBram Moolenaar setl fdm=syntax 108f1f8bc5bSBram Moolenaarendif 109b4ff518dSBram Moolenaarif s:tex_fold_enabled && has("folding") 110a0f849eeSBram Moolenaar com! -nargs=* TexFold <args> fold 111a0f849eeSBram Moolenaarelse 112a0f849eeSBram Moolenaar com! -nargs=* TexFold <args> 113a0f849eeSBram Moolenaarendif 114f1f8bc5bSBram Moolenaar 115adc2182cSBram Moolenaar" (La)TeX keywords: uses the characters 0-9,a-z,A-Z,192-255 only... {{{1 116071d4279SBram Moolenaar" but _ is the only one that causes problems. 117adc2182cSBram Moolenaar" One may override this iskeyword setting by providing 118adc2182cSBram Moolenaar" g:tex_isk 119adc2182cSBram Moolenaarif exists("g:tex_isk") 120bc8801c9SBram Moolenaar if b:tex_stylish && g:tex_isk !~ '@' 121bc8801c9SBram Moolenaar let b:tex_isk= '@,'.g:tex_isk 122071d4279SBram Moolenaar else 123bc8801c9SBram Moolenaar let b:tex_isk= g:tex_isk 124071d4279SBram Moolenaar endif 125bc8801c9SBram Moolenaarelseif b:tex_stylish 126bc8801c9SBram Moolenaar let b:tex_isk="@,48-57,a-z,A-Z,192-255" 127bc8801c9SBram Moolenaarelse 128bc8801c9SBram Moolenaar let b:tex_isk="48-57,a-z,A-Z,192-255" 129bc8801c9SBram Moolenaarendif 130723dd946SBram Moolenaarif (v:version == 704 && has("patch-7.4.1142")) || v:version > 704 131bc8801c9SBram Moolenaar exe "syn iskeyword ".b:tex_isk 132bc8801c9SBram Moolenaarelse 133bc8801c9SBram Moolenaar exe "setl isk=".b:tex_isk 134071d4279SBram Moolenaarendif 135b4ff518dSBram Moolenaarif exists("g:tex_no_error") && g:tex_no_error 136b4ff518dSBram Moolenaar let s:tex_no_error= 1 137b4ff518dSBram Moolenaarelse 138b4ff518dSBram Moolenaar let s:tex_no_error= 0 139b4ff518dSBram Moolenaarendif 140b4ff518dSBram Moolenaarif exists("g:tex_comment_nospell") && g:tex_comment_nospell 141b4ff518dSBram Moolenaar let s:tex_comment_nospell= 1 142b4ff518dSBram Moolenaarelse 143b4ff518dSBram Moolenaar let s:tex_comment_nospell= 0 144b4ff518dSBram Moolenaarendif 145b4ff518dSBram Moolenaarif exists("g:tex_nospell") && g:tex_nospell 146b4ff518dSBram Moolenaar let s:tex_nospell = 1 147b4ff518dSBram Moolenaarelse 148b4ff518dSBram Moolenaar let s:tex_nospell = 0 149d960d76dSBram Moolenaarendif 150*2547aa93SBram Moolenaarif exists("g:tex_matchcheck") 151*2547aa93SBram Moolenaar let s:tex_matchcheck= g:tex_matchcheck 152*2547aa93SBram Moolenaarelse 153*2547aa93SBram Moolenaar let s:tex_matchcheck= '[({[]' 154*2547aa93SBram Moolenaarendif 1551d9215b9SBram Moolenaarif exists("g:tex_excludematcher") 1561d9215b9SBram Moolenaar let s:tex_excludematcher= g:tex_excludematcher 1571d9215b9SBram Moolenaarelse 1581d9215b9SBram Moolenaar let s:tex_excludematcher= 0 1591d9215b9SBram Moolenaarendif 160071d4279SBram Moolenaar 161071d4279SBram Moolenaar" Clusters: {{{1 162071d4279SBram Moolenaar" -------- 163bc8801c9SBram Moolenaarsyn 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 164a0f849eeSBram Moolenaarif !s:tex_no_error 165071d4279SBram Moolenaar syn cluster texCmdGroup add=texMathError 166071d4279SBram Moolenaarendif 167071d4279SBram Moolenaarsyn cluster texEnvGroup contains=texMatcher,texMathDelim,texSpecialChar,texStatement 168723dd946SBram Moolenaarsyn 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 1691d9215b9SBram Moolenaarsyn cluster texBoldGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,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 1701d9215b9SBram Moolenaarsyn cluster texItalGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,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 1711d9215b9SBram Moolenaarif !s:tex_excludematcher 1721d9215b9SBram Moolenaar syn cluster texBoldGroup add=texMatcher 1731d9215b9SBram Moolenaar syn cluster texItalGroup add=texMatcher 1741d9215b9SBram Moolenaarendif 175b4ff518dSBram Moolenaarif !s:tex_nospell 176b730f0c7SBram Moolenaar 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 177b730f0c7SBram Moolenaar 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 178b730f0c7SBram Moolenaar 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 179d960d76dSBram Moolenaarelse 180d960d76dSBram Moolenaar 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 1816d5ad4c4SBram Moolenaar 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 182d960d76dSBram Moolenaar 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 183d960d76dSBram Moolenaarendif 1846d5ad4c4SBram Moolenaarsyn 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 185cfbc5ee4SBram Moolenaarsyn cluster texRefGroup contains=texMatcher,texComment,texDelimiter 186e2719096SBram Moolenaarif !exists("g:tex_no_math") 1876d5ad4c4SBram Moolenaar 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 188071d4279SBram Moolenaar syn cluster texMathZones contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ 189071d4279SBram Moolenaar syn cluster texMatchGroup add=@texMathZones 190071d4279SBram Moolenaar syn cluster texMathDelimGroup contains=texMathDelimBad,texMathDelimKey,texMathDelimSet1,texMathDelimSet2 191071d4279SBram Moolenaar 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 19274cbdf03SBram Moolenaar syn cluster texMathZoneGroup contains=texComment,texDelimiter,texLength,texMathDelim,texMathMatcher,texMathOper,texMathSymbol,texMathText,texRefZone,texSpecialChar,texStatement,texTypeSize,texTypeStyle 193a0f849eeSBram Moolenaar if !s:tex_no_error 194071d4279SBram Moolenaar syn cluster texMathMatchGroup add=texMathError 195071d4279SBram Moolenaar syn cluster texMathZoneGroup add=texMathError 196071d4279SBram Moolenaar endif 1975b8d8fdbSBram Moolenaar syn cluster texMathZoneGroup add=@NoSpell 1985b8d8fdbSBram Moolenaar " following used in the \part \chapter \section \subsection \subsubsection 1995b8d8fdbSBram Moolenaar " \paragraph \subparagraph \author \title highlighting 2005b8d8fdbSBram Moolenaar syn cluster texDocGroup contains=texPartZone,@texPartGroup 2015b8d8fdbSBram Moolenaar syn cluster texPartGroup contains=texChapterZone,texSectionZone,texParaZone 2025b8d8fdbSBram Moolenaar syn cluster texChapterGroup contains=texSectionZone,texParaZone 2035b8d8fdbSBram Moolenaar syn cluster texSectionGroup contains=texSubSectionZone,texParaZone 2045b8d8fdbSBram Moolenaar syn cluster texSubSectionGroup contains=texSubSubSectionZone,texParaZone 2055b8d8fdbSBram Moolenaar syn cluster texSubSubSectionGroup contains=texParaZone 2065b8d8fdbSBram Moolenaar syn cluster texParaGroup contains=texSubParaZone 207b2c0350cSBram Moolenaar if has("conceal") && &enc == 'utf-8' 208e0021c79SBram Moolenaar syn cluster texMathZoneGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol 209e0021c79SBram Moolenaar syn cluster texMathMatchGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol 210b2c0350cSBram Moolenaar endif 211071d4279SBram Moolenaarendif 212071d4279SBram Moolenaar 213*2547aa93SBram Moolenaar" Try to flag {}, [], and () mismatches: {{{1 214f391327aSBram Moolenaarif s:tex_fast =~# 'm' 215a0f849eeSBram Moolenaar if !s:tex_no_error 216*2547aa93SBram Moolenaar if s:tex_matchcheck =~ '{' 217b4ff518dSBram Moolenaar syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup,texError 2186d5ad4c4SBram Moolenaar syn region texMatcherNM matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup,texError 219*2547aa93SBram Moolenaar endif 220*2547aa93SBram Moolenaar if s:tex_matchcheck =~ '\[' 221*2547aa93SBram Moolenaar syn region texMatcher matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchGroup,texError,@NoSpell 2226d5ad4c4SBram Moolenaar syn region texMatcherNM matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchNMGroup,texError,@NoSpell 223*2547aa93SBram Moolenaar endif 224071d4279SBram Moolenaar else 225*2547aa93SBram Moolenaar if s:tex_matchcheck =~ '{' 226b4ff518dSBram Moolenaar syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup 2276d5ad4c4SBram Moolenaar syn region texMatcherNM matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup 228*2547aa93SBram Moolenaar endif 229*2547aa93SBram Moolenaar if s:tex_matchcheck =~ '\[' 230*2547aa93SBram Moolenaar syn region texMatcher matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchGroup 2316d5ad4c4SBram Moolenaar syn region texMatcherNM matchgroup=Delimiter start="\[" end="]" transparent contains=@texMatchNMGroup 232071d4279SBram Moolenaar endif 233*2547aa93SBram Moolenaar endif 234*2547aa93SBram Moolenaar if s:tex_matchcheck =~ '(' 235b4ff518dSBram Moolenaar if !s:tex_nospell 236b4ff518dSBram Moolenaar syn region texParen start="(" end=")" transparent contains=@texMatchGroup,@Spell 237d960d76dSBram Moolenaar else 238b4ff518dSBram Moolenaar syn region texParen start="(" end=")" transparent contains=@texMatchGroup 239d960d76dSBram Moolenaar endif 240ac7bd638SBram Moolenaar endif 241*2547aa93SBram Moolenaarendif 242a0f849eeSBram Moolenaarif !s:tex_no_error 243*2547aa93SBram Moolenaar if s:tex_matchcheck =~ '(' 244*2547aa93SBram Moolenaar syn match texError "[}\]]" 245*2547aa93SBram Moolenaar else 246071d4279SBram Moolenaar syn match texError "[}\])]" 247071d4279SBram Moolenaar endif 248*2547aa93SBram Moolenaarendif 249f391327aSBram Moolenaarif s:tex_fast =~# 'M' 250e2719096SBram Moolenaar if !exists("g:tex_no_math") 251a0f849eeSBram Moolenaar if !s:tex_no_error 252071d4279SBram Moolenaar syn match texMathError "}" contained 253071d4279SBram Moolenaar endif 254b4ff518dSBram Moolenaar syn region texMathMatcher matchgroup=Delimiter start="{" skip="\%(\\\\\)*\\}" end="}" end="%stopzone\>" contained contains=@texMathMatchGroup 255071d4279SBram Moolenaar endif 256ac7bd638SBram Moolenaarendif 257071d4279SBram Moolenaar 258071d4279SBram Moolenaar" TeX/LaTeX keywords: {{{1 259071d4279SBram Moolenaar" Instead of trying to be All Knowing, I just match \..alphameric.. 260071d4279SBram Moolenaar" Note that *.tex files may not have "@" in their \commands 261071d4279SBram Moolenaarif exists("g:tex_tex") || b:tex_stylish 262071d4279SBram Moolenaar syn match texStatement "\\[a-zA-Z@]\+" 263071d4279SBram Moolenaarelse 264071d4279SBram Moolenaar syn match texStatement "\\\a\+" 265a0f849eeSBram Moolenaar if !s:tex_no_error 266071d4279SBram Moolenaar syn match texError "\\\a*@[a-zA-Z@]*" 267071d4279SBram Moolenaar endif 268071d4279SBram Moolenaarendif 269071d4279SBram Moolenaar 270071d4279SBram Moolenaar" TeX/LaTeX delimiters: {{{1 271071d4279SBram Moolenaarsyn match texDelimiter "&" 272071d4279SBram Moolenaarsyn match texDelimiter "\\\\" 273071d4279SBram Moolenaar 274071d4279SBram Moolenaar" Tex/Latex Options: {{{1 275071d4279SBram Moolenaarsyn match texOption "[^\\]\zs#\d\+\|^#\d\+" 276071d4279SBram Moolenaar 277071d4279SBram Moolenaar" texAccent (tnx to Karim Belabas) avoids annoying highlighting for accents: {{{1 278071d4279SBram Moolenaarif b:tex_stylish 279071d4279SBram Moolenaar syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1 280071d4279SBram Moolenaar syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1 281071d4279SBram Moolenaarelse 282071d4279SBram Moolenaar syn match texAccent "\\[bcdvuH]\A"me=e-1 283071d4279SBram Moolenaar syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)\A"me=e-1 284071d4279SBram Moolenaarendif 285071d4279SBram Moolenaarsyn match texAccent "\\[bcdvuH]$" 286071d4279SBram Moolenaarsyn match texAccent +\\[=^.\~"`']+ 287071d4279SBram Moolenaarsyn match texAccent +\\['=t'.c^ud"vb~Hr]{\a}+ 288071d4279SBram Moolenaarsyn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)$" 289071d4279SBram Moolenaar 290b0d45e7fSBram Moolenaar 291071d4279SBram Moolenaar" \begin{}/\end{} section markers: {{{1 292d38b055aSBram Moolenaarsyn match texBeginEnd "\\begin\>\|\\end\>" nextgroup=texBeginEndName 293f391327aSBram Moolenaarif s:tex_fast =~# 'm' 294d38b055aSBram Moolenaar syn region texBeginEndName matchgroup=Delimiter start="{" end="}" contained nextgroup=texBeginEndModifier contains=texComment 295802a0d90SBram Moolenaar syn region texBeginEndModifier matchgroup=Delimiter start="\[" end="]" contained contains=texComment,@texMathZones,@NoSpell 296ac7bd638SBram Moolenaarendif 297071d4279SBram Moolenaar 298071d4279SBram Moolenaar" \documentclass, \documentstyle, \usepackage: {{{1 299d38b055aSBram Moolenaarsyn match texDocType "\\documentclass\>\|\\documentstyle\>\|\\usepackage\>" nextgroup=texBeginEndName,texDocTypeArgs 300f391327aSBram Moolenaarif s:tex_fast =~# 'm' 301d38b055aSBram Moolenaar syn region texDocTypeArgs matchgroup=Delimiter start="\[" end="]" contained nextgroup=texBeginEndName contains=texComment,@NoSpell 302ac7bd638SBram Moolenaarendif 303071d4279SBram Moolenaar 304a9a568caSBram Moolenaar" Preamble syntax-based folding support: {{{1 305b4ff518dSBram Moolenaarif s:tex_fold_enabled && has("folding") 306d38b055aSBram Moolenaar syn region texPreamble transparent fold start='\zs\\documentclass\>' end='\ze\\begin{document}' contains=texStyle,@texPreambleMatchGroup 307a9a568caSBram Moolenaarendif 308a9a568caSBram Moolenaar 309071d4279SBram Moolenaar" TeX input: {{{1 310071d4279SBram Moolenaarsyn match texInput "\\input\s\+[a-zA-Z/.0-9_^]\+"hs=s+7 contains=texStatement 3115c73622aSBram Moolenaarsyn match texInputFile "\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt 312071d4279SBram Moolenaarsyn match texInputFile "\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt 313071d4279SBram Moolenaarsyn match texInputCurlies "[{}]" contained 314f391327aSBram Moolenaarif s:tex_fast =~# 'm' 3155c73622aSBram Moolenaar syn region texInputFileOpt matchgroup=Delimiter start="\[" end="\]" contained contains=texComment 316ac7bd638SBram Moolenaarendif 317071d4279SBram Moolenaar 318071d4279SBram Moolenaar" Type Styles (LaTeX 2.09): {{{1 319071d4279SBram Moolenaarsyn match texTypeStyle "\\rm\>" 320071d4279SBram Moolenaarsyn match texTypeStyle "\\em\>" 321071d4279SBram Moolenaarsyn match texTypeStyle "\\bf\>" 322071d4279SBram Moolenaarsyn match texTypeStyle "\\it\>" 323071d4279SBram Moolenaarsyn match texTypeStyle "\\sl\>" 324071d4279SBram Moolenaarsyn match texTypeStyle "\\sf\>" 325071d4279SBram Moolenaarsyn match texTypeStyle "\\sc\>" 326071d4279SBram Moolenaarsyn match texTypeStyle "\\tt\>" 327071d4279SBram Moolenaar 328071d4279SBram Moolenaar" Type Styles: attributes, commands, families, etc (LaTeX2E): {{{1 3297db8f6f4SBram Moolenaarif s:tex_conceal !~# 'b' 330071d4279SBram Moolenaar syn match texTypeStyle "\\textbf\>" 331071d4279SBram Moolenaar syn match texTypeStyle "\\textit\>" 332723dd946SBram Moolenaar syn match texTypeStyle "\\emph\>" 333d38b055aSBram Moolenaarendif 334071d4279SBram Moolenaarsyn match texTypeStyle "\\textmd\>" 335071d4279SBram Moolenaarsyn match texTypeStyle "\\textrm\>" 336071d4279SBram Moolenaar 337071d4279SBram Moolenaarsyn match texTypeStyle "\\mathbb\>" 338071d4279SBram Moolenaarsyn match texTypeStyle "\\mathbf\>" 339071d4279SBram Moolenaarsyn match texTypeStyle "\\mathcal\>" 340071d4279SBram Moolenaarsyn match texTypeStyle "\\mathfrak\>" 341071d4279SBram Moolenaarsyn match texTypeStyle "\\mathit\>" 342071d4279SBram Moolenaarsyn match texTypeStyle "\\mathnormal\>" 343071d4279SBram Moolenaarsyn match texTypeStyle "\\mathrm\>" 344071d4279SBram Moolenaarsyn match texTypeStyle "\\mathsf\>" 345071d4279SBram Moolenaarsyn match texTypeStyle "\\mathtt\>" 346071d4279SBram Moolenaar 347071d4279SBram Moolenaarsyn match texTypeStyle "\\rmfamily\>" 348071d4279SBram Moolenaarsyn match texTypeStyle "\\sffamily\>" 349071d4279SBram Moolenaarsyn match texTypeStyle "\\ttfamily\>" 350071d4279SBram Moolenaar 351071d4279SBram Moolenaarsyn match texTypeStyle "\\itshape\>" 352071d4279SBram Moolenaarsyn match texTypeStyle "\\scshape\>" 353071d4279SBram Moolenaarsyn match texTypeStyle "\\slshape\>" 354071d4279SBram Moolenaarsyn match texTypeStyle "\\upshape\>" 355071d4279SBram Moolenaar 356071d4279SBram Moolenaarsyn match texTypeStyle "\\bfseries\>" 357071d4279SBram Moolenaarsyn match texTypeStyle "\\mdseries\>" 358071d4279SBram Moolenaar 359071d4279SBram Moolenaar" Some type sizes: {{{1 360071d4279SBram Moolenaarsyn match texTypeSize "\\tiny\>" 361071d4279SBram Moolenaarsyn match texTypeSize "\\scriptsize\>" 362071d4279SBram Moolenaarsyn match texTypeSize "\\footnotesize\>" 363071d4279SBram Moolenaarsyn match texTypeSize "\\small\>" 364071d4279SBram Moolenaarsyn match texTypeSize "\\normalsize\>" 365071d4279SBram Moolenaarsyn match texTypeSize "\\large\>" 366071d4279SBram Moolenaarsyn match texTypeSize "\\Large\>" 367071d4279SBram Moolenaarsyn match texTypeSize "\\LARGE\>" 368071d4279SBram Moolenaarsyn match texTypeSize "\\huge\>" 369071d4279SBram Moolenaarsyn match texTypeSize "\\Huge\>" 370071d4279SBram Moolenaar 371071d4279SBram Moolenaar" Spacecodes (TeX'isms): {{{1 372071d4279SBram Moolenaar" \mathcode`\^^@="2201 \delcode`\(="028300 \sfcode`\)=0 \uccode`X=`X \lccode`x=`x 373071d4279SBram Moolenaarsyn match texSpaceCode "\\\(math\|cat\|del\|lc\|sf\|uc\)code`"me=e-1 nextgroup=texSpaceCodeChar 374071d4279SBram Moolenaarsyn match texSpaceCodeChar "`\\\=.\(\^.\)\==\(\d\|\"\x\{1,6}\|`.\)" contained 375071d4279SBram Moolenaar 376071d4279SBram Moolenaar" Sections, subsections, etc: {{{1 377f391327aSBram Moolenaarif s:tex_fast =~# 'p' 378b4ff518dSBram Moolenaar if !s:tex_nospell 379a0f849eeSBram Moolenaar TexFold syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup,@Spell 380a0f849eeSBram Moolenaar TexFold syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup,@Spell 381a0f849eeSBram Moolenaar TexFold syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup,@Spell 382a0f849eeSBram Moolenaar TexFold syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup,@Spell 383a0f849eeSBram Moolenaar TexFold syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup,@Spell 384a0f849eeSBram Moolenaar 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 385a0f849eeSBram Moolenaar 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 386a0f849eeSBram Moolenaar 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 387a0f849eeSBram Moolenaar TexFold syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup,@Spell 388a0f849eeSBram Moolenaar TexFold syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup,@Spell 389293ee4d4SBram Moolenaar else 390a0f849eeSBram Moolenaar TexFold syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup 391a0f849eeSBram Moolenaar TexFold syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup 392a0f849eeSBram Moolenaar TexFold syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup 393a0f849eeSBram Moolenaar TexFold syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup 394a0f849eeSBram Moolenaar TexFold syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup 395a0f849eeSBram Moolenaar TexFold syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSubSectionGroup 396a0f849eeSBram Moolenaar TexFold syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texParaGroup 397a0f849eeSBram Moolenaar TexFold syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup 398a0f849eeSBram Moolenaar TexFold syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup 399a0f849eeSBram Moolenaar TexFold syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup 400d960d76dSBram Moolenaar endif 401ac7bd638SBram Moolenaarendif 402071d4279SBram Moolenaar 403d38b055aSBram Moolenaar" particular support for bold and italic {{{1 404f391327aSBram Moolenaarif s:tex_fast =~# 'b' 405f391327aSBram Moolenaar if s:tex_conceal =~# 'b' 40683d1b190SBram Moolenaar if !exists("g:tex_nospell") || !g:tex_nospell 407541f92d6SBram Moolenaar syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell 408541f92d6SBram Moolenaar syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell 409541f92d6SBram Moolenaar syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell 410541f92d6SBram Moolenaar syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell 411723dd946SBram Moolenaar syn region texEmphStyle matchgroup=texTypeStyle start="\\emph\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell 4121d9215b9SBram Moolenaar syn region texEmphStyle matchgroup=texTypeStyle start="\\texts[cfl]\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell 4131d9215b9SBram Moolenaar syn region texEmphStyle matchgroup=texTypeStyle start="\\textup\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell 4141d9215b9SBram Moolenaar syn region texEmphStyle matchgroup=texTypeStyle start="\\texttt\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell 41583d1b190SBram Moolenaar else 416541f92d6SBram Moolenaar syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup 417541f92d6SBram Moolenaar syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup 418541f92d6SBram Moolenaar syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup 419541f92d6SBram Moolenaar syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup 420723dd946SBram Moolenaar syn region texEmphStyle matchgroup=texTypeStyle start="\\emph\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup 4211d9215b9SBram Moolenaar syn region texEmphStyle matchgroup=texTypeStyle start="\\texts[cfl]\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup 4221d9215b9SBram Moolenaar syn region texEmphStyle matchgroup=texTypeStyle start="\\textup\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup 4231d9215b9SBram Moolenaar syn region texEmphStyle matchgroup=texTypeStyle start="\\texttt\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup 42483d1b190SBram Moolenaar endif 425d38b055aSBram Moolenaar endif 426ac7bd638SBram Moolenaarendif 427d38b055aSBram Moolenaar 428071d4279SBram Moolenaar" Bad Math (mismatched): {{{1 429a0f849eeSBram Moolenaarif !exists("g:tex_no_math") && !s:tex_no_error 43051ad4eaaSBram Moolenaar syn match texBadMath "\\end\s*{\s*\(array\|[bBpvV]matrix\|split\|smallmatrix\)\s*}" 431f0b03c4eSBram Moolenaar syn match texBadMath "\\end\s*{\s*\(displaymath\|equation\|eqnarray\|math\)\*\=\s*}" 432071d4279SBram Moolenaar syn match texBadMath "\\[\])]" 433071d4279SBram Moolenaarendif 434071d4279SBram Moolenaar 435071d4279SBram Moolenaar" Math Zones: {{{1 436e2719096SBram Moolenaarif !exists("g:tex_no_math") 437488c6512SBram Moolenaar " TexNewMathZone: function creates a mathzone with the given suffix and mathzone name. {{{2 438071d4279SBram Moolenaar " Starred forms are created if starform is true. Starred 439071d4279SBram Moolenaar " forms have syntax group and synchronization groups with a 4406d5ad4c4SBram Moolenaar " "S" appended. Handles: cluster, syntax, sync, and highlighting. 441071d4279SBram Moolenaar fun! TexNewMathZone(sfx,mathzone,starform) 442071d4279SBram Moolenaar let grpname = "texMathZone".a:sfx 443071d4279SBram Moolenaar let syncname = "texSyncMathZone".a:sfx 444b4ff518dSBram Moolenaar if s:tex_fold_enabled 4453577c6faSBram Moolenaar let foldcmd= " fold" 4463577c6faSBram Moolenaar else 4473577c6faSBram Moolenaar let foldcmd= "" 4483577c6faSBram Moolenaar endif 449071d4279SBram Moolenaar exe "syn cluster texMathZones add=".grpname 450f391327aSBram Moolenaar if s:tex_fast =~# 'M' 4513577c6faSBram Moolenaar exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd 452071d4279SBram Moolenaar exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' 453071d4279SBram Moolenaar exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' 454ac7bd638SBram Moolenaar endif 4555c73622aSBram Moolenaar exe 'hi def link '.grpname.' texMath' 456071d4279SBram Moolenaar if a:starform 457071d4279SBram Moolenaar let grpname = "texMathZone".a:sfx.'S' 458071d4279SBram Moolenaar let syncname = "texSyncMathZone".a:sfx.'S' 459071d4279SBram Moolenaar exe "syn cluster texMathZones add=".grpname 460f391327aSBram Moolenaar if s:tex_fast =~# 'M' 4613577c6faSBram Moolenaar exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd 462071d4279SBram Moolenaar exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' 463071d4279SBram Moolenaar exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"' 464ac7bd638SBram Moolenaar endif 4655c73622aSBram Moolenaar exe 'hi def link '.grpname.' texMath' 466071d4279SBram Moolenaar endif 467071d4279SBram Moolenaar endfun 468071d4279SBram Moolenaar 469071d4279SBram Moolenaar " Standard Math Zones: {{{2 470f0b03c4eSBram Moolenaar call TexNewMathZone("A","displaymath",1) 471f0b03c4eSBram Moolenaar call TexNewMathZone("B","eqnarray",1) 472f0b03c4eSBram Moolenaar call TexNewMathZone("C","equation",1) 473f0b03c4eSBram Moolenaar call TexNewMathZone("D","math",1) 474071d4279SBram Moolenaar 475071d4279SBram Moolenaar " Inline Math Zones: {{{2 476f391327aSBram Moolenaar if s:tex_fast =~# 'M' 477f391327aSBram Moolenaar if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~# 'd' 478e0021c79SBram Moolenaar syn region texMathZoneV matchgroup=Delimiter start="\\(" matchgroup=Delimiter end="\\)\|%stopzone\>" keepend concealends contains=@texMathZoneGroup 479e0021c79SBram Moolenaar syn region texMathZoneW matchgroup=Delimiter start="\\\[" matchgroup=Delimiter end="\\]\|%stopzone\>" keepend concealends contains=@texMathZoneGroup 480e0021c79SBram Moolenaar syn region texMathZoneX matchgroup=Delimiter start="\$" skip="\\\\\|\\\$" matchgroup=Delimiter end="\$" end="%stopzone\>" concealends contains=@texMathZoneGroup 481541f92d6SBram Moolenaar syn region texMathZoneY matchgroup=Delimiter start="\$\$" matchgroup=Delimiter end="\$\$" end="%stopzone\>" keepend concealends contains=@texMathZoneGroup 482e0021c79SBram Moolenaar else 483071d4279SBram Moolenaar syn region texMathZoneV matchgroup=Delimiter start="\\(" matchgroup=Delimiter end="\\)\|%stopzone\>" keepend contains=@texMathZoneGroup 484071d4279SBram Moolenaar syn region texMathZoneW matchgroup=Delimiter start="\\\[" matchgroup=Delimiter end="\\]\|%stopzone\>" keepend contains=@texMathZoneGroup 485b4ff518dSBram Moolenaar syn region texMathZoneX matchgroup=Delimiter start="\$" skip="\%(\\\\\)*\\\$" matchgroup=Delimiter end="\$" end="%stopzone\>" contains=@texMathZoneGroup 486071d4279SBram Moolenaar syn region texMathZoneY matchgroup=Delimiter start="\$\$" matchgroup=Delimiter end="\$\$" end="%stopzone\>" keepend contains=@texMathZoneGroup 487e0021c79SBram Moolenaar endif 488071d4279SBram Moolenaar syn region texMathZoneZ matchgroup=texStatement start="\\ensuremath\s*{" matchgroup=texStatement end="}" end="%stopzone\>" contains=@texMathZoneGroup 489ac7bd638SBram Moolenaar endif 490071d4279SBram Moolenaar 491071d4279SBram Moolenaar syn match texMathOper "[_^=]" contained 492071d4279SBram Moolenaar 49374cbdf03SBram Moolenaar " Text Inside Math Zones: {{{2 494f391327aSBram Moolenaar if s:tex_fast =~# 'M' 495d960d76dSBram Moolenaar if !exists("g:tex_nospell") || !g:tex_nospell 49674cbdf03SBram Moolenaar syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{' end='}' contains=@texFoldGroup,@Spell 497d960d76dSBram Moolenaar else 498d960d76dSBram Moolenaar syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{' end='}' contains=@texFoldGroup 499d960d76dSBram Moolenaar endif 500ac7bd638SBram Moolenaar endif 50174cbdf03SBram Moolenaar 502071d4279SBram Moolenaar " \left..something.. and \right..something.. support: {{{2 503071d4279SBram Moolenaar syn match texMathDelimBad contained "\S" 504f391327aSBram Moolenaar if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~# 'm' 505bc8801c9SBram Moolenaar syn match texMathDelim contained "\\left\[" 506bc8801c9SBram Moolenaar syn match texMathDelim contained "\\left\\{" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar={ 507bc8801c9SBram Moolenaar syn match texMathDelim contained "\\right\\}" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar=} 508adc2182cSBram Moolenaar let s:texMathDelimList=[ 509adc2182cSBram Moolenaar \ ['<' , '<'] , 510adc2182cSBram Moolenaar \ ['>' , '>'] , 511adc2182cSBram Moolenaar \ ['(' , '('] , 512adc2182cSBram Moolenaar \ [')' , ')'] , 513adc2182cSBram Moolenaar \ ['\[' , '['] , 514adc2182cSBram Moolenaar \ [']' , ']'] , 515adc2182cSBram Moolenaar \ ['\\{' , '{'] , 516adc2182cSBram Moolenaar \ ['\\}' , '}'] , 517adc2182cSBram Moolenaar \ ['|' , '|'] , 518adc2182cSBram Moolenaar \ ['\\|' , '‖'] , 519adc2182cSBram Moolenaar \ ['\\backslash' , '\'] , 520adc2182cSBram Moolenaar \ ['\\downarrow' , '↓'] , 521adc2182cSBram Moolenaar \ ['\\Downarrow' , '⇓'] , 522adc2182cSBram Moolenaar \ ['\\lbrace' , '['] , 523adc2182cSBram Moolenaar \ ['\\lceil' , '⌈'] , 524adc2182cSBram Moolenaar \ ['\\lfloor' , '⌊'] , 525adc2182cSBram Moolenaar \ ['\\lgroup' , '⌊'] , 526adc2182cSBram Moolenaar \ ['\\lmoustache' , '⎛'] , 527adc2182cSBram Moolenaar \ ['\\rbrace' , ']'] , 528adc2182cSBram Moolenaar \ ['\\rceil' , '⌉'] , 529adc2182cSBram Moolenaar \ ['\\rfloor' , '⌋'] , 530adc2182cSBram Moolenaar \ ['\\rgroup' , '⌋'] , 531adc2182cSBram Moolenaar \ ['\\rmoustache' , '⎞'] , 532adc2182cSBram Moolenaar \ ['\\uparrow' , '↑'] , 533adc2182cSBram Moolenaar \ ['\\Uparrow' , '↑'] , 534adc2182cSBram Moolenaar \ ['\\updownarrow', '↕'] , 535adc2182cSBram Moolenaar \ ['\\Updownarrow', '⇕']] 536690afe1fSBram Moolenaar if &ambw == "double" || exists("g:tex_usedblwidth") 537690afe1fSBram Moolenaar let s:texMathDelimList= s:texMathDelimList + [ 538690afe1fSBram Moolenaar \ ['\\langle' , '〈'] , 5397f2e9d7cSBram Moolenaar \ ['\\rangle' , '〉']] 540690afe1fSBram Moolenaar else 541690afe1fSBram Moolenaar let s:texMathDelimList= s:texMathDelimList + [ 542690afe1fSBram Moolenaar \ ['\\langle' , '<'] , 543690afe1fSBram Moolenaar \ ['\\rangle' , '>']] 544690afe1fSBram Moolenaar endif 545adc2182cSBram Moolenaar syn match texMathDelim '\\[bB]igg\=[lr]' contained nextgroup=texMathDelimBad 546adc2182cSBram Moolenaar for texmath in s:texMathDelimList 547adc2182cSBram Moolenaar exe "syn match texMathDelim '\\\\[bB]igg\\=[lr]\\=".texmath[0]."' contained conceal cchar=".texmath[1] 548adc2182cSBram Moolenaar endfor 549adc2182cSBram Moolenaar 5504b22cdb0SBram Moolenaar else 5514b22cdb0SBram Moolenaar syn match texMathDelim contained "\\\(left\|right\)\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad 552adc2182cSBram Moolenaar syn match texMathDelim contained "\\[bB]igg\=[lr]\=\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad 553071d4279SBram Moolenaar syn match texMathDelimSet2 contained "\\" nextgroup=texMathDelimKey,texMathDelimBad 554071d4279SBram Moolenaar syn match texMathDelimSet1 contained "[<>()[\]|/.]\|\\[{}|]" 555071d4279SBram Moolenaar syn keyword texMathDelimKey contained backslash lceil lVert rgroup uparrow 556071d4279SBram Moolenaar syn keyword texMathDelimKey contained downarrow lfloor rangle rmoustache Uparrow 557071d4279SBram Moolenaar syn keyword texMathDelimKey contained Downarrow lgroup rbrace rvert updownarrow 558071d4279SBram Moolenaar syn keyword texMathDelimKey contained langle lmoustache rceil rVert Updownarrow 559071d4279SBram Moolenaar syn keyword texMathDelimKey contained lbrace lvert rfloor 560071d4279SBram Moolenaar endif 561adc2182cSBram Moolenaar syn match texMathDelim contained "\\\(left\|right\)arrow\>\|\<\([aA]rrow\|brace\)\=vert\>" 562adc2182cSBram Moolenaar syn match texMathDelim contained "\\lefteqn\>" 563adc2182cSBram Moolenaarendif 564071d4279SBram Moolenaar 565071d4279SBram Moolenaar" Special TeX characters ( \$ \& \% \# \{ \} \_ \S \P ) : {{{1 566071d4279SBram Moolenaarsyn match texSpecialChar "\\[$&%#{}_]" 567071d4279SBram Moolenaarif b:tex_stylish 568071d4279SBram Moolenaar syn match texSpecialChar "\\[SP@][^a-zA-Z@]"me=e-1 569071d4279SBram Moolenaarelse 570071d4279SBram Moolenaar syn match texSpecialChar "\\[SP@]\A"me=e-1 571071d4279SBram Moolenaarendif 572071d4279SBram Moolenaarsyn match texSpecialChar "\\\\" 573e2719096SBram Moolenaarif !exists("g:tex_no_math") 574071d4279SBram Moolenaar syn match texOnlyMath "[_^]" 575071d4279SBram Moolenaarendif 576071d4279SBram Moolenaarsyn match texSpecialChar "\^\^[0-9a-f]\{2}\|\^\^\S" 5777db8f6f4SBram Moolenaarif s:tex_conceal !~# 'S' 578bc488a76SBram Moolenaar syn match texSpecialChar '\\glq\>' contained conceal cchar=‚ 579bc488a76SBram Moolenaar syn match texSpecialChar '\\grq\>' contained conceal cchar=‘ 580bc488a76SBram Moolenaar syn match texSpecialChar '\\glqq\>' contained conceal cchar=„ 581bc488a76SBram Moolenaar syn match texSpecialChar '\\grqq\>' contained conceal cchar=“ 582bc488a76SBram Moolenaar syn match texSpecialChar '\\hyp\>' contained conceal cchar=- 583bc488a76SBram Moolenaarendif 584071d4279SBram Moolenaar 585071d4279SBram Moolenaar" Comments: {{{1 586071d4279SBram Moolenaar" Normal TeX LaTeX : %.... 587071d4279SBram Moolenaar" Documented TeX Format: ^^A... -and- leading %s (only) 588b4ff518dSBram Moolenaarif !s:tex_comment_nospell 589071d4279SBram Moolenaar syn cluster texCommentGroup contains=texTodo,@Spell 5903577c6faSBram Moolenaarelse 5913577c6faSBram Moolenaar syn cluster texCommentGroup contains=texTodo,@NoSpell 5923577c6faSBram Moolenaarendif 593071d4279SBram Moolenaarsyn case ignore 59418144c84SBram Moolenaarsyn keyword texTodo contained combak fixme todo xxx 595071d4279SBram Moolenaarsyn case match 59681af9250SBram Moolenaarif s:extfname == "dtx" 597071d4279SBram Moolenaar syn match texComment "\^\^A.*$" contains=@texCommentGroup 598071d4279SBram Moolenaar syn match texComment "^%\+" contains=@texCommentGroup 599071d4279SBram Moolenaarelse 600b4ff518dSBram Moolenaar if s:tex_fold_enabled 601fd2ac767SBram Moolenaar " allows syntax-folding of 2 or more contiguous comment lines 602fd2ac767SBram Moolenaar " single-line comments are not folded 603071d4279SBram Moolenaar syn match texComment "%.*$" contains=@texCommentGroup 604f391327aSBram Moolenaar if s:tex_fast =~# 'c' 605b4ff518dSBram Moolenaar TexFold syn region texComment start="^\zs\s*%.*\_s*%" skip="^\s*%" end='^\ze\s*[^%]' contains=@texCommentGroup 606a0f849eeSBram Moolenaar TexFold syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell 607ac7bd638SBram Moolenaar endif 608fd2ac767SBram Moolenaar else 609fd2ac767SBram Moolenaar syn match texComment "%.*$" contains=@texCommentGroup 610f391327aSBram Moolenaar if s:tex_fast =~# 'c' 611d38b055aSBram Moolenaar syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell 612fd2ac767SBram Moolenaar endif 613071d4279SBram Moolenaar endif 614ac7bd638SBram Moolenaarendif 615071d4279SBram Moolenaar 616b0d45e7fSBram Moolenaar" %begin-include ... %end-include acts like a texDocZone for \include'd files. Permits spell checking, for example, in such files. 617b0d45e7fSBram Moolenaarif !s:tex_nospell 618b0d45e7fSBram Moolenaar TexFold syn region texDocZone matchgroup=texSection start='^\s*%begin-include\>' end='^\s*%end-include\>' contains=@texFoldGroup,@texDocGroup,@Spell 619b0d45e7fSBram Moolenaarelse 620b0d45e7fSBram Moolenaar TexFold syn region texDocZone matchgroup=texSection start='^\s*%begin-include\>' end='^\s*%end-include\>' contains=@texFoldGroup,@texDocGroup 621b0d45e7fSBram Moolenaarendif 622b0d45e7fSBram Moolenaar 623071d4279SBram Moolenaar" Separate lines used for verb` and verb# so that the end conditions {{{1 62474cbdf03SBram Moolenaar" will appropriately terminate. 62574cbdf03SBram Moolenaar" If g:tex_verbspell exists, then verbatim texZones will permit spellchecking there. 626f391327aSBram Moolenaarif s:tex_fast =~# 'v' 62774cbdf03SBram Moolenaar if exists("g:tex_verbspell") && g:tex_verbspell 6285c73622aSBram Moolenaar syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>" contains=@Spell 629b0d45e7fSBram Moolenaar " listings package: 63074cbdf03SBram Moolenaar if b:tex_stylish 63174cbdf03SBram Moolenaar syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>" contains=@Spell 63274cbdf03SBram Moolenaar else 63374cbdf03SBram Moolenaar syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>" contains=@Spell 63474cbdf03SBram Moolenaar endif 63574cbdf03SBram Moolenaar else 63674cbdf03SBram Moolenaar syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>" 637071d4279SBram Moolenaar if b:tex_stylish 638071d4279SBram Moolenaar syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>" 639071d4279SBram Moolenaar else 640071d4279SBram Moolenaar syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>" 641071d4279SBram Moolenaar endif 642071d4279SBram Moolenaar endif 64374cbdf03SBram Moolenaarendif 644071d4279SBram Moolenaar 645071d4279SBram Moolenaar" Tex Reference Zones: {{{1 646f391327aSBram Moolenaarif s:tex_fast =~# 'r' 647d960d76dSBram Moolenaar syn region texZone matchgroup=texStatement start="@samp{" end="}\|%stopzone\>" contains=@texRefGroup 648d960d76dSBram Moolenaar syn region texRefZone matchgroup=texStatement start="\\nocite{" end="}\|%stopzone\>" contains=@texRefGroup 649d960d76dSBram Moolenaar syn region texRefZone matchgroup=texStatement start="\\bibliography{" end="}\|%stopzone\>" contains=@texRefGroup 650d960d76dSBram Moolenaar syn region texRefZone matchgroup=texStatement start="\\label{" end="}\|%stopzone\>" contains=@texRefGroup 651d960d76dSBram Moolenaar syn region texRefZone matchgroup=texStatement start="\\\(page\|eq\)ref{" end="}\|%stopzone\>" contains=@texRefGroup 652d960d76dSBram Moolenaar syn region texRefZone matchgroup=texStatement start="\\v\=ref{" end="}\|%stopzone\>" contains=@texRefGroup 653d960d76dSBram Moolenaar syn region texRefOption contained matchgroup=Delimiter start='\[' end=']' contains=@texRefGroup,texRefZone nextgroup=texRefOption,texCite 654d960d76dSBram Moolenaar syn region texCite contained matchgroup=Delimiter start='{' end='}' contains=@texRefGroup,texRefZone,texCite 655ac7bd638SBram Moolenaarendif 6561d9215b9SBram Moolenaarsyn match texRefZone '\\cite\%([tp]\*\=\)\=\>' nextgroup=texRefOption,texCite 657071d4279SBram Moolenaar 658071d4279SBram Moolenaar" Handle newcommand, newenvironment : {{{1 659071d4279SBram Moolenaarsyn match texNewCmd "\\newcommand\>" nextgroup=texCmdName skipwhite skipnl 660f391327aSBram Moolenaarif s:tex_fast =~# 'V' 661071d4279SBram Moolenaar syn region texCmdName contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texCmdArgs,texCmdBody skipwhite skipnl 662071d4279SBram Moolenaar syn region texCmdArgs contained matchgroup=Delimiter start="\["rs=s+1 end="]" nextgroup=texCmdBody skipwhite skipnl 663071d4279SBram Moolenaar syn region texCmdBody contained matchgroup=Delimiter start="{"rs=s+1 skip="\\\\\|\\[{}]" matchgroup=Delimiter end="}" contains=@texCmdGroup 664ac7bd638SBram Moolenaarendif 665071d4279SBram Moolenaarsyn match texNewEnv "\\newenvironment\>" nextgroup=texEnvName skipwhite skipnl 666f391327aSBram Moolenaarif s:tex_fast =~# 'V' 667071d4279SBram Moolenaar syn region texEnvName contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texEnvBgn skipwhite skipnl 668071d4279SBram Moolenaar syn region texEnvBgn contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texEnvEnd skipwhite skipnl contains=@texEnvGroup 669071d4279SBram Moolenaar syn region texEnvEnd contained matchgroup=Delimiter start="{"rs=s+1 end="}" skipwhite skipnl contains=@texEnvGroup 670ac7bd638SBram Moolenaarendif 671071d4279SBram Moolenaar 672071d4279SBram Moolenaar" Definitions/Commands: {{{1 673071d4279SBram Moolenaarsyn match texDefCmd "\\def\>" nextgroup=texDefName skipwhite skipnl 674071d4279SBram Moolenaarif b:tex_stylish 675071d4279SBram Moolenaar syn match texDefName contained "\\[a-zA-Z@]\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl 676071d4279SBram Moolenaar syn match texDefName contained "\\[^a-zA-Z@]" nextgroup=texDefParms,texCmdBody skipwhite skipnl 677071d4279SBram Moolenaarelse 678071d4279SBram Moolenaar syn match texDefName contained "\\\a\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl 679071d4279SBram Moolenaar syn match texDefName contained "\\\A" nextgroup=texDefParms,texCmdBody skipwhite skipnl 680071d4279SBram Moolenaarendif 681071d4279SBram Moolenaarsyn match texDefParms contained "#[^{]*" contains=texDefParm nextgroup=texCmdBody skipwhite skipnl 682071d4279SBram Moolenaarsyn match texDefParm contained "#\d\+" 683071d4279SBram Moolenaar 684071d4279SBram Moolenaar" TeX Lengths: {{{1 6859964e468SBram Moolenaarsyn match texLength "\<\d\+\([.,]\d\+\)\=\s*\(true\)\=\s*\(bp\|cc\|cm\|dd\|em\|ex\|in\|mm\|pc\|pt\|sp\)\>" 686071d4279SBram Moolenaar 687071d4279SBram Moolenaar" TeX String Delimiters: {{{1 688071d4279SBram Moolenaarsyn match texString "\(``\|''\|,,\)" 689071d4279SBram Moolenaar 6905c73622aSBram Moolenaar" makeatletter -- makeatother sections 691a0f849eeSBram Moolenaarif !s:tex_no_error 692f391327aSBram Moolenaar if s:tex_fast =~# 'S' 6935c73622aSBram Moolenaar syn region texStyle matchgroup=texStatement start='\\makeatletter' end='\\makeatother' contains=@texStyleGroup contained 694ac7bd638SBram Moolenaar endif 6955c73622aSBram Moolenaar syn match texStyleStatement "\\[a-zA-Z@]\+" contained 696f391327aSBram Moolenaar if s:tex_fast =~# 'S' 6975c73622aSBram Moolenaar syn region texStyleMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texStyleGroup,texError contained 6985c73622aSBram Moolenaar syn region texStyleMatcher matchgroup=Delimiter start="\[" end="]" contains=@texStyleGroup,texError contained 6995c73622aSBram Moolenaar endif 700ac7bd638SBram Moolenaarendif 7015c73622aSBram Moolenaar 7027fc0c065SBram Moolenaar" Conceal mode support (supports set cole=2) {{{1 703b2c0350cSBram Moolenaarif has("conceal") && &enc == 'utf-8' 704611df5b9SBram Moolenaar 705611df5b9SBram Moolenaar " Math Symbols {{{2 7067fc0c065SBram Moolenaar " (many of these symbols were contributed by Björn Winckler) 707f391327aSBram Moolenaar if s:tex_conceal =~# 'm' 7087fc0c065SBram Moolenaar let s:texMathList=[ 709adc2182cSBram Moolenaar \ ['|' , '‖'], 710d960d76dSBram Moolenaar \ ['aleph' , 'ℵ'], 7116be7f873SBram Moolenaar \ ['amalg' , '∐'], 7127fc0c065SBram Moolenaar \ ['angle' , '∠'], 7137fc0c065SBram Moolenaar \ ['approx' , '≈'], 7147fc0c065SBram Moolenaar \ ['ast' , '∗'], 7157fc0c065SBram Moolenaar \ ['asymp' , '≍'], 716d960d76dSBram Moolenaar \ ['backslash' , '∖'], 7177fc0c065SBram Moolenaar \ ['bigcap' , '∩'], 7186be7f873SBram Moolenaar \ ['bigcirc' , '○'], 7197fc0c065SBram Moolenaar \ ['bigcup' , '∪'], 7207fc0c065SBram Moolenaar \ ['bigodot' , '⊙'], 7217fc0c065SBram Moolenaar \ ['bigoplus' , '⊕'], 7227fc0c065SBram Moolenaar \ ['bigotimes' , '⊗'], 7237fc0c065SBram Moolenaar \ ['bigsqcup' , '⊔'], 7247fc0c065SBram Moolenaar \ ['bigtriangledown', '∇'], 7256be7f873SBram Moolenaar \ ['bigtriangleup' , '∆'], 7267fc0c065SBram Moolenaar \ ['bigvee' , '⋁'], 7277fc0c065SBram Moolenaar \ ['bigwedge' , '⋀'], 7287fc0c065SBram Moolenaar \ ['bot' , '⊥'], 7296be7f873SBram Moolenaar \ ['bowtie' , '⋈'], 7306be7f873SBram Moolenaar \ ['bullet' , '•'], 7317fc0c065SBram Moolenaar \ ['cap' , '∩'], 7327fc0c065SBram Moolenaar \ ['cdot' , '·'], 7337fc0c065SBram Moolenaar \ ['cdots' , '⋯'], 7347fc0c065SBram Moolenaar \ ['circ' , '∘'], 735d960d76dSBram Moolenaar \ ['clubsuit' , '♣'], 7367fc0c065SBram Moolenaar \ ['cong' , '≅'], 7377fc0c065SBram Moolenaar \ ['coprod' , '∐'], 738d960d76dSBram Moolenaar \ ['copyright' , '©'], 7397fc0c065SBram Moolenaar \ ['cup' , '∪'], 7406be7f873SBram Moolenaar \ ['dagger' , '†'], 7417fc0c065SBram Moolenaar \ ['dashv' , '⊣'], 7426be7f873SBram Moolenaar \ ['ddagger' , '‡'], 7436be7f873SBram Moolenaar \ ['ddots' , '⋱'], 7447fc0c065SBram Moolenaar \ ['diamond' , '⋄'], 745d960d76dSBram Moolenaar \ ['diamondsuit' , '♢'], 7467fc0c065SBram Moolenaar \ ['div' , '÷'], 7477fc0c065SBram Moolenaar \ ['doteq' , '≐'], 7486be7f873SBram Moolenaar \ ['dots' , '…'], 7497fc0c065SBram Moolenaar \ ['downarrow' , '↓'], 7507fc0c065SBram Moolenaar \ ['Downarrow' , '⇓'], 7516be7f873SBram Moolenaar \ ['ell' , 'ℓ'], 7527fc0c065SBram Moolenaar \ ['emptyset' , '∅'], 7537fc0c065SBram Moolenaar \ ['equiv' , '≡'], 7547fc0c065SBram Moolenaar \ ['exists' , '∃'], 755d960d76dSBram Moolenaar \ ['flat' , '♭'], 7567fc0c065SBram Moolenaar \ ['forall' , '∀'], 7576be7f873SBram Moolenaar \ ['frown' , '⁔'], 7587fc0c065SBram Moolenaar \ ['ge' , '≥'], 7597fc0c065SBram Moolenaar \ ['geq' , '≥'], 7607fc0c065SBram Moolenaar \ ['gets' , '←'], 7616be7f873SBram Moolenaar \ ['gg' , '⟫'], 762d960d76dSBram Moolenaar \ ['hbar' , 'ℏ'], 763d960d76dSBram Moolenaar \ ['heartsuit' , '♡'], 7647fc0c065SBram Moolenaar \ ['hookleftarrow' , '↩'], 7657fc0c065SBram Moolenaar \ ['hookrightarrow' , '↪'], 766690afe1fSBram Moolenaar \ ['iff' , '⇔'], 7677fc0c065SBram Moolenaar \ ['Im' , 'ℑ'], 768d960d76dSBram Moolenaar \ ['imath' , 'ɩ'], 7697fc0c065SBram Moolenaar \ ['in' , '∈'], 7707fc0c065SBram Moolenaar \ ['infty' , '∞'], 7717fc0c065SBram Moolenaar \ ['int' , '∫'], 772690afe1fSBram Moolenaar \ ['jmath' , ''], 773690afe1fSBram Moolenaar \ ['land' , '∧'], 7747fc0c065SBram Moolenaar \ ['lceil' , '⌈'], 7757fc0c065SBram Moolenaar \ ['ldots' , '…'], 7767fc0c065SBram Moolenaar \ ['le' , '≤'], 77765e0d77aSBram Moolenaar \ ['left|' , '|'], 778*2547aa93SBram Moolenaar \ ['left\\|' , '‖'], 7797fc0c065SBram Moolenaar \ ['left(' , '('], 7807fc0c065SBram Moolenaar \ ['left\[' , '['], 7817fc0c065SBram Moolenaar \ ['left\\{' , '{'], 782e2719096SBram Moolenaar \ ['leftarrow' , '←'], 783e2719096SBram Moolenaar \ ['Leftarrow' , '⇐'], 7846be7f873SBram Moolenaar \ ['leftharpoondown', '↽'], 7856be7f873SBram Moolenaar \ ['leftharpoonup' , '↼'], 78697d62497SBram Moolenaar \ ['leftrightarrow' , '↔'], 7876be7f873SBram Moolenaar \ ['Leftrightarrow' , '⇔'], 7887fc0c065SBram Moolenaar \ ['leq' , '≤'], 7896be7f873SBram Moolenaar \ ['leq' , '≤'], 7907fc0c065SBram Moolenaar \ ['lfloor' , '⌊'], 7916be7f873SBram Moolenaar \ ['ll' , '≪'], 792adc2182cSBram Moolenaar \ ['lmoustache' , '╭'], 793690afe1fSBram Moolenaar \ ['lor' , '∨'], 7947fc0c065SBram Moolenaar \ ['mapsto' , '↦'], 7957fc0c065SBram Moolenaar \ ['mid' , '∣'], 7966be7f873SBram Moolenaar \ ['models' , '╞'], 7977fc0c065SBram Moolenaar \ ['mp' , '∓'], 7987fc0c065SBram Moolenaar \ ['nabla' , '∇'], 799d960d76dSBram Moolenaar \ ['natural' , '♮'], 8007fc0c065SBram Moolenaar \ ['ne' , '≠'], 8016be7f873SBram Moolenaar \ ['nearrow' , '↗'], 8027fc0c065SBram Moolenaar \ ['neg' , '¬'], 8037fc0c065SBram Moolenaar \ ['neq' , '≠'], 8047fc0c065SBram Moolenaar \ ['ni' , '∋'], 8057fc0c065SBram Moolenaar \ ['notin' , '∉'], 8067fc0c065SBram Moolenaar \ ['nwarrow' , '↖'], 8077fc0c065SBram Moolenaar \ ['odot' , '⊙'], 8087fc0c065SBram Moolenaar \ ['oint' , '∮'], 8097fc0c065SBram Moolenaar \ ['ominus' , '⊖'], 8107fc0c065SBram Moolenaar \ ['oplus' , '⊕'], 8117fc0c065SBram Moolenaar \ ['oslash' , '⊘'], 8127fc0c065SBram Moolenaar \ ['otimes' , '⊗'], 8137fc0c065SBram Moolenaar \ ['owns' , '∋'], 814d960d76dSBram Moolenaar \ ['P' , '¶'], 8156be7f873SBram Moolenaar \ ['parallel' , '║'], 8167fc0c065SBram Moolenaar \ ['partial' , '∂'], 8177fc0c065SBram Moolenaar \ ['perp' , '⊥'], 8187fc0c065SBram Moolenaar \ ['pm' , '±'], 8197fc0c065SBram Moolenaar \ ['prec' , '≺'], 8207fc0c065SBram Moolenaar \ ['preceq' , '⪯'], 821d960d76dSBram Moolenaar \ ['prime' , '′'], 8227fc0c065SBram Moolenaar \ ['prod' , '∏'], 8237fc0c065SBram Moolenaar \ ['propto' , '∝'], 8247fc0c065SBram Moolenaar \ ['rceil' , '⌉'], 8257fc0c065SBram Moolenaar \ ['Re' , 'ℜ'], 826723dd946SBram Moolenaar \ ['quad' , ' '], 827723dd946SBram Moolenaar \ ['qquad' , ' '], 8287fc0c065SBram Moolenaar \ ['rfloor' , '⌋'], 82965e0d77aSBram Moolenaar \ ['right|' , '|'], 83065e0d77aSBram Moolenaar \ ['right\\|' , '‖'], 8317fc0c065SBram Moolenaar \ ['right)' , ')'], 8327fc0c065SBram Moolenaar \ ['right]' , ']'], 8337fc0c065SBram Moolenaar \ ['right\\}' , '}'], 834e2719096SBram Moolenaar \ ['rightarrow' , '→'], 835e2719096SBram Moolenaar \ ['Rightarrow' , '⇒'], 8366be7f873SBram Moolenaar \ ['rightleftharpoons', '⇌'], 837adc2182cSBram Moolenaar \ ['rmoustache' , '╮'], 838d960d76dSBram Moolenaar \ ['S' , '§'], 8397fc0c065SBram Moolenaar \ ['searrow' , '↘'], 8407fc0c065SBram Moolenaar \ ['setminus' , '∖'], 841d960d76dSBram Moolenaar \ ['sharp' , '♯'], 8427fc0c065SBram Moolenaar \ ['sim' , '∼'], 8436be7f873SBram Moolenaar \ ['simeq' , '⋍'], 8446be7f873SBram Moolenaar \ ['smile' , '‿'], 845d960d76dSBram Moolenaar \ ['spadesuit' , '♠'], 8467fc0c065SBram Moolenaar \ ['sqcap' , '⊓'], 8477fc0c065SBram Moolenaar \ ['sqcup' , '⊔'], 8487fc0c065SBram Moolenaar \ ['sqsubset' , '⊏'], 8497fc0c065SBram Moolenaar \ ['sqsubseteq' , '⊑'], 8507fc0c065SBram Moolenaar \ ['sqsupset' , '⊐'], 8517fc0c065SBram Moolenaar \ ['sqsupseteq' , '⊒'], 8526be7f873SBram Moolenaar \ ['star' , '✫'], 8537fc0c065SBram Moolenaar \ ['subset' , '⊂'], 8547fc0c065SBram Moolenaar \ ['subseteq' , '⊆'], 8557fc0c065SBram Moolenaar \ ['succ' , '≻'], 8567fc0c065SBram Moolenaar \ ['succeq' , '⪰'], 8577fc0c065SBram Moolenaar \ ['sum' , '∑'], 8586be7f873SBram Moolenaar \ ['supset' , '⊃'], 8597fc0c065SBram Moolenaar \ ['supseteq' , '⊇'], 8607fc0c065SBram Moolenaar \ ['surd' , '√'], 8617fc0c065SBram Moolenaar \ ['swarrow' , '↙'], 8627fc0c065SBram Moolenaar \ ['times' , '×'], 8637fc0c065SBram Moolenaar \ ['to' , '→'], 8647fc0c065SBram Moolenaar \ ['top' , '⊤'], 865d960d76dSBram Moolenaar \ ['triangle' , '∆'], 8667fc0c065SBram Moolenaar \ ['triangleleft' , '⊲'], 8677fc0c065SBram Moolenaar \ ['triangleright' , '⊳'], 8687fc0c065SBram Moolenaar \ ['uparrow' , '↑'], 8697fc0c065SBram Moolenaar \ ['Uparrow' , '⇑'], 8707fc0c065SBram Moolenaar \ ['updownarrow' , '↕'], 8717fc0c065SBram Moolenaar \ ['Updownarrow' , '⇕'], 8727fc0c065SBram Moolenaar \ ['vdash' , '⊢'], 8737fc0c065SBram Moolenaar \ ['vdots' , '⋮'], 8747fc0c065SBram Moolenaar \ ['vee' , '∨'], 8757fc0c065SBram Moolenaar \ ['wedge' , '∧'], 876d960d76dSBram Moolenaar \ ['wp' , '℘'], 8777fc0c065SBram Moolenaar \ ['wr' , '≀']] 878690afe1fSBram Moolenaar if &ambw == "double" || exists("g:tex_usedblwidth") 879690afe1fSBram Moolenaar let s:texMathList= s:texMathList + [ 880690afe1fSBram Moolenaar \ ['right\\rangle' , '〉'], 881690afe1fSBram Moolenaar \ ['left\\langle' , '〈']] 882690afe1fSBram Moolenaar else 883690afe1fSBram Moolenaar let s:texMathList= s:texMathList + [ 884690afe1fSBram Moolenaar \ ['right\\rangle' , '>'], 885690afe1fSBram Moolenaar \ ['left\\langle' , '<']] 886690afe1fSBram Moolenaar endif 8877fc0c065SBram Moolenaar for texmath in s:texMathList 888f391327aSBram Moolenaar if texmath[0] =~# '\w$' 8897fc0c065SBram Moolenaar exe "syn match texMathSymbol '\\\\".texmath[0]."\\>' contained conceal cchar=".texmath[1] 89081af9250SBram Moolenaar else 89181af9250SBram Moolenaar exe "syn match texMathSymbol '\\\\".texmath[0]."' contained conceal cchar=".texmath[1] 89281af9250SBram Moolenaar endif 8937fc0c065SBram Moolenaar endfor 89474cbdf03SBram Moolenaar 89574cbdf03SBram Moolenaar if &ambw == "double" 89674cbdf03SBram Moolenaar syn match texMathSymbol '\\gg\>' contained conceal cchar=≫ 89774cbdf03SBram Moolenaar syn match texMathSymbol '\\ll\>' contained conceal cchar=≪ 89874cbdf03SBram Moolenaar else 89974cbdf03SBram Moolenaar syn match texMathSymbol '\\gg\>' contained conceal cchar=⟫ 90074cbdf03SBram Moolenaar syn match texMathSymbol '\\ll\>' contained conceal cchar=⟪ 90174cbdf03SBram Moolenaar endif 902d960d76dSBram Moolenaar 903d960d76dSBram Moolenaar syn match texMathSymbol '\\hat{a}' contained conceal cchar=â 904d960d76dSBram Moolenaar syn match texMathSymbol '\\hat{A}' contained conceal cchar= 905d960d76dSBram Moolenaar syn match texMathSymbol '\\hat{c}' contained conceal cchar=ĉ 906d960d76dSBram Moolenaar syn match texMathSymbol '\\hat{C}' contained conceal cchar=Ĉ 907d960d76dSBram Moolenaar syn match texMathSymbol '\\hat{e}' contained conceal cchar=ê 908d960d76dSBram Moolenaar syn match texMathSymbol '\\hat{E}' contained conceal cchar=Ê 909d960d76dSBram Moolenaar syn match texMathSymbol '\\hat{g}' contained conceal cchar=ĝ 910d960d76dSBram Moolenaar syn match texMathSymbol '\\hat{G}' contained conceal cchar=Ĝ 911d960d76dSBram Moolenaar syn match texMathSymbol '\\hat{i}' contained conceal cchar=î 912d960d76dSBram Moolenaar syn match texMathSymbol '\\hat{I}' contained conceal cchar=Î 913d960d76dSBram Moolenaar syn match texMathSymbol '\\hat{o}' contained conceal cchar=ô 914d960d76dSBram Moolenaar syn match texMathSymbol '\\hat{O}' contained conceal cchar=Ô 915d960d76dSBram Moolenaar syn match texMathSymbol '\\hat{s}' contained conceal cchar=ŝ 916d960d76dSBram Moolenaar syn match texMathSymbol '\\hat{S}' contained conceal cchar=Ŝ 917d960d76dSBram Moolenaar syn match texMathSymbol '\\hat{u}' contained conceal cchar=û 918d960d76dSBram Moolenaar syn match texMathSymbol '\\hat{U}' contained conceal cchar=Û 919d960d76dSBram Moolenaar syn match texMathSymbol '\\hat{w}' contained conceal cchar=ŵ 920d960d76dSBram Moolenaar syn match texMathSymbol '\\hat{W}' contained conceal cchar=Ŵ 921d960d76dSBram Moolenaar syn match texMathSymbol '\\hat{y}' contained conceal cchar=ŷ 922d960d76dSBram Moolenaar syn match texMathSymbol '\\hat{Y}' contained conceal cchar=Ŷ 923e2719096SBram Moolenaar" syn match texMathSymbol '\\bar{a}' contained conceal cchar=a̅ 92451ad4eaaSBram Moolenaar 92551ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{B}' contained conceal cchar=Ḃ 92651ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{b}' contained conceal cchar=ḃ 92751ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{D}' contained conceal cchar=Ḋ 92851ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{d}' contained conceal cchar=ḋ 92951ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{F}' contained conceal cchar=Ḟ 93051ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{f}' contained conceal cchar=ḟ 93151ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{H}' contained conceal cchar=Ḣ 93251ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{h}' contained conceal cchar=ḣ 93351ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{M}' contained conceal cchar=Ṁ 93451ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{m}' contained conceal cchar=ṁ 93551ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{N}' contained conceal cchar=Ṅ 93651ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{n}' contained conceal cchar=ṅ 93751ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{P}' contained conceal cchar=Ṗ 93851ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{p}' contained conceal cchar=ṗ 93951ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{R}' contained conceal cchar=Ṙ 94051ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{r}' contained conceal cchar=ṙ 94151ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{S}' contained conceal cchar=Ṡ 94251ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{s}' contained conceal cchar=ṡ 94351ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{T}' contained conceal cchar=Ṫ 94451ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{t}' contained conceal cchar=ṫ 94551ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{W}' contained conceal cchar=Ẇ 94651ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{w}' contained conceal cchar=ẇ 94751ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{X}' contained conceal cchar=Ẋ 94851ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{x}' contained conceal cchar=ẋ 94951ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{Y}' contained conceal cchar=Ẏ 95051ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{y}' contained conceal cchar=ẏ 95151ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{Z}' contained conceal cchar=Ż 95251ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{z}' contained conceal cchar=ż 95351ad4eaaSBram Moolenaar 95451ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{C}' contained conceal cchar=Ċ 95551ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{c}' contained conceal cchar=ċ 95651ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{E}' contained conceal cchar=Ė 95751ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{e}' contained conceal cchar=ė 95851ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{G}' contained conceal cchar=Ġ 95951ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{g}' contained conceal cchar=ġ 96051ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{I}' contained conceal cchar=İ 96151ad4eaaSBram Moolenaar 96251ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{A}' contained conceal cchar=Ȧ 96351ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{a}' contained conceal cchar=ȧ 96451ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{O}' contained conceal cchar=Ȯ 96551ad4eaaSBram Moolenaar syn match texMathSymbol '\\dot{o}' contained conceal cchar=ȯ 9664b22cdb0SBram Moolenaar endif 967611df5b9SBram Moolenaar 968611df5b9SBram Moolenaar " Greek {{{2 969f391327aSBram Moolenaar if s:tex_conceal =~# 'g' 970611df5b9SBram Moolenaar fun! s:Greek(group,pat,cchar) 971611df5b9SBram Moolenaar exe 'syn match '.a:group." '".a:pat."' contained conceal cchar=".a:cchar 972611df5b9SBram Moolenaar endfun 973611df5b9SBram Moolenaar call s:Greek('texGreek','\\alpha\>' ,'α') 974611df5b9SBram Moolenaar call s:Greek('texGreek','\\beta\>' ,'β') 975611df5b9SBram Moolenaar call s:Greek('texGreek','\\gamma\>' ,'γ') 976611df5b9SBram Moolenaar call s:Greek('texGreek','\\delta\>' ,'δ') 977611df5b9SBram Moolenaar call s:Greek('texGreek','\\epsilon\>' ,'ϵ') 978611df5b9SBram Moolenaar call s:Greek('texGreek','\\varepsilon\>' ,'ε') 979611df5b9SBram Moolenaar call s:Greek('texGreek','\\zeta\>' ,'ζ') 980611df5b9SBram Moolenaar call s:Greek('texGreek','\\eta\>' ,'η') 981611df5b9SBram Moolenaar call s:Greek('texGreek','\\theta\>' ,'θ') 982611df5b9SBram Moolenaar call s:Greek('texGreek','\\vartheta\>' ,'ϑ') 9836c1e1570SBram Moolenaar call s:Greek('texGreek','\\iota\>' ,'ι') 984611df5b9SBram Moolenaar call s:Greek('texGreek','\\kappa\>' ,'κ') 985611df5b9SBram Moolenaar call s:Greek('texGreek','\\lambda\>' ,'λ') 986611df5b9SBram Moolenaar call s:Greek('texGreek','\\mu\>' ,'μ') 987611df5b9SBram Moolenaar call s:Greek('texGreek','\\nu\>' ,'ν') 988611df5b9SBram Moolenaar call s:Greek('texGreek','\\xi\>' ,'ξ') 989611df5b9SBram Moolenaar call s:Greek('texGreek','\\pi\>' ,'π') 990611df5b9SBram Moolenaar call s:Greek('texGreek','\\varpi\>' ,'ϖ') 991611df5b9SBram Moolenaar call s:Greek('texGreek','\\rho\>' ,'ρ') 992611df5b9SBram Moolenaar call s:Greek('texGreek','\\varrho\>' ,'ϱ') 993611df5b9SBram Moolenaar call s:Greek('texGreek','\\sigma\>' ,'σ') 994611df5b9SBram Moolenaar call s:Greek('texGreek','\\varsigma\>' ,'ς') 995611df5b9SBram Moolenaar call s:Greek('texGreek','\\tau\>' ,'τ') 996611df5b9SBram Moolenaar call s:Greek('texGreek','\\upsilon\>' ,'υ') 997e2719096SBram Moolenaar call s:Greek('texGreek','\\phi\>' ,'ϕ') 998e2719096SBram Moolenaar call s:Greek('texGreek','\\varphi\>' ,'φ') 999611df5b9SBram Moolenaar call s:Greek('texGreek','\\chi\>' ,'χ') 1000611df5b9SBram Moolenaar call s:Greek('texGreek','\\psi\>' ,'ψ') 1001611df5b9SBram Moolenaar call s:Greek('texGreek','\\omega\>' ,'ω') 1002611df5b9SBram Moolenaar call s:Greek('texGreek','\\Gamma\>' ,'Γ') 1003611df5b9SBram Moolenaar call s:Greek('texGreek','\\Delta\>' ,'Δ') 1004611df5b9SBram Moolenaar call s:Greek('texGreek','\\Theta\>' ,'Θ') 1005611df5b9SBram Moolenaar call s:Greek('texGreek','\\Lambda\>' ,'Λ') 10066c1e1570SBram Moolenaar call s:Greek('texGreek','\\Xi\>' ,'Ξ') 1007611df5b9SBram Moolenaar call s:Greek('texGreek','\\Pi\>' ,'Π') 1008611df5b9SBram Moolenaar call s:Greek('texGreek','\\Sigma\>' ,'Σ') 1009611df5b9SBram Moolenaar call s:Greek('texGreek','\\Upsilon\>' ,'Υ') 1010611df5b9SBram Moolenaar call s:Greek('texGreek','\\Phi\>' ,'Φ') 10116c1e1570SBram Moolenaar call s:Greek('texGreek','\\Chi\>' ,'Χ') 1012611df5b9SBram Moolenaar call s:Greek('texGreek','\\Psi\>' ,'Ψ') 1013611df5b9SBram Moolenaar call s:Greek('texGreek','\\Omega\>' ,'Ω') 1014e0021c79SBram Moolenaar delfun s:Greek 10154b22cdb0SBram Moolenaar endif 1016611df5b9SBram Moolenaar 1017611df5b9SBram Moolenaar " Superscripts/Subscripts {{{2 1018f391327aSBram Moolenaar if s:tex_conceal =~# 's' 1019f391327aSBram Moolenaar if s:tex_fast =~# 's' 1020d960d76dSBram Moolenaar syn region texSuperscript matchgroup=Delimiter start='\^{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSuperscripts,texStatement,texSubscript,texSuperscript,texMathMatcher 1021d960d76dSBram Moolenaar syn region texSubscript matchgroup=Delimiter start='_{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSubscripts,texStatement,texSubscript,texSuperscript,texMathMatcher 1022ac7bd638SBram Moolenaar endif 1023541f92d6SBram Moolenaar " s:SuperSub: 1024611df5b9SBram Moolenaar fun! s:SuperSub(group,leader,pat,cchar) 102503413f44SBram Moolenaar if a:pat =~# '^\\' || (a:leader == '\^' && a:pat =~# s:tex_superscripts) || (a:leader == '_' && a:pat =~# s:tex_subscripts) 10266e932461SBram Moolenaar" call Decho("SuperSub: group<".a:group."> leader<".a:leader."> pat<".a:pat."> cchar<".a:cchar.">") 1027611df5b9SBram Moolenaar exe 'syn match '.a:group." '".a:leader.a:pat."' contained conceal cchar=".a:cchar 1028611df5b9SBram Moolenaar exe 'syn match '.a:group."s '".a:pat ."' contained conceal cchar=".a:cchar.' nextgroup='.a:group.'s' 10296e932461SBram Moolenaar endif 1030611df5b9SBram Moolenaar endfun 1031611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','0','⁰') 1032611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','1','¹') 1033611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','2','²') 1034611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','3','³') 1035611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','4','⁴') 1036611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','5','⁵') 1037611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','6','⁶') 1038611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','7','⁷') 1039611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','8','⁸') 1040611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','9','⁹') 1041611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','a','ᵃ') 1042611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','b','ᵇ') 1043611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','c','ᶜ') 1044611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','d','ᵈ') 1045611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','e','ᵉ') 1046611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','f','ᶠ') 1047611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','g','ᵍ') 1048611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','h','ʰ') 1049611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','i','ⁱ') 1050611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','j','ʲ') 1051611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','k','ᵏ') 1052611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','l','ˡ') 1053611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','m','ᵐ') 1054611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','n','ⁿ') 1055611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','o','ᵒ') 1056611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','p','ᵖ') 1057611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','r','ʳ') 1058611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','s','ˢ') 1059611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','t','ᵗ') 1060611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','u','ᵘ') 1061611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','v','ᵛ') 1062611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','w','ʷ') 1063611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','x','ˣ') 1064611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','y','ʸ') 1065611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','z','ᶻ') 1066611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','A','ᴬ') 1067611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','B','ᴮ') 1068611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','D','ᴰ') 1069611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','E','ᴱ') 1070611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','G','ᴳ') 1071611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','H','ᴴ') 1072611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','I','ᴵ') 1073611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','J','ᴶ') 1074611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','K','ᴷ') 1075611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','L','ᴸ') 1076611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','M','ᴹ') 1077611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','N','ᴺ') 1078611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','O','ᴼ') 1079611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','P','ᴾ') 1080611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','R','ᴿ') 1081611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','T','ᵀ') 1082611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','U','ᵁ') 1083388a5d4fSBram Moolenaar call s:SuperSub('texSuperscript','\^','V','ⱽ') 1084611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','W','ᵂ') 10856be7f873SBram Moolenaar call s:SuperSub('texSuperscript','\^',',','︐') 10866be7f873SBram Moolenaar call s:SuperSub('texSuperscript','\^',':','︓') 10876be7f873SBram Moolenaar call s:SuperSub('texSuperscript','\^',';','︔') 1088611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','+','⁺') 1089611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','-','⁻') 1090611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','<','˂') 1091611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','>','˃') 1092611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','/','ˊ') 1093611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','(','⁽') 1094611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^',')','⁾') 1095611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','\.','˙') 1096611df5b9SBram Moolenaar call s:SuperSub('texSuperscript','\^','=','˭') 1097611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','0','₀') 1098611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','1','₁') 1099611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','2','₂') 1100611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','3','₃') 1101611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','4','₄') 1102611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','5','₅') 1103611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','6','₆') 1104611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','7','₇') 1105611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','8','₈') 1106611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','9','₉') 1107611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','a','ₐ') 1108611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','e','ₑ') 1109802a0d90SBram Moolenaar call s:SuperSub('texSubscript','_','h','ₕ') 1110611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','i','ᵢ') 1111802a0d90SBram Moolenaar call s:SuperSub('texSubscript','_','j','ⱼ') 1112802a0d90SBram Moolenaar call s:SuperSub('texSubscript','_','k','ₖ') 1113802a0d90SBram Moolenaar call s:SuperSub('texSubscript','_','l','ₗ') 1114802a0d90SBram Moolenaar call s:SuperSub('texSubscript','_','m','ₘ') 1115802a0d90SBram Moolenaar call s:SuperSub('texSubscript','_','n','ₙ') 1116611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','o','ₒ') 1117802a0d90SBram Moolenaar call s:SuperSub('texSubscript','_','p','ₚ') 1118802a0d90SBram Moolenaar call s:SuperSub('texSubscript','_','r','ᵣ') 1119802a0d90SBram Moolenaar call s:SuperSub('texSubscript','_','s','ₛ') 1120802a0d90SBram Moolenaar call s:SuperSub('texSubscript','_','t','ₜ') 1121611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','u','ᵤ') 1122802a0d90SBram Moolenaar call s:SuperSub('texSubscript','_','v','ᵥ') 1123802a0d90SBram Moolenaar call s:SuperSub('texSubscript','_','x','ₓ') 11246be7f873SBram Moolenaar call s:SuperSub('texSubscript','_',',','︐') 1125611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','+','₊') 1126611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','-','₋') 1127611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','/','ˏ') 1128611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','(','₍') 1129611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_',')','₎') 1130611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','\.','‸') 1131611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','r','ᵣ') 1132611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','v','ᵥ') 1133611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','x','ₓ') 1134611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','\\beta\>' ,'ᵦ') 1135611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','\\delta\>','ᵨ') 1136611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','\\phi\>' ,'ᵩ') 1137611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','\\gamma\>','ᵧ') 1138611df5b9SBram Moolenaar call s:SuperSub('texSubscript','_','\\chi\>' ,'ᵪ') 1139802a0d90SBram Moolenaar 1140e0021c79SBram Moolenaar delfun s:SuperSub 11414b22cdb0SBram Moolenaar endif 1142611df5b9SBram Moolenaar 1143b0d45e7fSBram Moolenaar " Accented characters and Ligatures: {{{2 1144f391327aSBram Moolenaar if s:tex_conceal =~# 'a' 1145611df5b9SBram Moolenaar if b:tex_stylish 1146611df5b9SBram Moolenaar syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1 1147611df5b9SBram Moolenaar syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1 1148b0d45e7fSBram Moolenaar syn match texLigature '--' 1149b0d45e7fSBram Moolenaar syn match texLigature '---' 1150611df5b9SBram Moolenaar else 1151e0021c79SBram Moolenaar fun! s:Accents(chr,...) 1152e0021c79SBram Moolenaar let i= 1 1153a6878375SBram Moolenaar for accent in ["`","\\'","^",'"','\~','\.','=',"c","H","k","r","u","v"] 1154e0021c79SBram Moolenaar if i > a:0 1155e0021c79SBram Moolenaar break 1156e0021c79SBram Moolenaar endif 11577fc0c065SBram Moolenaar if strlen(a:{i}) == 0 || a:{i} == ' ' || a:{i} == '?' 1158e0021c79SBram Moolenaar let i= i + 1 1159e0021c79SBram Moolenaar continue 1160e0021c79SBram Moolenaar endif 1161f391327aSBram Moolenaar if accent =~# '\a' 11627fc0c065SBram Moolenaar exe "syn match texAccent '".'\\'.accent.'\(\s*{'.a:chr.'}\|\s\+'.a:chr.'\)'."' conceal cchar=".a:{i} 11637fc0c065SBram Moolenaar else 11647fc0c065SBram Moolenaar exe "syn match texAccent '".'\\'.accent.'\s*\({'.a:chr.'}\|'.a:chr.'\)'."' conceal cchar=".a:{i} 11657fc0c065SBram Moolenaar endif 1166e0021c79SBram Moolenaar let i= i + 1 1167e0021c79SBram Moolenaar endfor 1168e0021c79SBram Moolenaar endfun 1169a6878375SBram Moolenaar " \` \' \^ \" \~ \. \= \c \H \k \r \u \v 1170a6878375SBram Moolenaar call s:Accents('a','à','á','â','ä','ã','ȧ','ā',' ',' ','ą','å','ă','ǎ') 1171a6878375SBram Moolenaar call s:Accents('A','À','Á','Â','Ä','Ã','Ȧ','Ā',' ',' ','Ą','Å','Ă','Ǎ') 1172a6878375SBram Moolenaar call s:Accents('c',' ','ć','ĉ',' ',' ','ċ',' ','ç',' ',' ',' ',' ','č') 1173a6878375SBram Moolenaar call s:Accents('C',' ','Ć','Ĉ',' ',' ','Ċ',' ','Ç',' ',' ',' ',' ','Č') 1174a6878375SBram Moolenaar call s:Accents('d',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ď') 1175a6878375SBram Moolenaar call s:Accents('D',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Ď') 1176a6878375SBram Moolenaar call s:Accents('e','è','é','ê','ë','ẽ','ė','ē','ȩ',' ','ę',' ','ĕ','ě') 1177a6878375SBram Moolenaar call s:Accents('E','È','É','Ê','Ë','Ẽ','Ė','Ē','Ȩ',' ','Ę',' ','Ĕ','Ě') 1178a6878375SBram Moolenaar call s:Accents('g',' ','ǵ','ĝ',' ',' ','ġ',' ','ģ',' ',' ',' ','ğ','ǧ') 1179a6878375SBram Moolenaar call s:Accents('G',' ','Ǵ','Ĝ',' ',' ','Ġ',' ','Ģ',' ',' ',' ','Ğ','Ǧ') 1180a6878375SBram Moolenaar call s:Accents('h',' ',' ','ĥ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ȟ') 1181a6878375SBram Moolenaar call s:Accents('H',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Ȟ') 1182a6878375SBram Moolenaar call s:Accents('i','ì','í','î','ï','ĩ','į','ī',' ',' ','į',' ','ĭ','ǐ') 1183a6878375SBram Moolenaar call s:Accents('I','Ì','Í','Î','Ï','Ĩ','İ','Ī',' ',' ','Į',' ','Ĭ','Ǐ') 1184a6878375SBram Moolenaar call s:Accents('J',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ǰ') 1185a6878375SBram Moolenaar call s:Accents('k',' ',' ',' ',' ',' ',' ',' ','ķ',' ',' ',' ',' ','ǩ') 1186a6878375SBram Moolenaar call s:Accents('K',' ',' ',' ',' ',' ',' ',' ','Ķ',' ',' ',' ',' ','Ǩ') 1187a6878375SBram Moolenaar call s:Accents('l',' ','ĺ','ľ',' ',' ',' ',' ','ļ',' ',' ',' ',' ','ľ') 1188a6878375SBram Moolenaar call s:Accents('L',' ','Ĺ','Ľ',' ',' ',' ',' ','Ļ',' ',' ',' ',' ','Ľ') 1189a6878375SBram Moolenaar call s:Accents('n',' ','ń',' ',' ','ñ',' ',' ','ņ',' ',' ',' ',' ','ň') 1190a6878375SBram Moolenaar call s:Accents('N',' ','Ń',' ',' ','Ñ',' ',' ','Ņ',' ',' ',' ',' ','Ň') 1191a6878375SBram Moolenaar call s:Accents('o','ò','ó','ô','ö','õ','ȯ','ō',' ','ő','ǫ',' ','ŏ','ǒ') 1192a6878375SBram Moolenaar call s:Accents('O','Ò','Ó','Ô','Ö','Õ','Ȯ','Ō',' ','Ő','Ǫ',' ','Ŏ','Ǒ') 1193a6878375SBram Moolenaar call s:Accents('r',' ','ŕ',' ',' ',' ',' ',' ','ŗ',' ',' ',' ',' ','ř') 1194a6878375SBram Moolenaar call s:Accents('R',' ','Ŕ',' ',' ',' ',' ',' ','Ŗ',' ',' ',' ',' ','Ř') 1195a6878375SBram Moolenaar call s:Accents('s',' ','ś','ŝ',' ',' ',' ',' ','ş',' ','ȿ',' ',' ','š') 1196a6878375SBram Moolenaar call s:Accents('S',' ','Ś','Ŝ',' ',' ',' ',' ','Ş',' ',' ',' ',' ','Š') 1197a6878375SBram Moolenaar call s:Accents('t',' ',' ',' ',' ',' ',' ',' ','ţ',' ',' ',' ',' ','ť') 1198a6878375SBram Moolenaar call s:Accents('T',' ',' ',' ',' ',' ',' ',' ','Ţ',' ',' ',' ',' ','Ť') 1199a6878375SBram Moolenaar call s:Accents('u','ù','ú','û','ü','ũ',' ','ū',' ','ű','ų','ů','ŭ','ǔ') 1200a6878375SBram Moolenaar call s:Accents('U','Ù','Ú','Û','Ü','Ũ',' ','Ū',' ','Ű','Ų','Ů','Ŭ','Ǔ') 1201a6878375SBram Moolenaar call s:Accents('w',' ',' ','ŵ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ') 1202a6878375SBram Moolenaar call s:Accents('W',' ',' ','Ŵ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ') 1203a6878375SBram Moolenaar call s:Accents('y','ỳ','ý','ŷ','ÿ','ỹ',' ',' ',' ',' ',' ',' ',' ',' ') 1204a6878375SBram Moolenaar call s:Accents('Y','Ỳ','Ý','Ŷ','Ÿ','Ỹ',' ',' ',' ',' ',' ',' ',' ',' ') 1205a6878375SBram Moolenaar call s:Accents('z',' ','ź',' ',' ',' ','ż',' ',' ',' ',' ',' ',' ','ž') 1206a6878375SBram Moolenaar call s:Accents('Z',' ','Ź',' ',' ',' ','Ż',' ',' ',' ',' ',' ',' ','Ž') 1207a6878375SBram Moolenaar call s:Accents('\\i','ì','í','î','ï','ĩ','į',' ',' ',' ',' ',' ','ĭ',' ') 1208a6878375SBram Moolenaar " \` \' \^ \" \~ \. \= \c \H \k \r \u \v 1209e0021c79SBram Moolenaar delfun s:Accents 1210e0021c79SBram Moolenaar syn match texAccent '\\aa\>' conceal cchar=å 1211e0021c79SBram Moolenaar syn match texAccent '\\AA\>' conceal cchar=Å 1212e0021c79SBram Moolenaar syn match texAccent '\\o\>' conceal cchar=ø 1213e0021c79SBram Moolenaar syn match texAccent '\\O\>' conceal cchar=Ø 1214e0021c79SBram Moolenaar syn match texLigature '\\AE\>' conceal cchar=Æ 1215e0021c79SBram Moolenaar syn match texLigature '\\ae\>' conceal cchar=æ 1216e0021c79SBram Moolenaar syn match texLigature '\\oe\>' conceal cchar=œ 1217e0021c79SBram Moolenaar syn match texLigature '\\OE\>' conceal cchar=Œ 1218e0021c79SBram Moolenaar syn match texLigature '\\ss\>' conceal cchar=ß 1219b0d45e7fSBram Moolenaar syn match texLigature '--' conceal cchar=– 1220b0d45e7fSBram Moolenaar syn match texLigature '---' conceal cchar=— 1221611df5b9SBram Moolenaar endif 1222b2c0350cSBram Moolenaar endif 12234b22cdb0SBram Moolenaarendif 1224b2c0350cSBram Moolenaar 1225b2c0350cSBram Moolenaar" --------------------------------------------------------------------- 1226071d4279SBram Moolenaar" LaTeX synchronization: {{{1 1227071d4279SBram Moolenaarsyn sync maxlines=200 1228071d4279SBram Moolenaarsyn sync minlines=50 1229071d4279SBram Moolenaar 1230071d4279SBram Moolenaarsyn sync match texSyncStop groupthere NONE "%stopzone\>" 1231071d4279SBram Moolenaar 1232071d4279SBram Moolenaar" Synchronization: {{{1 1233071d4279SBram Moolenaar" The $..$ and $$..$$ make for impossible sync patterns 1234071d4279SBram Moolenaar" (one can't tell if a "$$" starts or stops a math zone by itself) 1235071d4279SBram Moolenaar" The following grouptheres coupled with minlines above 1236071d4279SBram Moolenaar" help improve the odds of good syncing. 1237e2719096SBram Moolenaarif !exists("g:tex_no_math") 1238071d4279SBram Moolenaar syn sync match texSyncMathZoneA groupthere NONE "\\end{abstract}" 1239071d4279SBram Moolenaar syn sync match texSyncMathZoneA groupthere NONE "\\end{center}" 1240071d4279SBram Moolenaar syn sync match texSyncMathZoneA groupthere NONE "\\end{description}" 1241071d4279SBram Moolenaar syn sync match texSyncMathZoneA groupthere NONE "\\end{enumerate}" 1242071d4279SBram Moolenaar syn sync match texSyncMathZoneA groupthere NONE "\\end{itemize}" 1243071d4279SBram Moolenaar syn sync match texSyncMathZoneA groupthere NONE "\\end{table}" 1244071d4279SBram Moolenaar syn sync match texSyncMathZoneA groupthere NONE "\\end{tabular}" 1245071d4279SBram Moolenaar syn sync match texSyncMathZoneA groupthere NONE "\\\(sub\)*section\>" 1246071d4279SBram Moolenaarendif 1247071d4279SBram Moolenaar 1248b2c0350cSBram Moolenaar" --------------------------------------------------------------------- 1249071d4279SBram Moolenaar" Highlighting: {{{1 1250f37506f6SBram Moolenaar 1251f37506f6SBram Moolenaar" Define the default highlighting. {{{1 1252f37506f6SBram Moolenaarif !exists("skip_tex_syntax_inits") 1253f37506f6SBram Moolenaar 1254071d4279SBram Moolenaar " TeX highlighting groups which should share similar highlighting 12556e932461SBram Moolenaar if !exists("g:tex_no_error") 1256543b7ef7SBram Moolenaar if !exists("g:tex_no_math") 1257f37506f6SBram Moolenaar hi def link texBadMath texError 1258f37506f6SBram Moolenaar hi def link texMathDelimBad texError 1259f37506f6SBram Moolenaar hi def link texMathError texError 1260071d4279SBram Moolenaar if !b:tex_stylish 1261f37506f6SBram Moolenaar hi def link texOnlyMath texError 1262071d4279SBram Moolenaar endif 1263071d4279SBram Moolenaar endif 1264f37506f6SBram Moolenaar hi def link texError Error 1265071d4279SBram Moolenaar endif 1266071d4279SBram Moolenaar 1267d38b055aSBram Moolenaar hi texBoldStyle gui=bold cterm=bold 1268d38b055aSBram Moolenaar hi texItalStyle gui=italic cterm=italic 1269d38b055aSBram Moolenaar hi texBoldItalStyle gui=bold,italic cterm=bold,italic 1270d38b055aSBram Moolenaar hi texItalBoldStyle gui=bold,italic cterm=bold,italic 1271723dd946SBram Moolenaar hi def link texEmphStyle texItalStyle 1272f37506f6SBram Moolenaar hi def link texCite texRefZone 1273f37506f6SBram Moolenaar hi def link texDefCmd texDef 1274f37506f6SBram Moolenaar hi def link texDefName texDef 1275f37506f6SBram Moolenaar hi def link texDocType texCmdName 1276f37506f6SBram Moolenaar hi def link texDocTypeArgs texCmdArgs 1277f37506f6SBram Moolenaar hi def link texInputFileOpt texCmdArgs 1278f37506f6SBram Moolenaar hi def link texInputCurlies texDelimiter 1279f37506f6SBram Moolenaar hi def link texLigature texSpecialChar 1280e2719096SBram Moolenaar if !exists("g:tex_no_math") 1281f37506f6SBram Moolenaar hi def link texMathDelimSet1 texMathDelim 1282f37506f6SBram Moolenaar hi def link texMathDelimSet2 texMathDelim 1283f37506f6SBram Moolenaar hi def link texMathDelimKey texMathDelim 1284f37506f6SBram Moolenaar hi def link texMathMatcher texMath 1285f37506f6SBram Moolenaar hi def link texAccent texStatement 1286f37506f6SBram Moolenaar hi def link texGreek texStatement 1287f37506f6SBram Moolenaar hi def link texSuperscript texStatement 1288f37506f6SBram Moolenaar hi def link texSubscript texStatement 1289f37506f6SBram Moolenaar hi def link texSuperscripts texSuperscript 1290f37506f6SBram Moolenaar hi def link texSubscripts texSubscript 1291f37506f6SBram Moolenaar hi def link texMathSymbol texStatement 1292f37506f6SBram Moolenaar hi def link texMathZoneV texMath 1293f37506f6SBram Moolenaar hi def link texMathZoneW texMath 1294f37506f6SBram Moolenaar hi def link texMathZoneX texMath 1295f37506f6SBram Moolenaar hi def link texMathZoneY texMath 1296f37506f6SBram Moolenaar hi def link texMathZoneV texMath 1297f37506f6SBram Moolenaar hi def link texMathZoneZ texMath 1298071d4279SBram Moolenaar endif 1299f37506f6SBram Moolenaar hi def link texBeginEnd texCmdName 1300f37506f6SBram Moolenaar hi def link texBeginEndName texSection 1301f37506f6SBram Moolenaar hi def link texSpaceCode texStatement 1302f37506f6SBram Moolenaar hi def link texStyleStatement texStatement 1303f37506f6SBram Moolenaar hi def link texTypeSize texType 1304f37506f6SBram Moolenaar hi def link texTypeStyle texType 1305071d4279SBram Moolenaar 1306071d4279SBram Moolenaar " Basic TeX highlighting groups 1307f37506f6SBram Moolenaar hi def link texCmdArgs Number 1308f37506f6SBram Moolenaar hi def link texCmdName Statement 1309f37506f6SBram Moolenaar hi def link texComment Comment 1310f37506f6SBram Moolenaar hi def link texDef Statement 1311f37506f6SBram Moolenaar hi def link texDefParm Special 1312f37506f6SBram Moolenaar hi def link texDelimiter Delimiter 1313f37506f6SBram Moolenaar hi def link texInput Special 1314f37506f6SBram Moolenaar hi def link texInputFile Special 1315f37506f6SBram Moolenaar hi def link texLength Number 1316f37506f6SBram Moolenaar hi def link texMath Special 1317f37506f6SBram Moolenaar hi def link texMathDelim Statement 1318f37506f6SBram Moolenaar hi def link texMathOper Operator 1319f37506f6SBram Moolenaar hi def link texNewCmd Statement 1320f37506f6SBram Moolenaar hi def link texNewEnv Statement 1321f37506f6SBram Moolenaar hi def link texOption Number 1322f37506f6SBram Moolenaar hi def link texRefZone Special 1323f37506f6SBram Moolenaar hi def link texSection PreCondit 1324f37506f6SBram Moolenaar hi def link texSpaceCodeChar Special 1325f37506f6SBram Moolenaar hi def link texSpecialChar SpecialChar 1326f37506f6SBram Moolenaar hi def link texStatement Statement 1327f37506f6SBram Moolenaar hi def link texString String 1328f37506f6SBram Moolenaar hi def link texTodo Todo 1329f37506f6SBram Moolenaar hi def link texType Type 1330f37506f6SBram Moolenaar hi def link texZone PreCondit 1331071d4279SBram Moolenaar 1332071d4279SBram Moolenaarendif 1333071d4279SBram Moolenaar 13341514667aSBram Moolenaar" Cleanup: {{{1 1335a0f849eeSBram Moolenaardelc TexFold 133681af9250SBram Moolenaarunlet s:extfname 1337071d4279SBram Moolenaarlet b:current_syntax = "tex" 13381514667aSBram Moolenaarlet &cpo = s:keepcpo 13391514667aSBram Moolenaarunlet s:keepcpo 1340e90ee31cSBram Moolenaar" vim: ts=8 fdm=marker 1341