blob: 5544fb63fc547aaba01805b0d3968f6205936a7d [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: TeX
Bram Moolenaar1d9215b2020-01-25 13:27:42 +01003" Maintainer: Charles E. Campbell <NcampObell@SdrPchip.AorgM-NOSPAM>
Bram Moolenaarce001a32022-04-27 15:25:03 +01004" Last Change: Apr 22, 2022
5" Version: 121
Bram Moolenaarac7bd632013-03-19 11:35:58 +01006" URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TEX
Bram Moolenaar071d4272004-06-13 20:20:40 +00007"
8" Notes: {{{1
9"
10" 1. If you have a \begin{verbatim} that appears to overrun its boundaries,
11" use %stopzone.
12"
13" 2. Run-on equations ($..$ and $$..$$, particularly) can also be stopped
14" by suitable use of %stopzone.
15"
16" 3. If you have a slow computer, you may wish to modify
17"
18" syn sync maxlines=200
19" syn sync minlines=50
20"
21" to values that are more to your liking.
22"
23" 4. There is no match-syncing for $...$ and $$...$$; hence large
24" equation blocks constructed that way may exhibit syncing problems.
25" (there's no difference between begin/end patterns)
26"
27" 5. If you have the variable "g:tex_no_error" defined then none of the
28" lexical error-checking will be done.
29"
30" ie. let g:tex_no_error=1
Bram Moolenaara6878372014-03-22 21:02:50 +010031"
32" 6. Please see :help latex-syntax for information on
33" syntax folding :help tex-folding
34" spell checking :help tex-nospell
35" commands and mathzones :help tex-runon
36" new command highlighting :help tex-morecommands
37" error highlighting :help tex-error
38" new math groups :help tex-math
39" new styles :help tex-style
40" using conceal mode :help tex-conceal
Bram Moolenaar071d4272004-06-13 20:20:40 +000041
42" Version Clears: {{{1
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020043" quit when a syntax file was already loaded
44if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000045 finish
46endif
Bram Moolenaar15146672011-10-20 22:22:38 +020047let s:keepcpo= &cpo
48set cpo&vim
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +020049scriptencoding utf-8
Bram Moolenaar071d4272004-06-13 20:20:40 +000050
Bram Moolenaar543b7ef2013-06-01 14:50:56 +020051" by default, enable all region-based highlighting
52let s:tex_fast= "bcmMprsSvV"
53if exists("g:tex_fast")
54 if type(g:tex_fast) != 1
55 " g:tex_fast exists and is not a string, so
56 " turn off all optional region-based highighting
57 let s:tex_fast= ""
58 else
59 let s:tex_fast= g:tex_fast
60 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000061endif
62
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +020063" let user determine which classes of concealment will be supported
Bram Moolenaar7fc0c062010-08-10 21:43:35 +020064" a=accents/ligatures d=delimiters m=math symbols g=Greek s=superscripts/subscripts
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +020065if !exists("g:tex_conceal")
Bram Moolenaarbc488a72013-07-05 21:01:22 +020066 let s:tex_conceal= 'abdmgsS'
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +020067else
68 let s:tex_conceal= g:tex_conceal
69endif
Bram Moolenaar6e932462014-09-09 18:48:09 +020070if !exists("g:tex_superscripts")
Bram Moolenaar802a0d92016-06-26 16:17:58 +020071 let s:tex_superscripts= '[0-9a-zA-W.,:;+-<>/()=]'
Bram Moolenaar03413f42016-04-12 21:07:15 +020072else
73 let s:tex_superscripts= g:tex_superscripts
Bram Moolenaar6e932462014-09-09 18:48:09 +020074endif
75if !exists("g:tex_subscripts")
Bram Moolenaar802a0d92016-06-26 16:17:58 +020076 let s:tex_subscripts= '[0-9aehijklmnoprstuvx,+-/().]'
Bram Moolenaar03413f42016-04-12 21:07:15 +020077else
78 let s:tex_subscripts= g:tex_subscripts
Bram Moolenaar6e932462014-09-09 18:48:09 +020079endif
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +020080
Bram Moolenaarf1f8bc52005-03-07 23:20:08 +000081" Determine whether or not to use "*.sty" mode {{{1
Bram Moolenaar071d4272004-06-13 20:20:40 +000082" The user may override the normal determination by setting
83" g:tex_stylish to 1 (for "*.sty" mode)
84" or to 0 else (normal "*.tex" mode)
85" or on a buffer-by-buffer basis with b:tex_stylish
Bram Moolenaar81af9252010-12-10 20:35:50 +010086let s:extfname=expand("%:e")
Bram Moolenaar071d4272004-06-13 20:20:40 +000087if exists("g:tex_stylish")
88 let b:tex_stylish= g:tex_stylish
89elseif !exists("b:tex_stylish")
Bram Moolenaar81af9252010-12-10 20:35:50 +010090 if s:extfname == "sty" || s:extfname == "cls" || s:extfname == "clo" || s:extfname == "dtx" || s:extfname == "ltx"
Bram Moolenaar071d4272004-06-13 20:20:40 +000091 let b:tex_stylish= 1
92 else
93 let b:tex_stylish= 0
94 endif
95endif
96
Bram Moolenaarf1f8bc52005-03-07 23:20:08 +000097" handle folding {{{1
98if !exists("g:tex_fold_enabled")
Bram Moolenaarb4ff5182015-11-10 21:15:48 +010099 let s:tex_fold_enabled= 0
Bram Moolenaarf1f8bc52005-03-07 23:20:08 +0000100elseif g:tex_fold_enabled && !has("folding")
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100101 let s:tex_fold_enabled= 0
Bram Moolenaarf1f8bc52005-03-07 23:20:08 +0000102 echomsg "Ignoring g:tex_fold_enabled=".g:tex_fold_enabled."; need to re-compile vim for +fold support"
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100103else
104 let s:tex_fold_enabled= 1
Bram Moolenaarf1f8bc52005-03-07 23:20:08 +0000105endif
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100106if s:tex_fold_enabled && &fdm == "manual"
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200107 setl fdm=syntax
Bram Moolenaarf1f8bc52005-03-07 23:20:08 +0000108endif
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100109if s:tex_fold_enabled && has("folding")
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100110 com! -nargs=* TexFold <args> fold
111else
112 com! -nargs=* TexFold <args>
113endif
Bram Moolenaarf1f8bc52005-03-07 23:20:08 +0000114
Bram Moolenaaradc21822011-04-01 18:03:16 +0200115" (La)TeX keywords: uses the characters 0-9,a-z,A-Z,192-255 only... {{{1
Bram Moolenaar071d4272004-06-13 20:20:40 +0000116" but _ is the only one that causes problems.
Bram Moolenaaradc21822011-04-01 18:03:16 +0200117" One may override this iskeyword setting by providing
118" g:tex_isk
119if exists("g:tex_isk")
Bram Moolenaarbc8801c2016-08-02 21:04:33 +0200120 if b:tex_stylish && g:tex_isk !~ '@'
121 let b:tex_isk= '@,'.g:tex_isk
122 else
123 let b:tex_isk= g:tex_isk
124 endif
125elseif b:tex_stylish
126 let b:tex_isk="@,48-57,a-z,A-Z,192-255"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000127else
Bram Moolenaarbc8801c2016-08-02 21:04:33 +0200128 let b:tex_isk="48-57,a-z,A-Z,192-255"
Bram Moolenaaradc21822011-04-01 18:03:16 +0200129endif
Bram Moolenaar723dd942019-04-04 13:11:03 +0200130if (v:version == 704 && has("patch-7.4.1142")) || v:version > 704
Bram Moolenaarbc8801c2016-08-02 21:04:33 +0200131 exe "syn iskeyword ".b:tex_isk
132else
133 exe "setl isk=".b:tex_isk
Bram Moolenaar071d4272004-06-13 20:20:40 +0000134endif
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100135if exists("g:tex_no_error") && g:tex_no_error
136 let s:tex_no_error= 1
137else
138 let s:tex_no_error= 0
139endif
140if exists("g:tex_comment_nospell") && g:tex_comment_nospell
141 let s:tex_comment_nospell= 1
142else
143 let s:tex_comment_nospell= 0
144endif
145if exists("g:tex_nospell") && g:tex_nospell
146 let s:tex_nospell = 1
147else
148 let s:tex_nospell = 0
Bram Moolenaard960d762011-09-21 19:22:10 +0200149endif
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200150if exists("g:tex_matchcheck")
151 let s:tex_matchcheck= g:tex_matchcheck
152else
153 let s:tex_matchcheck= '[({[]'
154endif
Bram Moolenaar1d9215b2020-01-25 13:27:42 +0100155if exists("g:tex_excludematcher")
156 let s:tex_excludematcher= g:tex_excludematcher
157else
158 let s:tex_excludematcher= 0
159endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000160
161" Clusters: {{{1
162" --------
Bram Moolenaarbc8801c2016-08-02 21:04:33 +0200163syn 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
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100164if !s:tex_no_error
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100165 syn cluster texCmdGroup add=texMathError
Bram Moolenaar071d4272004-06-13 20:20:40 +0000166endif
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100167syn cluster texEnvGroup contains=texMatcher,texMathDelim,texSpecialChar,texStatement
Bram Moolenaar723dd942019-04-04 13:11:03 +0200168syn 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
Bram Moolenaar1d9215b2020-01-25 13:27:42 +0100169syn 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
170syn 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
171if !s:tex_excludematcher
172 syn cluster texBoldGroup add=texMatcher
173 syn cluster texItalGroup add=texMatcher
174endif
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100175if !s:tex_nospell
Bram Moolenaarce001a32022-04-27 15:25:03 +0100176 if !s:tex_no_error
177 syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texError,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,@Spell
178 syn cluster texMatchNMGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texError,texInput,texLength,texLigature,texMatcherNM,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,@Spell
179 syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texError,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,texStyleStatement,texStyleMatcher,@Spell
180 else
181 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
182 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
183 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
184 endif
Bram Moolenaard960d762011-09-21 19:22:10 +0200185else
Bram Moolenaarce001a32022-04-27 15:25:03 +0100186 if !s:tex_no_error
187 syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texError,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption
188 syn cluster texMatchNMGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texError,texInput,texLength,texLigature,texMatcherNM,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption
189 syn cluster texStyleGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texError,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,texStyleMatcher
190 else
191 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
192 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
193 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
194 endif
Bram Moolenaard960d762011-09-21 19:22:10 +0200195endif
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +0200196syn 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
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100197syn cluster texRefGroup contains=texMatcher,texComment,texDelimiter
Bram Moolenaare2719092015-01-10 15:09:25 +0100198if !exists("g:tex_no_math")
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +0200199 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
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100200 syn cluster texMathZones contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ
201 syn cluster texMatchGroup add=@texMathZones
202 syn cluster texMathDelimGroup contains=texMathDelimBad,texMathDelimKey,texMathDelimSet1,texMathDelimSet2
203 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
Bram Moolenaarce001a32022-04-27 15:25:03 +0100204 syn cluster texMathZoneGroup contains=texBadPar,texComment,texDelimiter,texLength,texMathDelim,texMathMatcher,texMathOper,texMathSymbol,texMathText,texRefZone,texSpecialChar,texStatement,texTypeSize,texTypeStyle
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100205 if !s:tex_no_error
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100206 syn cluster texMathMatchGroup add=texMathError
207 syn cluster texMathZoneGroup add=texMathError
Bram Moolenaar071d4272004-06-13 20:20:40 +0000208 endif
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100209 syn cluster texMathZoneGroup add=@NoSpell
Bram Moolenaar5b8d8fd2005-08-16 23:01:50 +0000210 " following used in the \part \chapter \section \subsection \subsubsection
211 " \paragraph \subparagraph \author \title highlighting
212 syn cluster texDocGroup contains=texPartZone,@texPartGroup
213 syn cluster texPartGroup contains=texChapterZone,texSectionZone,texParaZone
214 syn cluster texChapterGroup contains=texSectionZone,texParaZone
215 syn cluster texSectionGroup contains=texSubSectionZone,texParaZone
216 syn cluster texSubSectionGroup contains=texSubSubSectionZone,texParaZone
217 syn cluster texSubSubSectionGroup contains=texParaZone
218 syn cluster texParaGroup contains=texSubParaZone
Bram Moolenaarb2c03502010-07-02 20:20:09 +0200219 if has("conceal") && &enc == 'utf-8'
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100220 syn cluster texMathZoneGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol
221 syn cluster texMathMatchGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol
Bram Moolenaarb2c03502010-07-02 20:20:09 +0200222 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000223endif
224
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200225" Try to flag {}, [], and () mismatches: {{{1
Bram Moolenaarf3913272016-02-25 00:00:01 +0100226if s:tex_fast =~# 'm'
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100227 if !s:tex_no_error
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200228 if s:tex_matchcheck =~ '{'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100229 syn region texMatcher matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup,texError
230 syn region texMatcherNM matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup,texError
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200231 endif
232 if s:tex_matchcheck =~ '\['
Bram Moolenaarce001a32022-04-27 15:25:03 +0100233 syn region texMatcher matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchGroup,texError,@NoSpell
234 syn region texMatcherNM matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchNMGroup,texError,@NoSpell
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200235 endif
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100236 else
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200237 if s:tex_matchcheck =~ '{'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100238 syn region texMatcher matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup
239 syn region texMatcherNM matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200240 endif
241 if s:tex_matchcheck =~ '\['
Bram Moolenaarce001a32022-04-27 15:25:03 +0100242 syn region texMatcher matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchGroup
243 syn region texMatcherNM matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchNMGroup
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200244 endif
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100245 endif
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200246 if s:tex_matchcheck =~ '('
247 if !s:tex_nospell
248 syn region texParen start="(" end=")" transparent contains=@texMatchGroup,@Spell
249 else
250 syn region texParen start="(" end=")" transparent contains=@texMatchGroup
251 endif
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100252 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000253endif
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100254if !s:tex_no_error
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200255 if s:tex_matchcheck =~ '('
256 syn match texError "[}\]]"
257 else
258 syn match texError "[}\])]"
259 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000260endif
Bram Moolenaarf3913272016-02-25 00:00:01 +0100261if s:tex_fast =~# 'M'
Bram Moolenaare2719092015-01-10 15:09:25 +0100262 if !exists("g:tex_no_math")
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100263 if !s:tex_no_error
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100264 syn match texMathError "}" contained
265 endif
Bram Moolenaarce001a32022-04-27 15:25:03 +0100266 syn region texMathMatcher matchgroup=texDelimiter start="{" skip="\%(\\\\\)*\\}" end="}" end="%stopzone\>" contained contains=@texMathMatchGroup
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100267 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000268endif
269
270" TeX/LaTeX keywords: {{{1
271" Instead of trying to be All Knowing, I just match \..alphameric..
272" Note that *.tex files may not have "@" in their \commands
273if exists("g:tex_tex") || b:tex_stylish
274 syn match texStatement "\\[a-zA-Z@]\+"
275else
276 syn match texStatement "\\\a\+"
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100277 if !s:tex_no_error
Bram Moolenaar071d4272004-06-13 20:20:40 +0000278 syn match texError "\\\a*@[a-zA-Z@]*"
279 endif
280endif
281
282" TeX/LaTeX delimiters: {{{1
283syn match texDelimiter "&"
284syn match texDelimiter "\\\\"
285
286" Tex/Latex Options: {{{1
Bram Moolenaard38b0552012-04-25 19:07:41 +0200287syn match texOption "[^\\]\zs#\d\+\|^#\d\+"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000288
289" texAccent (tnx to Karim Belabas) avoids annoying highlighting for accents: {{{1
290if b:tex_stylish
291 syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1
292 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1
293else
294 syn match texAccent "\\[bcdvuH]\A"me=e-1
295 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)\A"me=e-1
296endif
297syn match texAccent "\\[bcdvuH]$"
298syn match texAccent +\\[=^.\~"`']+
299syn match texAccent +\\['=t'.c^ud"vb~Hr]{\a}+
300syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)$"
301
Bram Moolenaarb0d45e72017-11-05 18:19:24 +0100302
Bram Moolenaar071d4272004-06-13 20:20:40 +0000303" \begin{}/\end{} section markers: {{{1
Bram Moolenaard38b0552012-04-25 19:07:41 +0200304syn match texBeginEnd "\\begin\>\|\\end\>" nextgroup=texBeginEndName
Bram Moolenaarf3913272016-02-25 00:00:01 +0100305if s:tex_fast =~# 'm'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100306 syn region texBeginEndName matchgroup=texDelimiter start="{" end="}" contained nextgroup=texBeginEndModifier contains=texComment
307 syn region texBeginEndModifier matchgroup=texDelimiter start="\[" end="]" contained contains=texComment,@texMathZones,@NoSpell
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100308endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000309
310" \documentclass, \documentstyle, \usepackage: {{{1
Bram Moolenaard38b0552012-04-25 19:07:41 +0200311syn match texDocType "\\documentclass\>\|\\documentstyle\>\|\\usepackage\>" nextgroup=texBeginEndName,texDocTypeArgs
Bram Moolenaarf3913272016-02-25 00:00:01 +0100312if s:tex_fast =~# 'm'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100313 syn region texDocTypeArgs matchgroup=texDelimiter start="\[" end="]" contained nextgroup=texBeginEndName contains=texComment,@NoSpell
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100314endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000315
Bram Moolenaara9a568c2006-03-14 23:04:27 +0000316" Preamble syntax-based folding support: {{{1
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100317if s:tex_fold_enabled && has("folding")
Bram Moolenaard38b0552012-04-25 19:07:41 +0200318 syn region texPreamble transparent fold start='\zs\\documentclass\>' end='\ze\\begin{document}' contains=texStyle,@texPreambleMatchGroup
Bram Moolenaara9a568c2006-03-14 23:04:27 +0000319endif
320
Bram Moolenaar071d4272004-06-13 20:20:40 +0000321" TeX input: {{{1
322syn match texInput "\\input\s\+[a-zA-Z/.0-9_^]\+"hs=s+7 contains=texStatement
Bram Moolenaar5c736222010-01-06 20:54:52 +0100323syn match texInputFile "\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
Bram Moolenaar071d4272004-06-13 20:20:40 +0000324syn match texInputFile "\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
325syn match texInputCurlies "[{}]" contained
Bram Moolenaarf3913272016-02-25 00:00:01 +0100326if s:tex_fast =~# 'm'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100327 syn region texInputFileOpt matchgroup=texDelimiter start="\[" end="\]" contained contains=texComment
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100328endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000329
330" Type Styles (LaTeX 2.09): {{{1
331syn match texTypeStyle "\\rm\>"
332syn match texTypeStyle "\\em\>"
333syn match texTypeStyle "\\bf\>"
334syn match texTypeStyle "\\it\>"
335syn match texTypeStyle "\\sl\>"
336syn match texTypeStyle "\\sf\>"
337syn match texTypeStyle "\\sc\>"
338syn match texTypeStyle "\\tt\>"
339
340" Type Styles: attributes, commands, families, etc (LaTeX2E): {{{1
Bram Moolenaar7db8f6f2016-03-29 23:12:46 +0200341if s:tex_conceal !~# 'b'
Bram Moolenaard38b0552012-04-25 19:07:41 +0200342 syn match texTypeStyle "\\textbf\>"
343 syn match texTypeStyle "\\textit\>"
Bram Moolenaar723dd942019-04-04 13:11:03 +0200344 syn match texTypeStyle "\\emph\>"
Bram Moolenaard38b0552012-04-25 19:07:41 +0200345endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000346syn match texTypeStyle "\\textmd\>"
347syn match texTypeStyle "\\textrm\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000348
Bram Moolenaar071d4272004-06-13 20:20:40 +0000349syn match texTypeStyle "\\mathbf\>"
350syn match texTypeStyle "\\mathcal\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000351syn match texTypeStyle "\\mathit\>"
352syn match texTypeStyle "\\mathnormal\>"
353syn match texTypeStyle "\\mathrm\>"
354syn match texTypeStyle "\\mathsf\>"
355syn match texTypeStyle "\\mathtt\>"
356
357syn match texTypeStyle "\\rmfamily\>"
358syn match texTypeStyle "\\sffamily\>"
359syn match texTypeStyle "\\ttfamily\>"
360
361syn match texTypeStyle "\\itshape\>"
362syn match texTypeStyle "\\scshape\>"
363syn match texTypeStyle "\\slshape\>"
364syn match texTypeStyle "\\upshape\>"
365
366syn match texTypeStyle "\\bfseries\>"
367syn match texTypeStyle "\\mdseries\>"
368
369" Some type sizes: {{{1
370syn match texTypeSize "\\tiny\>"
371syn match texTypeSize "\\scriptsize\>"
372syn match texTypeSize "\\footnotesize\>"
373syn match texTypeSize "\\small\>"
374syn match texTypeSize "\\normalsize\>"
375syn match texTypeSize "\\large\>"
376syn match texTypeSize "\\Large\>"
377syn match texTypeSize "\\LARGE\>"
378syn match texTypeSize "\\huge\>"
379syn match texTypeSize "\\Huge\>"
380
381" Spacecodes (TeX'isms): {{{1
382" \mathcode`\^^@="2201 \delcode`\(="028300 \sfcode`\)=0 \uccode`X=`X \lccode`x=`x
383syn match texSpaceCode "\\\(math\|cat\|del\|lc\|sf\|uc\)code`"me=e-1 nextgroup=texSpaceCodeChar
384syn match texSpaceCodeChar "`\\\=.\(\^.\)\==\(\d\|\"\x\{1,6}\|`.\)" contained
385
386" Sections, subsections, etc: {{{1
Bram Moolenaarf3913272016-02-25 00:00:01 +0100387if s:tex_fast =~# 'p'
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100388 if !s:tex_nospell
389 TexFold syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup,@Spell
390 TexFold syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup,@Spell
391 TexFold syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup,@Spell
392 TexFold syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup,@Spell
393 TexFold syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup,@Spell
394 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
395 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
396 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
397 TexFold syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup,@Spell
398 TexFold syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup,@Spell
399 else
400 TexFold syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup
401 TexFold syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup
402 TexFold syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup
403 TexFold syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup
404 TexFold syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup
405 TexFold syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSubSectionGroup
406 TexFold syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texParaGroup
407 TexFold syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup
408 TexFold syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup
409 TexFold syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100410 endif
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000411endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000412
Bram Moolenaard38b0552012-04-25 19:07:41 +0200413" particular support for bold and italic {{{1
Bram Moolenaarf3913272016-02-25 00:00:01 +0100414if s:tex_fast =~# 'b'
415 if s:tex_conceal =~# 'b'
Bram Moolenaar83d1b192015-04-13 14:22:40 +0200416 if !exists("g:tex_nospell") || !g:tex_nospell
Bram Moolenaar541f92d2015-06-19 13:27:23 +0200417 syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
418 syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell
419 syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell
420 syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
Bram Moolenaar723dd942019-04-04 13:11:03 +0200421 syn region texEmphStyle matchgroup=texTypeStyle start="\\emph\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell
Bram Moolenaar1d9215b2020-01-25 13:27:42 +0100422 syn region texEmphStyle matchgroup=texTypeStyle start="\\texts[cfl]\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
423 syn region texEmphStyle matchgroup=texTypeStyle start="\\textup\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
424 syn region texEmphStyle matchgroup=texTypeStyle start="\\texttt\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
Bram Moolenaar541f92d2015-06-19 13:27:23 +0200425 else
426 syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup
427 syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup
428 syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup
429 syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup
Bram Moolenaar723dd942019-04-04 13:11:03 +0200430 syn region texEmphStyle matchgroup=texTypeStyle start="\\emph\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup
Bram Moolenaar1d9215b2020-01-25 13:27:42 +0100431 syn region texEmphStyle matchgroup=texTypeStyle start="\\texts[cfl]\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup
432 syn region texEmphStyle matchgroup=texTypeStyle start="\\textup\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup
433 syn region texEmphStyle matchgroup=texTypeStyle start="\\texttt\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup
Bram Moolenaar83d1b192015-04-13 14:22:40 +0200434 endif
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100435 endif
Bram Moolenaard38b0552012-04-25 19:07:41 +0200436endif
437
Bram Moolenaar071d4272004-06-13 20:20:40 +0000438" Bad Math (mismatched): {{{1
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100439if !exists("g:tex_no_math") && !s:tex_no_error
Bram Moolenaar51ad4ea2018-04-06 11:14:11 +0200440 syn match texBadMath "\\end\s*{\s*\(array\|[bBpvV]matrix\|split\|smallmatrix\)\s*}"
Bram Moolenaarf0b03c42017-12-17 17:17:07 +0100441 syn match texBadMath "\\end\s*{\s*\(displaymath\|equation\|eqnarray\|math\)\*\=\s*}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000442 syn match texBadMath "\\[\])]"
Bram Moolenaarce001a32022-04-27 15:25:03 +0100443 syn match texBadPar contained "\%(\\par\>\|^\s*\n.\)"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000444endif
445
446" Math Zones: {{{1
Bram Moolenaare2719092015-01-10 15:09:25 +0100447if !exists("g:tex_no_math")
Bram Moolenaar488c6512005-08-11 20:09:58 +0000448 " TexNewMathZone: function creates a mathzone with the given suffix and mathzone name. {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000449 " Starred forms are created if starform is true. Starred
450 " forms have syntax group and synchronization groups with a
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +0200451 " "S" appended. Handles: cluster, syntax, sync, and highlighting.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000452 fun! TexNewMathZone(sfx,mathzone,starform)
453 let grpname = "texMathZone".a:sfx
454 let syncname = "texSyncMathZone".a:sfx
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100455 if s:tex_fold_enabled
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000456 let foldcmd= " fold"
457 else
458 let foldcmd= ""
459 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000460 exe "syn cluster texMathZones add=".grpname
Bram Moolenaarf3913272016-02-25 00:00:01 +0100461 if s:tex_fast =~# 'M'
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100462 exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
463 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
464 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
465 endif
Bram Moolenaar5c736222010-01-06 20:54:52 +0100466 exe 'hi def link '.grpname.' texMath'
Bram Moolenaar071d4272004-06-13 20:20:40 +0000467 if a:starform
468 let grpname = "texMathZone".a:sfx.'S'
469 let syncname = "texSyncMathZone".a:sfx.'S'
470 exe "syn cluster texMathZones add=".grpname
Bram Moolenaarf3913272016-02-25 00:00:01 +0100471 if s:tex_fast =~# 'M'
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100472 exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
473 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
474 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
475 endif
Bram Moolenaar5c736222010-01-06 20:54:52 +0100476 exe 'hi def link '.grpname.' texMath'
Bram Moolenaar071d4272004-06-13 20:20:40 +0000477 endif
478 endfun
479
480 " Standard Math Zones: {{{2
Bram Moolenaarf0b03c42017-12-17 17:17:07 +0100481 call TexNewMathZone("A","displaymath",1)
482 call TexNewMathZone("B","eqnarray",1)
483 call TexNewMathZone("C","equation",1)
484 call TexNewMathZone("D","math",1)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000485
486 " Inline Math Zones: {{{2
Bram Moolenaarf3913272016-02-25 00:00:01 +0100487 if s:tex_fast =~# 'M'
488 if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~# 'd'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100489 syn region texMathZoneV matchgroup=texDelimiter start="\\(" matchgroup=texDelimiter end="\\)\|%stopzone\>" keepend concealends contains=@texMathZoneGroup
490 syn region texMathZoneW matchgroup=texDelimiter start="\\\[" matchgroup=texDelimiter end="\\]\|%stopzone\>" keepend concealends contains=@texMathZoneGroup
491 syn region texMathZoneX matchgroup=texDelimiter start="\$" skip="\\\\\|\\\$" matchgroup=texDelimiter end="\$" end="%stopzone\>" concealends contains=@texMathZoneGroup
492 syn region texMathZoneY matchgroup=texDelimiter start="\$\$" matchgroup=texDelimiter end="\$\$" end="%stopzone\>" keepend concealends contains=@texMathZoneGroup
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100493 else
Bram Moolenaarce001a32022-04-27 15:25:03 +0100494 syn region texMathZoneV matchgroup=texDelimiter start="\\(" matchgroup=texDelimiter end="\\)\|%stopzone\>" keepend contains=@texMathZoneGroup
495 syn region texMathZoneW matchgroup=texDelimiter start="\\\[" matchgroup=texDelimiter end="\\]\|%stopzone\>" keepend contains=@texMathZoneGroup
496 syn region texMathZoneX matchgroup=texDelimiter start="\$" skip="\%(\\\\\)*\\\$" matchgroup=texDelimiter end="\$" end="%stopzone\>" contains=@texMathZoneGroup
497 syn region texMathZoneY matchgroup=texDelimiter start="\$\$" matchgroup=texDelimiter end="\$\$" end="%stopzone\>" keepend contains=@texMathZoneGroup
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100498 endif
Bram Moolenaar541f92d2015-06-19 13:27:23 +0200499 syn region texMathZoneZ matchgroup=texStatement start="\\ensuremath\s*{" matchgroup=texStatement end="}" end="%stopzone\>" contains=@texMathZoneGroup
Bram Moolenaare0021c72010-07-28 17:25:21 +0200500 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000501
502 syn match texMathOper "[_^=]" contained
503
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200504 " Text Inside Math Zones: {{{2
Bram Moolenaarf3913272016-02-25 00:00:01 +0100505 if s:tex_fast =~# 'M'
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100506 if !exists("g:tex_nospell") || !g:tex_nospell
507 syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{' end='}' contains=@texFoldGroup,@Spell
508 else
509 syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{' end='}' contains=@texFoldGroup
510 endif
Bram Moolenaard960d762011-09-21 19:22:10 +0200511 endif
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200512
Bram Moolenaar071d4272004-06-13 20:20:40 +0000513 " \left..something.. and \right..something.. support: {{{2
514 syn match texMathDelimBad contained "\S"
Bram Moolenaarf3913272016-02-25 00:00:01 +0100515 if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~# 'm'
Bram Moolenaarbc8801c2016-08-02 21:04:33 +0200516 syn match texMathDelim contained "\\left\["
517 syn match texMathDelim contained "\\left\\{" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar={
518 syn match texMathDelim contained "\\right\\}" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar=}
Bram Moolenaaradc21822011-04-01 18:03:16 +0200519 let s:texMathDelimList=[
520 \ ['<' , '<'] ,
521 \ ['>' , '>'] ,
522 \ ['(' , '('] ,
523 \ [')' , ')'] ,
524 \ ['\[' , '['] ,
525 \ [']' , ']'] ,
526 \ ['\\{' , '{'] ,
527 \ ['\\}' , '}'] ,
528 \ ['|' , '|'] ,
529 \ ['\\|' , '‖'] ,
530 \ ['\\backslash' , '\'] ,
531 \ ['\\downarrow' , '↓'] ,
532 \ ['\\Downarrow' , '⇓'] ,
Bram Moolenaaradc21822011-04-01 18:03:16 +0200533 \ ['\\lbrace' , '['] ,
534 \ ['\\lceil' , '⌈'] ,
535 \ ['\\lfloor' , '⌊'] ,
536 \ ['\\lgroup' , '⌊'] ,
537 \ ['\\lmoustache' , '⎛'] ,
Bram Moolenaaradc21822011-04-01 18:03:16 +0200538 \ ['\\rbrace' , ']'] ,
539 \ ['\\rceil' , '⌉'] ,
540 \ ['\\rfloor' , '⌋'] ,
541 \ ['\\rgroup' , '⌋'] ,
542 \ ['\\rmoustache' , '⎞'] ,
543 \ ['\\uparrow' , '↑'] ,
544 \ ['\\Uparrow' , '↑'] ,
545 \ ['\\updownarrow', '↕'] ,
546 \ ['\\Updownarrow', '⇕']]
Bram Moolenaar690afe12017-01-28 18:34:47 +0100547 if &ambw == "double" || exists("g:tex_usedblwidth")
548 let s:texMathDelimList= s:texMathDelimList + [
549 \ ['\\langle' , '〈'] ,
Bram Moolenaar7f2e9d72017-11-11 20:58:53 +0100550 \ ['\\rangle' , '〉']]
Bram Moolenaar690afe12017-01-28 18:34:47 +0100551 else
552 let s:texMathDelimList= s:texMathDelimList + [
553 \ ['\\langle' , '<'] ,
554 \ ['\\rangle' , '>']]
555 endif
Bram Moolenaaradc21822011-04-01 18:03:16 +0200556 syn match texMathDelim '\\[bB]igg\=[lr]' contained nextgroup=texMathDelimBad
557 for texmath in s:texMathDelimList
558 exe "syn match texMathDelim '\\\\[bB]igg\\=[lr]\\=".texmath[0]."' contained conceal cchar=".texmath[1]
559 endfor
560
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +0200561 else
562 syn match texMathDelim contained "\\\(left\|right\)\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad
Bram Moolenaaradc21822011-04-01 18:03:16 +0200563 syn match texMathDelim contained "\\[bB]igg\=[lr]\=\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad
564 syn match texMathDelimSet2 contained "\\" nextgroup=texMathDelimKey,texMathDelimBad
565 syn match texMathDelimSet1 contained "[<>()[\]|/.]\|\\[{}|]"
566 syn keyword texMathDelimKey contained backslash lceil lVert rgroup uparrow
567 syn keyword texMathDelimKey contained downarrow lfloor rangle rmoustache Uparrow
568 syn keyword texMathDelimKey contained Downarrow lgroup rbrace rvert updownarrow
569 syn keyword texMathDelimKey contained langle lmoustache rceil rVert Updownarrow
570 syn keyword texMathDelimKey contained lbrace lvert rfloor
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +0200571 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000572 syn match texMathDelim contained "\\\(left\|right\)arrow\>\|\<\([aA]rrow\|brace\)\=vert\>"
573 syn match texMathDelim contained "\\lefteqn\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000574endif
575
576" Special TeX characters ( \$ \& \% \# \{ \} \_ \S \P ) : {{{1
577syn match texSpecialChar "\\[$&%#{}_]"
578if b:tex_stylish
579 syn match texSpecialChar "\\[SP@][^a-zA-Z@]"me=e-1
580else
581 syn match texSpecialChar "\\[SP@]\A"me=e-1
582endif
583syn match texSpecialChar "\\\\"
Bram Moolenaare2719092015-01-10 15:09:25 +0100584if !exists("g:tex_no_math")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000585 syn match texOnlyMath "[_^]"
586endif
587syn match texSpecialChar "\^\^[0-9a-f]\{2}\|\^\^\S"
Bram Moolenaar7db8f6f2016-03-29 23:12:46 +0200588if s:tex_conceal !~# 'S'
Bram Moolenaarbc488a72013-07-05 21:01:22 +0200589 syn match texSpecialChar '\\glq\>' contained conceal cchar=‚
590 syn match texSpecialChar '\\grq\>' contained conceal cchar=‘
591 syn match texSpecialChar '\\glqq\>' contained conceal cchar=„
592 syn match texSpecialChar '\\grqq\>' contained conceal cchar=“
593 syn match texSpecialChar '\\hyp\>' contained conceal cchar=-
594endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000595
596" Comments: {{{1
597" Normal TeX LaTeX : %....
598" Documented TeX Format: ^^A... -and- leading %s (only)
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100599if !s:tex_comment_nospell
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000600 syn cluster texCommentGroup contains=texTodo,@Spell
601else
602 syn cluster texCommentGroup contains=texTodo,@NoSpell
603endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000604syn case ignore
Bram Moolenaar18144c82006-04-12 21:52:12 +0000605syn keyword texTodo contained combak fixme todo xxx
Bram Moolenaar071d4272004-06-13 20:20:40 +0000606syn case match
Bram Moolenaar81af9252010-12-10 20:35:50 +0100607if s:extfname == "dtx"
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100608 syn match texComment "\^\^A.*$" contains=@texCommentGroup
609 syn match texComment "^%\+" contains=@texCommentGroup
Bram Moolenaar071d4272004-06-13 20:20:40 +0000610else
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100611 if s:tex_fold_enabled
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100612 " allows syntax-folding of 2 or more contiguous comment lines
613 " single-line comments are not folded
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100614 syn match texComment "%.*$" contains=@texCommentGroup
Bram Moolenaarf3913272016-02-25 00:00:01 +0100615 if s:tex_fast =~# 'c'
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100616 TexFold syn region texComment start="^\zs\s*%.*\_s*%" skip="^\s*%" end='^\ze\s*[^%]' contains=@texCommentGroup
617 TexFold syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000618 endif
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100619 else
620 syn match texComment "%.*$" contains=@texCommentGroup
Bram Moolenaarf3913272016-02-25 00:00:01 +0100621 if s:tex_fast =~# 'c'
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100622 syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100623 endif
624 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000625endif
626
Bram Moolenaarb0d45e72017-11-05 18:19:24 +0100627" %begin-include ... %end-include acts like a texDocZone for \include'd files. Permits spell checking, for example, in such files.
628if !s:tex_nospell
629 TexFold syn region texDocZone matchgroup=texSection start='^\s*%begin-include\>' end='^\s*%end-include\>' contains=@texFoldGroup,@texDocGroup,@Spell
630else
631 TexFold syn region texDocZone matchgroup=texSection start='^\s*%begin-include\>' end='^\s*%end-include\>' contains=@texFoldGroup,@texDocGroup
632endif
633
Bram Moolenaar071d4272004-06-13 20:20:40 +0000634" Separate lines used for verb` and verb# so that the end conditions {{{1
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200635" will appropriately terminate.
636" If g:tex_verbspell exists, then verbatim texZones will permit spellchecking there.
Bram Moolenaarf3913272016-02-25 00:00:01 +0100637if s:tex_fast =~# 'v'
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100638 if exists("g:tex_verbspell") && g:tex_verbspell
639 syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>" contains=@Spell
Bram Moolenaarb0d45e72017-11-05 18:19:24 +0100640 " listings package:
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200641 if b:tex_stylish
642 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>" contains=@Spell
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200643 else
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200644 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>" contains=@Spell
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200645 endif
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100646 else
647 syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>"
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200648 if b:tex_stylish
649 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>"
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200650 else
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200651 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>"
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200652 endif
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100653 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000654endif
655
656" Tex Reference Zones: {{{1
Bram Moolenaarf3913272016-02-25 00:00:01 +0100657if s:tex_fast =~# 'r'
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100658 syn region texZone matchgroup=texStatement start="@samp{" end="}\|%stopzone\>" contains=@texRefGroup
659 syn region texRefZone matchgroup=texStatement start="\\nocite{" end="}\|%stopzone\>" contains=@texRefGroup
660 syn region texRefZone matchgroup=texStatement start="\\bibliography{" end="}\|%stopzone\>" contains=@texRefGroup
661 syn region texRefZone matchgroup=texStatement start="\\label{" end="}\|%stopzone\>" contains=@texRefGroup
662 syn region texRefZone matchgroup=texStatement start="\\\(page\|eq\)ref{" end="}\|%stopzone\>" contains=@texRefGroup
663 syn region texRefZone matchgroup=texStatement start="\\v\=ref{" end="}\|%stopzone\>" contains=@texRefGroup
Bram Moolenaarce001a32022-04-27 15:25:03 +0100664 syn region texRefOption contained matchgroup=texDelimiter start='\[' end=']' contains=@texRefGroup,texRefZone nextgroup=texRefOption,texCite
665 syn region texCite contained matchgroup=texDelimiter start='{' end='}' contains=@texRefGroup,texRefZone,texCite
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100666endif
Bram Moolenaar1d9215b2020-01-25 13:27:42 +0100667syn match texRefZone '\\cite\%([tp]\*\=\)\=\>' nextgroup=texRefOption,texCite
Bram Moolenaar071d4272004-06-13 20:20:40 +0000668
Bram Moolenaarce001a32022-04-27 15:25:03 +0100669" Handle (re)newcommand, (re)newenvironment : {{{1
670syn match texNewCmd "\\\%(re\)\=newcommand\>" nextgroup=texCmdName skipwhite skipnl
Bram Moolenaarf3913272016-02-25 00:00:01 +0100671if s:tex_fast =~# 'V'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100672 syn region texCmdName contained matchgroup=texDelimiter start="{"rs=s+1 end="}" nextgroup=texCmdArgs,texCmdBody skipwhite skipnl
673 syn region texCmdArgs contained matchgroup=texDelimiter start="\["rs=s+1 end="]" nextgroup=texCmdBody skipwhite skipnl
674 syn region texCmdBody contained matchgroup=texDelimiter start="{"rs=s+1 skip="\\\\\|\\[{}]" matchgroup=texDelimiter end="}" contains=@texCmdGroup
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100675endif
Bram Moolenaarce001a32022-04-27 15:25:03 +0100676syn match texNewEnv "\\\%(re\)\=newenvironment\>" nextgroup=texEnvName skipwhite skipnl
Bram Moolenaarf3913272016-02-25 00:00:01 +0100677if s:tex_fast =~# 'V'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100678 syn region texEnvName contained matchgroup=texDelimiter start="{"rs=s+1 end="}" nextgroup=texEnvBgn skipwhite skipnl
679 syn region texEnvBgn contained matchgroup=texDelimiter start="{"rs=s+1 end="}" nextgroup=texEnvEnd skipwhite skipnl contains=@texEnvGroup
680 syn region texEnvEnd contained matchgroup=texDelimiter start="{"rs=s+1 end="}" skipwhite skipnl contains=@texEnvGroup
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100681endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000682
683" Definitions/Commands: {{{1
684syn match texDefCmd "\\def\>" nextgroup=texDefName skipwhite skipnl
685if b:tex_stylish
686 syn match texDefName contained "\\[a-zA-Z@]\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl
687 syn match texDefName contained "\\[^a-zA-Z@]" nextgroup=texDefParms,texCmdBody skipwhite skipnl
688else
689 syn match texDefName contained "\\\a\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl
690 syn match texDefName contained "\\\A" nextgroup=texDefParms,texCmdBody skipwhite skipnl
691endif
692syn match texDefParms contained "#[^{]*" contains=texDefParm nextgroup=texCmdBody skipwhite skipnl
693syn match texDefParm contained "#\d\+"
694
695" TeX Lengths: {{{1
Bram Moolenaar9964e462007-05-05 17:54:07 +0000696syn match texLength "\<\d\+\([.,]\d\+\)\=\s*\(true\)\=\s*\(bp\|cc\|cm\|dd\|em\|ex\|in\|mm\|pc\|pt\|sp\)\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000697
698" TeX String Delimiters: {{{1
699syn match texString "\(``\|''\|,,\)"
700
Bram Moolenaar5c736222010-01-06 20:54:52 +0100701" makeatletter -- makeatother sections
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100702if !s:tex_no_error
Bram Moolenaarf3913272016-02-25 00:00:01 +0100703 if s:tex_fast =~# 'S'
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100704 syn region texStyle matchgroup=texStatement start='\\makeatletter' end='\\makeatother' contains=@texStyleGroup contained
705 endif
Bram Moolenaar5c736222010-01-06 20:54:52 +0100706 syn match texStyleStatement "\\[a-zA-Z@]\+" contained
Bram Moolenaarf3913272016-02-25 00:00:01 +0100707 if s:tex_fast =~# 'S'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100708 syn region texStyleMatcher matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texStyleGroup,texError contained
709 syn region texStyleMatcher matchgroup=texDelimiter start="\[" end="]" contains=@texStyleGroup,texError contained
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100710 endif
Bram Moolenaar5c736222010-01-06 20:54:52 +0100711endif
712
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200713" Conceal mode support (supports set cole=2) {{{1
Bram Moolenaarb2c03502010-07-02 20:20:09 +0200714if has("conceal") && &enc == 'utf-8'
Bram Moolenaar611df5b2010-07-26 22:51:56 +0200715
716 " Math Symbols {{{2
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200717 " (many of these symbols were contributed by Björn Winckler)
Bram Moolenaarf3913272016-02-25 00:00:01 +0100718 if s:tex_conceal =~# 'm'
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200719 let s:texMathList=[
Bram Moolenaaradc21822011-04-01 18:03:16 +0200720 \ ['|' , '‖'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200721 \ ['aleph' , 'ℵ'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100722 \ ['amalg' , '∐'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200723 \ ['angle' , '∠'],
724 \ ['approx' , '≈'],
725 \ ['ast' , '∗'],
726 \ ['asymp' , '≍'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200727 \ ['backslash' , '∖'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200728 \ ['bigcap' , '∩'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100729 \ ['bigcirc' , '○'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200730 \ ['bigcup' , '∪'],
731 \ ['bigodot' , '⊙'],
732 \ ['bigoplus' , '⊕'],
733 \ ['bigotimes' , '⊗'],
734 \ ['bigsqcup' , '⊔'],
735 \ ['bigtriangledown', '∇'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100736 \ ['bigtriangleup' , '∆'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200737 \ ['bigvee' , '⋁'],
738 \ ['bigwedge' , '⋀'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200739 \ ['bot' , '⊥'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100740 \ ['bowtie' , '⋈'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100741 \ ['bullet' , '•'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200742 \ ['cap' , '∩'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200743 \ ['cdot' , '·'],
744 \ ['cdots' , '⋯'],
745 \ ['circ' , '∘'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200746 \ ['clubsuit' , '♣'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200747 \ ['cong' , '≅'],
748 \ ['coprod' , '∐'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200749 \ ['copyright' , '©'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200750 \ ['cup' , '∪'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100751 \ ['dagger' , '†'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200752 \ ['dashv' , '⊣'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100753 \ ['ddagger' , '‡'],
754 \ ['ddots' , '⋱'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200755 \ ['diamond' , '⋄'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200756 \ ['diamondsuit' , '♢'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200757 \ ['div' , '÷'],
758 \ ['doteq' , '≐'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100759 \ ['dots' , '…'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200760 \ ['downarrow' , '↓'],
761 \ ['Downarrow' , '⇓'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100762 \ ['ell' , 'ℓ'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200763 \ ['emptyset' , '∅'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200764 \ ['equiv' , '≡'],
765 \ ['exists' , '∃'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200766 \ ['flat' , '♭'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200767 \ ['forall' , '∀'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100768 \ ['frown' , '⁔'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200769 \ ['ge' , '≥'],
770 \ ['geq' , '≥'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200771 \ ['gets' , '←'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100772 \ ['gg' , '⟫'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200773 \ ['hbar' , 'ℏ'],
774 \ ['heartsuit' , '♡'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200775 \ ['hookleftarrow' , '↩'],
776 \ ['hookrightarrow' , '↪'],
Bram Moolenaar690afe12017-01-28 18:34:47 +0100777 \ ['iff' , '⇔'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200778 \ ['Im' , 'ℑ'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200779 \ ['imath' , 'ɩ'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200780 \ ['in' , '∈'],
781 \ ['infty' , '∞'],
782 \ ['int' , '∫'],
Bram Moolenaar690afe12017-01-28 18:34:47 +0100783 \ ['jmath' , '𝚥'],
784 \ ['land' , '∧'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200785 \ ['lceil' , '⌈'],
786 \ ['ldots' , '…'],
787 \ ['le' , '≤'],
Bram Moolenaar65e0d772020-06-14 17:29:55 +0200788 \ ['left|' , '|'],
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200789 \ ['left\\|' , '‖'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200790 \ ['left(' , '('],
791 \ ['left\[' , '['],
792 \ ['left\\{' , '{'],
Bram Moolenaare2719092015-01-10 15:09:25 +0100793 \ ['leftarrow' , '←'],
794 \ ['Leftarrow' , '⇐'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100795 \ ['leftharpoondown', '↽'],
796 \ ['leftharpoonup' , '↼'],
Bram Moolenaar97d62492012-11-15 21:28:22 +0100797 \ ['leftrightarrow' , '↔'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100798 \ ['Leftrightarrow' , '⇔'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200799 \ ['leq' , '≤'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100800 \ ['leq' , '≤'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200801 \ ['lfloor' , '⌊'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100802 \ ['ll' , '≪'],
Bram Moolenaaradc21822011-04-01 18:03:16 +0200803 \ ['lmoustache' , '╭'],
Bram Moolenaar690afe12017-01-28 18:34:47 +0100804 \ ['lor' , '∨'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200805 \ ['mapsto' , '↦'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200806 \ ['mid' , '∣'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100807 \ ['models' , '╞'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200808 \ ['mp' , '∓'],
809 \ ['nabla' , '∇'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200810 \ ['natural' , '♮'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200811 \ ['ne' , '≠'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100812 \ ['nearrow' , '↗'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200813 \ ['neg' , '¬'],
814 \ ['neq' , '≠'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200815 \ ['ni' , '∋'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200816 \ ['notin' , '∉'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200817 \ ['nwarrow' , '↖'],
818 \ ['odot' , '⊙'],
819 \ ['oint' , '∮'],
820 \ ['ominus' , '⊖'],
821 \ ['oplus' , '⊕'],
822 \ ['oslash' , '⊘'],
823 \ ['otimes' , '⊗'],
824 \ ['owns' , '∋'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200825 \ ['P' , '¶'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100826 \ ['parallel' , '║'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200827 \ ['partial' , '∂'],
828 \ ['perp' , '⊥'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200829 \ ['pm' , '±'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200830 \ ['prec' , '≺'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200831 \ ['preceq' , '⪯'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200832 \ ['prime' , '′'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200833 \ ['prod' , '∏'],
834 \ ['propto' , '∝'],
835 \ ['rceil' , '⌉'],
836 \ ['Re' , 'ℜ'],
Bram Moolenaar723dd942019-04-04 13:11:03 +0200837 \ ['quad' , ' '],
838 \ ['qquad' , ' '],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200839 \ ['rfloor' , '⌋'],
Bram Moolenaar65e0d772020-06-14 17:29:55 +0200840 \ ['right|' , '|'],
841 \ ['right\\|' , '‖'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200842 \ ['right)' , ')'],
843 \ ['right]' , ']'],
844 \ ['right\\}' , '}'],
Bram Moolenaare2719092015-01-10 15:09:25 +0100845 \ ['rightarrow' , '→'],
846 \ ['Rightarrow' , '⇒'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100847 \ ['rightleftharpoons', '⇌'],
Bram Moolenaaradc21822011-04-01 18:03:16 +0200848 \ ['rmoustache' , '╮'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200849 \ ['S' , '§'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200850 \ ['searrow' , '↘'],
851 \ ['setminus' , '∖'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200852 \ ['sharp' , '♯'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200853 \ ['sim' , '∼'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100854 \ ['simeq' , '⋍'],
855 \ ['smile' , '‿'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200856 \ ['spadesuit' , '♠'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200857 \ ['sqcap' , '⊓'],
858 \ ['sqcup' , '⊔'],
859 \ ['sqsubset' , '⊏'],
860 \ ['sqsubseteq' , '⊑'],
861 \ ['sqsupset' , '⊐'],
862 \ ['sqsupseteq' , '⊒'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100863 \ ['star' , '✫'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200864 \ ['subset' , '⊂'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200865 \ ['subseteq' , '⊆'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200866 \ ['succ' , '≻'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200867 \ ['succeq' , '⪰'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200868 \ ['sum' , '∑'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100869 \ ['supset' , '⊃'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200870 \ ['supseteq' , '⊇'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200871 \ ['surd' , '√'],
872 \ ['swarrow' , '↙'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200873 \ ['times' , '×'],
874 \ ['to' , '→'],
875 \ ['top' , '⊤'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200876 \ ['triangle' , '∆'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200877 \ ['triangleleft' , '⊲'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200878 \ ['triangleright' , '⊳'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200879 \ ['uparrow' , '↑'],
880 \ ['Uparrow' , '⇑'],
881 \ ['updownarrow' , '↕'],
882 \ ['Updownarrow' , '⇕'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200883 \ ['vdash' , '⊢'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200884 \ ['vdots' , '⋮'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200885 \ ['vee' , '∨'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200886 \ ['wedge' , '∧'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200887 \ ['wp' , '℘'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200888 \ ['wr' , '≀']]
Bram Moolenaar690afe12017-01-28 18:34:47 +0100889 if &ambw == "double" || exists("g:tex_usedblwidth")
890 let s:texMathList= s:texMathList + [
891 \ ['right\\rangle' , '〉'],
892 \ ['left\\langle' , '〈']]
893 else
894 let s:texMathList= s:texMathList + [
895 \ ['right\\rangle' , '>'],
896 \ ['left\\langle' , '<']]
897 endif
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200898 for texmath in s:texMathList
Bram Moolenaarf3913272016-02-25 00:00:01 +0100899 if texmath[0] =~# '\w$'
Bram Moolenaar81af9252010-12-10 20:35:50 +0100900 exe "syn match texMathSymbol '\\\\".texmath[0]."\\>' contained conceal cchar=".texmath[1]
901 else
902 exe "syn match texMathSymbol '\\\\".texmath[0]."' contained conceal cchar=".texmath[1]
903 endif
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200904 endfor
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200905
906 if &ambw == "double"
907 syn match texMathSymbol '\\gg\>' contained conceal cchar=≫
908 syn match texMathSymbol '\\ll\>' contained conceal cchar=≪
909 else
910 syn match texMathSymbol '\\gg\>' contained conceal cchar=⟫
911 syn match texMathSymbol '\\ll\>' contained conceal cchar=⟪
912 endif
Bram Moolenaard960d762011-09-21 19:22:10 +0200913
914 syn match texMathSymbol '\\hat{a}' contained conceal cchar=â
915 syn match texMathSymbol '\\hat{A}' contained conceal cchar=Â
916 syn match texMathSymbol '\\hat{c}' contained conceal cchar=ĉ
917 syn match texMathSymbol '\\hat{C}' contained conceal cchar=Ĉ
918 syn match texMathSymbol '\\hat{e}' contained conceal cchar=ê
919 syn match texMathSymbol '\\hat{E}' contained conceal cchar=Ê
920 syn match texMathSymbol '\\hat{g}' contained conceal cchar=ĝ
921 syn match texMathSymbol '\\hat{G}' contained conceal cchar=Ĝ
922 syn match texMathSymbol '\\hat{i}' contained conceal cchar=î
923 syn match texMathSymbol '\\hat{I}' contained conceal cchar=Î
924 syn match texMathSymbol '\\hat{o}' contained conceal cchar=ô
925 syn match texMathSymbol '\\hat{O}' contained conceal cchar=Ô
926 syn match texMathSymbol '\\hat{s}' contained conceal cchar=ŝ
927 syn match texMathSymbol '\\hat{S}' contained conceal cchar=Ŝ
928 syn match texMathSymbol '\\hat{u}' contained conceal cchar=û
929 syn match texMathSymbol '\\hat{U}' contained conceal cchar=Û
930 syn match texMathSymbol '\\hat{w}' contained conceal cchar=ŵ
931 syn match texMathSymbol '\\hat{W}' contained conceal cchar=Ŵ
932 syn match texMathSymbol '\\hat{y}' contained conceal cchar=ŷ
933 syn match texMathSymbol '\\hat{Y}' contained conceal cchar=Ŷ
Bram Moolenaare2719092015-01-10 15:09:25 +0100934" syn match texMathSymbol '\\bar{a}' contained conceal cchar=a̅
Bram Moolenaar51ad4ea2018-04-06 11:14:11 +0200935
936 syn match texMathSymbol '\\dot{B}' contained conceal cchar=Ḃ
937 syn match texMathSymbol '\\dot{b}' contained conceal cchar=ḃ
938 syn match texMathSymbol '\\dot{D}' contained conceal cchar=Ḋ
939 syn match texMathSymbol '\\dot{d}' contained conceal cchar=ḋ
940 syn match texMathSymbol '\\dot{F}' contained conceal cchar=Ḟ
941 syn match texMathSymbol '\\dot{f}' contained conceal cchar=ḟ
942 syn match texMathSymbol '\\dot{H}' contained conceal cchar=Ḣ
943 syn match texMathSymbol '\\dot{h}' contained conceal cchar=ḣ
944 syn match texMathSymbol '\\dot{M}' contained conceal cchar=Ṁ
945 syn match texMathSymbol '\\dot{m}' contained conceal cchar=ṁ
946 syn match texMathSymbol '\\dot{N}' contained conceal cchar=Ṅ
947 syn match texMathSymbol '\\dot{n}' contained conceal cchar=ṅ
948 syn match texMathSymbol '\\dot{P}' contained conceal cchar=Ṗ
949 syn match texMathSymbol '\\dot{p}' contained conceal cchar=ṗ
950 syn match texMathSymbol '\\dot{R}' contained conceal cchar=Ṙ
951 syn match texMathSymbol '\\dot{r}' contained conceal cchar=ṙ
952 syn match texMathSymbol '\\dot{S}' contained conceal cchar=Ṡ
953 syn match texMathSymbol '\\dot{s}' contained conceal cchar=ṡ
954 syn match texMathSymbol '\\dot{T}' contained conceal cchar=Ṫ
955 syn match texMathSymbol '\\dot{t}' contained conceal cchar=ṫ
956 syn match texMathSymbol '\\dot{W}' contained conceal cchar=Ẇ
957 syn match texMathSymbol '\\dot{w}' contained conceal cchar=ẇ
958 syn match texMathSymbol '\\dot{X}' contained conceal cchar=Ẋ
959 syn match texMathSymbol '\\dot{x}' contained conceal cchar=ẋ
960 syn match texMathSymbol '\\dot{Y}' contained conceal cchar=Ẏ
961 syn match texMathSymbol '\\dot{y}' contained conceal cchar=ẏ
962 syn match texMathSymbol '\\dot{Z}' contained conceal cchar=Ż
963 syn match texMathSymbol '\\dot{z}' contained conceal cchar=ż
964
965 syn match texMathSymbol '\\dot{C}' contained conceal cchar=Ċ
966 syn match texMathSymbol '\\dot{c}' contained conceal cchar=ċ
967 syn match texMathSymbol '\\dot{E}' contained conceal cchar=Ė
968 syn match texMathSymbol '\\dot{e}' contained conceal cchar=ė
969 syn match texMathSymbol '\\dot{G}' contained conceal cchar=Ġ
970 syn match texMathSymbol '\\dot{g}' contained conceal cchar=ġ
971 syn match texMathSymbol '\\dot{I}' contained conceal cchar=İ
972
973 syn match texMathSymbol '\\dot{A}' contained conceal cchar=Ȧ
974 syn match texMathSymbol '\\dot{a}' contained conceal cchar=ȧ
975 syn match texMathSymbol '\\dot{O}' contained conceal cchar=Ȯ
976 syn match texMathSymbol '\\dot{o}' contained conceal cchar=ȯ
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +0200977 endif
Bram Moolenaar611df5b2010-07-26 22:51:56 +0200978
979 " Greek {{{2
Bram Moolenaarf3913272016-02-25 00:00:01 +0100980 if s:tex_conceal =~# 'g'
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +0200981 fun! s:Greek(group,pat,cchar)
982 exe 'syn match '.a:group." '".a:pat."' contained conceal cchar=".a:cchar
983 endfun
984 call s:Greek('texGreek','\\alpha\>' ,'α')
985 call s:Greek('texGreek','\\beta\>' ,'β')
986 call s:Greek('texGreek','\\gamma\>' ,'γ')
987 call s:Greek('texGreek','\\delta\>' ,'δ')
988 call s:Greek('texGreek','\\epsilon\>' ,'ϵ')
989 call s:Greek('texGreek','\\varepsilon\>' ,'ε')
990 call s:Greek('texGreek','\\zeta\>' ,'ζ')
991 call s:Greek('texGreek','\\eta\>' ,'η')
992 call s:Greek('texGreek','\\theta\>' ,'θ')
Bram Moolenaare2719092015-01-10 15:09:25 +0100993 call s:Greek('texGreek','\\vartheta\>' ,'ϑ')
Bram Moolenaar6c1e1572019-06-22 02:13:00 +0200994 call s:Greek('texGreek','\\iota\>' ,'ι')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +0200995 call s:Greek('texGreek','\\kappa\>' ,'κ')
996 call s:Greek('texGreek','\\lambda\>' ,'λ')
997 call s:Greek('texGreek','\\mu\>' ,'μ')
998 call s:Greek('texGreek','\\nu\>' ,'ν')
999 call s:Greek('texGreek','\\xi\>' ,'ξ')
1000 call s:Greek('texGreek','\\pi\>' ,'π')
1001 call s:Greek('texGreek','\\varpi\>' ,'ϖ')
1002 call s:Greek('texGreek','\\rho\>' ,'ρ')
1003 call s:Greek('texGreek','\\varrho\>' ,'ϱ')
1004 call s:Greek('texGreek','\\sigma\>' ,'σ')
Bram Moolenaare2719092015-01-10 15:09:25 +01001005 call s:Greek('texGreek','\\varsigma\>' ,'ς')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001006 call s:Greek('texGreek','\\tau\>' ,'τ')
1007 call s:Greek('texGreek','\\upsilon\>' ,'υ')
Bram Moolenaare2719092015-01-10 15:09:25 +01001008 call s:Greek('texGreek','\\phi\>' ,'ϕ')
1009 call s:Greek('texGreek','\\varphi\>' ,'φ')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001010 call s:Greek('texGreek','\\chi\>' ,'χ')
1011 call s:Greek('texGreek','\\psi\>' ,'ψ')
1012 call s:Greek('texGreek','\\omega\>' ,'ω')
1013 call s:Greek('texGreek','\\Gamma\>' ,'Γ')
1014 call s:Greek('texGreek','\\Delta\>' ,'Δ')
1015 call s:Greek('texGreek','\\Theta\>' ,'Θ')
1016 call s:Greek('texGreek','\\Lambda\>' ,'Λ')
Bram Moolenaar6c1e1572019-06-22 02:13:00 +02001017 call s:Greek('texGreek','\\Xi\>' ,'Ξ')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001018 call s:Greek('texGreek','\\Pi\>' ,'Π')
1019 call s:Greek('texGreek','\\Sigma\>' ,'Σ')
1020 call s:Greek('texGreek','\\Upsilon\>' ,'Υ')
1021 call s:Greek('texGreek','\\Phi\>' ,'Φ')
Bram Moolenaar6c1e1572019-06-22 02:13:00 +02001022 call s:Greek('texGreek','\\Chi\>' ,'Χ')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001023 call s:Greek('texGreek','\\Psi\>' ,'Ψ')
1024 call s:Greek('texGreek','\\Omega\>' ,'Ω')
1025 delfun s:Greek
1026 endif
Bram Moolenaar611df5b2010-07-26 22:51:56 +02001027
1028 " Superscripts/Subscripts {{{2
Bram Moolenaarf3913272016-02-25 00:00:01 +01001029 if s:tex_conceal =~# 's'
1030 if s:tex_fast =~# 's'
Bram Moolenaarce001a32022-04-27 15:25:03 +01001031 syn region texSuperscript matchgroup=texDelimiter start='\^{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSuperscripts,texStatement,texSubscript,texSuperscript,texMathMatcher
1032 syn region texSubscript matchgroup=texDelimiter start='_{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSubscripts,texStatement,texSubscript,texSuperscript,texMathMatcher
Bram Moolenaarac7bd632013-03-19 11:35:58 +01001033 endif
Bram Moolenaar541f92d2015-06-19 13:27:23 +02001034 " s:SuperSub:
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001035 fun! s:SuperSub(group,leader,pat,cchar)
Bram Moolenaar03413f42016-04-12 21:07:15 +02001036 if a:pat =~# '^\\' || (a:leader == '\^' && a:pat =~# s:tex_superscripts) || (a:leader == '_' && a:pat =~# s:tex_subscripts)
Bram Moolenaar6e932462014-09-09 18:48:09 +02001037" call Decho("SuperSub: group<".a:group."> leader<".a:leader."> pat<".a:pat."> cchar<".a:cchar.">")
1038 exe 'syn match '.a:group." '".a:leader.a:pat."' contained conceal cchar=".a:cchar
Bram Moolenaar541f92d2015-06-19 13:27:23 +02001039 exe 'syn match '.a:group."s '".a:pat ."' contained conceal cchar=".a:cchar.' nextgroup='.a:group.'s'
Bram Moolenaar6e932462014-09-09 18:48:09 +02001040 endif
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001041 endfun
1042 call s:SuperSub('texSuperscript','\^','0','⁰')
1043 call s:SuperSub('texSuperscript','\^','1','¹')
1044 call s:SuperSub('texSuperscript','\^','2','²')
1045 call s:SuperSub('texSuperscript','\^','3','³')
1046 call s:SuperSub('texSuperscript','\^','4','⁴')
1047 call s:SuperSub('texSuperscript','\^','5','⁵')
1048 call s:SuperSub('texSuperscript','\^','6','⁶')
1049 call s:SuperSub('texSuperscript','\^','7','⁷')
1050 call s:SuperSub('texSuperscript','\^','8','⁸')
1051 call s:SuperSub('texSuperscript','\^','9','⁹')
1052 call s:SuperSub('texSuperscript','\^','a','ᵃ')
1053 call s:SuperSub('texSuperscript','\^','b','ᵇ')
1054 call s:SuperSub('texSuperscript','\^','c','ᶜ')
1055 call s:SuperSub('texSuperscript','\^','d','ᵈ')
1056 call s:SuperSub('texSuperscript','\^','e','ᵉ')
1057 call s:SuperSub('texSuperscript','\^','f','ᶠ')
1058 call s:SuperSub('texSuperscript','\^','g','ᵍ')
1059 call s:SuperSub('texSuperscript','\^','h','ʰ')
1060 call s:SuperSub('texSuperscript','\^','i','ⁱ')
1061 call s:SuperSub('texSuperscript','\^','j','ʲ')
1062 call s:SuperSub('texSuperscript','\^','k','ᵏ')
1063 call s:SuperSub('texSuperscript','\^','l','ˡ')
1064 call s:SuperSub('texSuperscript','\^','m','ᵐ')
1065 call s:SuperSub('texSuperscript','\^','n','ⁿ')
1066 call s:SuperSub('texSuperscript','\^','o','ᵒ')
1067 call s:SuperSub('texSuperscript','\^','p','ᵖ')
1068 call s:SuperSub('texSuperscript','\^','r','ʳ')
1069 call s:SuperSub('texSuperscript','\^','s','ˢ')
1070 call s:SuperSub('texSuperscript','\^','t','ᵗ')
1071 call s:SuperSub('texSuperscript','\^','u','ᵘ')
1072 call s:SuperSub('texSuperscript','\^','v','ᵛ')
1073 call s:SuperSub('texSuperscript','\^','w','ʷ')
1074 call s:SuperSub('texSuperscript','\^','x','ˣ')
1075 call s:SuperSub('texSuperscript','\^','y','ʸ')
1076 call s:SuperSub('texSuperscript','\^','z','ᶻ')
1077 call s:SuperSub('texSuperscript','\^','A','ᴬ')
1078 call s:SuperSub('texSuperscript','\^','B','ᴮ')
1079 call s:SuperSub('texSuperscript','\^','D','ᴰ')
1080 call s:SuperSub('texSuperscript','\^','E','ᴱ')
1081 call s:SuperSub('texSuperscript','\^','G','ᴳ')
1082 call s:SuperSub('texSuperscript','\^','H','ᴴ')
1083 call s:SuperSub('texSuperscript','\^','I','ᴵ')
1084 call s:SuperSub('texSuperscript','\^','J','ᴶ')
1085 call s:SuperSub('texSuperscript','\^','K','ᴷ')
1086 call s:SuperSub('texSuperscript','\^','L','ᴸ')
1087 call s:SuperSub('texSuperscript','\^','M','ᴹ')
1088 call s:SuperSub('texSuperscript','\^','N','ᴺ')
1089 call s:SuperSub('texSuperscript','\^','O','ᴼ')
1090 call s:SuperSub('texSuperscript','\^','P','ᴾ')
1091 call s:SuperSub('texSuperscript','\^','R','ᴿ')
1092 call s:SuperSub('texSuperscript','\^','T','ᵀ')
1093 call s:SuperSub('texSuperscript','\^','U','ᵁ')
Bram Moolenaar388a5d42020-05-26 21:20:45 +02001094 call s:SuperSub('texSuperscript','\^','V','ⱽ')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001095 call s:SuperSub('texSuperscript','\^','W','ᵂ')
Bram Moolenaar6be7f872012-01-20 21:08:56 +01001096 call s:SuperSub('texSuperscript','\^',',','︐')
1097 call s:SuperSub('texSuperscript','\^',':','︓')
1098 call s:SuperSub('texSuperscript','\^',';','︔')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001099 call s:SuperSub('texSuperscript','\^','+','⁺')
1100 call s:SuperSub('texSuperscript','\^','-','⁻')
1101 call s:SuperSub('texSuperscript','\^','<','˂')
1102 call s:SuperSub('texSuperscript','\^','>','˃')
1103 call s:SuperSub('texSuperscript','\^','/','ˊ')
1104 call s:SuperSub('texSuperscript','\^','(','⁽')
1105 call s:SuperSub('texSuperscript','\^',')','⁾')
1106 call s:SuperSub('texSuperscript','\^','\.','˙')
1107 call s:SuperSub('texSuperscript','\^','=','˭')
1108 call s:SuperSub('texSubscript','_','0','₀')
1109 call s:SuperSub('texSubscript','_','1','₁')
1110 call s:SuperSub('texSubscript','_','2','₂')
1111 call s:SuperSub('texSubscript','_','3','₃')
1112 call s:SuperSub('texSubscript','_','4','₄')
1113 call s:SuperSub('texSubscript','_','5','₅')
1114 call s:SuperSub('texSubscript','_','6','₆')
1115 call s:SuperSub('texSubscript','_','7','₇')
1116 call s:SuperSub('texSubscript','_','8','₈')
1117 call s:SuperSub('texSubscript','_','9','₉')
1118 call s:SuperSub('texSubscript','_','a','ₐ')
1119 call s:SuperSub('texSubscript','_','e','ₑ')
Bram Moolenaar802a0d92016-06-26 16:17:58 +02001120 call s:SuperSub('texSubscript','_','h','ₕ')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001121 call s:SuperSub('texSubscript','_','i','ᵢ')
Bram Moolenaar802a0d92016-06-26 16:17:58 +02001122 call s:SuperSub('texSubscript','_','j','ⱼ')
1123 call s:SuperSub('texSubscript','_','k','ₖ')
1124 call s:SuperSub('texSubscript','_','l','ₗ')
1125 call s:SuperSub('texSubscript','_','m','ₘ')
1126 call s:SuperSub('texSubscript','_','n','ₙ')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001127 call s:SuperSub('texSubscript','_','o','ₒ')
Bram Moolenaar802a0d92016-06-26 16:17:58 +02001128 call s:SuperSub('texSubscript','_','p','ₚ')
1129 call s:SuperSub('texSubscript','_','r','ᵣ')
1130 call s:SuperSub('texSubscript','_','s','ₛ')
1131 call s:SuperSub('texSubscript','_','t','ₜ')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001132 call s:SuperSub('texSubscript','_','u','ᵤ')
Bram Moolenaar802a0d92016-06-26 16:17:58 +02001133 call s:SuperSub('texSubscript','_','v','ᵥ')
1134 call s:SuperSub('texSubscript','_','x','ₓ')
Bram Moolenaar6be7f872012-01-20 21:08:56 +01001135 call s:SuperSub('texSubscript','_',',','︐')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001136 call s:SuperSub('texSubscript','_','+','₊')
1137 call s:SuperSub('texSubscript','_','-','₋')
1138 call s:SuperSub('texSubscript','_','/','ˏ')
1139 call s:SuperSub('texSubscript','_','(','₍')
1140 call s:SuperSub('texSubscript','_',')','₎')
1141 call s:SuperSub('texSubscript','_','\.','‸')
1142 call s:SuperSub('texSubscript','_','r','ᵣ')
1143 call s:SuperSub('texSubscript','_','v','ᵥ')
1144 call s:SuperSub('texSubscript','_','x','ₓ')
1145 call s:SuperSub('texSubscript','_','\\beta\>' ,'ᵦ')
1146 call s:SuperSub('texSubscript','_','\\delta\>','ᵨ')
1147 call s:SuperSub('texSubscript','_','\\phi\>' ,'ᵩ')
1148 call s:SuperSub('texSubscript','_','\\gamma\>','ᵧ')
1149 call s:SuperSub('texSubscript','_','\\chi\>' ,'ᵪ')
Bram Moolenaar802a0d92016-06-26 16:17:58 +02001150
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001151 delfun s:SuperSub
1152 endif
Bram Moolenaar611df5b2010-07-26 22:51:56 +02001153
Bram Moolenaarb0d45e72017-11-05 18:19:24 +01001154 " Accented characters and Ligatures: {{{2
Bram Moolenaarf3913272016-02-25 00:00:01 +01001155 if s:tex_conceal =~# 'a'
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001156 if b:tex_stylish
1157 syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1
Bram Moolenaarb0d45e72017-11-05 18:19:24 +01001158 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1
1159 syn match texLigature '--'
1160 syn match texLigature '---'
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001161 else
1162 fun! s:Accents(chr,...)
1163 let i= 1
Bram Moolenaara6878372014-03-22 21:02:50 +01001164 for accent in ["`","\\'","^",'"','\~','\.','=',"c","H","k","r","u","v"]
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001165 if i > a:0
1166 break
1167 endif
Bram Moolenaar7fc0c062010-08-10 21:43:35 +02001168 if strlen(a:{i}) == 0 || a:{i} == ' ' || a:{i} == '?'
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001169 let i= i + 1
1170 continue
1171 endif
Bram Moolenaarf3913272016-02-25 00:00:01 +01001172 if accent =~# '\a'
Bram Moolenaar7fc0c062010-08-10 21:43:35 +02001173 exe "syn match texAccent '".'\\'.accent.'\(\s*{'.a:chr.'}\|\s\+'.a:chr.'\)'."' conceal cchar=".a:{i}
1174 else
1175 exe "syn match texAccent '".'\\'.accent.'\s*\({'.a:chr.'}\|'.a:chr.'\)'."' conceal cchar=".a:{i}
1176 endif
Bram Moolenaare0021c72010-07-28 17:25:21 +02001177 let i= i + 1
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001178 endfor
1179 endfun
Bram Moolenaar6e932462014-09-09 18:48:09 +02001180 " \` \' \^ \" \~ \. \= \c \H \k \r \u \v
1181 call s:Accents('a','à','á','â','ä','ã','ȧ','ā',' ',' ','ą','å','ă','ǎ')
1182 call s:Accents('A','À','Á','Â','Ä','Ã','Ȧ','Ā',' ',' ','Ą','Å','Ă','Ǎ')
1183 call s:Accents('c',' ','ć','ĉ',' ',' ','ċ',' ','ç',' ',' ',' ',' ','č')
1184 call s:Accents('C',' ','Ć','Ĉ',' ',' ','Ċ',' ','Ç',' ',' ',' ',' ','Č')
1185 call s:Accents('d',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ď')
1186 call s:Accents('D',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Ď')
1187 call s:Accents('e','è','é','ê','ë','ẽ','ė','ē','ȩ',' ','ę',' ','ĕ','ě')
1188 call s:Accents('E','È','É','Ê','Ë','Ẽ','Ė','Ē','Ȩ',' ','Ę',' ','Ĕ','Ě')
1189 call s:Accents('g',' ','ǵ','ĝ',' ',' ','ġ',' ','ģ',' ',' ',' ','ğ','ǧ')
1190 call s:Accents('G',' ','Ǵ','Ĝ',' ',' ','Ġ',' ','Ģ',' ',' ',' ','Ğ','Ǧ')
1191 call s:Accents('h',' ',' ','ĥ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ȟ')
1192 call s:Accents('H',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Ȟ')
1193 call s:Accents('i','ì','í','î','ï','ĩ','į','ī',' ',' ','į',' ','ĭ','ǐ')
1194 call s:Accents('I','Ì','Í','Î','Ï','Ĩ','İ','Ī',' ',' ','Į',' ','Ĭ','Ǐ')
1195 call s:Accents('J',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ǰ')
1196 call s:Accents('k',' ',' ',' ',' ',' ',' ',' ','ķ',' ',' ',' ',' ','ǩ')
1197 call s:Accents('K',' ',' ',' ',' ',' ',' ',' ','Ķ',' ',' ',' ',' ','Ǩ')
1198 call s:Accents('l',' ','ĺ','ľ',' ',' ',' ',' ','ļ',' ',' ',' ',' ','ľ')
1199 call s:Accents('L',' ','Ĺ','Ľ',' ',' ',' ',' ','Ļ',' ',' ',' ',' ','Ľ')
1200 call s:Accents('n',' ','ń',' ',' ','ñ',' ',' ','ņ',' ',' ',' ',' ','ň')
1201 call s:Accents('N',' ','Ń',' ',' ','Ñ',' ',' ','Ņ',' ',' ',' ',' ','Ň')
1202 call s:Accents('o','ò','ó','ô','ö','õ','ȯ','ō',' ','ő','ǫ',' ','ŏ','ǒ')
1203 call s:Accents('O','Ò','Ó','Ô','Ö','Õ','Ȯ','Ō',' ','Ő','Ǫ',' ','Ŏ','Ǒ')
1204 call s:Accents('r',' ','ŕ',' ',' ',' ',' ',' ','ŗ',' ',' ',' ',' ','ř')
1205 call s:Accents('R',' ','Ŕ',' ',' ',' ',' ',' ','Ŗ',' ',' ',' ',' ','Ř')
1206 call s:Accents('s',' ','ś','ŝ',' ',' ',' ',' ','ş',' ','ȿ',' ',' ','š')
1207 call s:Accents('S',' ','Ś','Ŝ',' ',' ',' ',' ','Ş',' ',' ',' ',' ','Š')
1208 call s:Accents('t',' ',' ',' ',' ',' ',' ',' ','ţ',' ',' ',' ',' ','ť')
1209 call s:Accents('T',' ',' ',' ',' ',' ',' ',' ','Ţ',' ',' ',' ',' ','Ť')
1210 call s:Accents('u','ù','ú','û','ü','ũ',' ','ū',' ','ű','ų','ů','ŭ','ǔ')
1211 call s:Accents('U','Ù','Ú','Û','Ü','Ũ',' ','Ū',' ','Ű','Ų','Ů','Ŭ','Ǔ')
1212 call s:Accents('w',' ',' ','ŵ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ')
1213 call s:Accents('W',' ',' ','Ŵ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ')
1214 call s:Accents('y','ỳ','ý','ŷ','ÿ','ỹ',' ',' ',' ',' ',' ',' ',' ',' ')
1215 call s:Accents('Y','Ỳ','Ý','Ŷ','Ÿ','Ỹ',' ',' ',' ',' ',' ',' ',' ',' ')
1216 call s:Accents('z',' ','ź',' ',' ',' ','ż',' ',' ',' ',' ',' ',' ','ž')
1217 call s:Accents('Z',' ','Ź',' ',' ',' ','Ż',' ',' ',' ',' ',' ',' ','Ž')
Bram Moolenaara6878372014-03-22 21:02:50 +01001218 call s:Accents('\\i','ì','í','î','ï','ĩ','į',' ',' ',' ',' ',' ','ĭ',' ')
1219 " \` \' \^ \" \~ \. \= \c \H \k \r \u \v
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001220 delfun s:Accents
Bram Moolenaarb0d45e72017-11-05 18:19:24 +01001221 syn match texAccent '\\aa\>' conceal cchar=å
1222 syn match texAccent '\\AA\>' conceal cchar=Å
1223 syn match texAccent '\\o\>' conceal cchar=ø
1224 syn match texAccent '\\O\>' conceal cchar=Ø
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001225 syn match texLigature '\\AE\>' conceal cchar=Æ
1226 syn match texLigature '\\ae\>' conceal cchar=æ
1227 syn match texLigature '\\oe\>' conceal cchar=œ
1228 syn match texLigature '\\OE\>' conceal cchar=Œ
1229 syn match texLigature '\\ss\>' conceal cchar=ß
Bram Moolenaarb0d45e72017-11-05 18:19:24 +01001230 syn match texLigature '--' conceal cchar=–
1231 syn match texLigature '---' conceal cchar=—
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001232 endif
Bram Moolenaar611df5b2010-07-26 22:51:56 +02001233 endif
Bram Moolenaarb2c03502010-07-02 20:20:09 +02001234endif
1235
1236" ---------------------------------------------------------------------
Bram Moolenaar071d4272004-06-13 20:20:40 +00001237" LaTeX synchronization: {{{1
1238syn sync maxlines=200
1239syn sync minlines=50
1240
1241syn sync match texSyncStop groupthere NONE "%stopzone\>"
1242
1243" Synchronization: {{{1
1244" The $..$ and $$..$$ make for impossible sync patterns
1245" (one can't tell if a "$$" starts or stops a math zone by itself)
1246" The following grouptheres coupled with minlines above
1247" help improve the odds of good syncing.
Bram Moolenaare2719092015-01-10 15:09:25 +01001248if !exists("g:tex_no_math")
Bram Moolenaar071d4272004-06-13 20:20:40 +00001249 syn sync match texSyncMathZoneA groupthere NONE "\\end{abstract}"
1250 syn sync match texSyncMathZoneA groupthere NONE "\\end{center}"
1251 syn sync match texSyncMathZoneA groupthere NONE "\\end{description}"
1252 syn sync match texSyncMathZoneA groupthere NONE "\\end{enumerate}"
1253 syn sync match texSyncMathZoneA groupthere NONE "\\end{itemize}"
1254 syn sync match texSyncMathZoneA groupthere NONE "\\end{table}"
1255 syn sync match texSyncMathZoneA groupthere NONE "\\end{tabular}"
1256 syn sync match texSyncMathZoneA groupthere NONE "\\\(sub\)*section\>"
1257endif
1258
Bram Moolenaarb2c03502010-07-02 20:20:09 +02001259" ---------------------------------------------------------------------
Bram Moolenaar071d4272004-06-13 20:20:40 +00001260" Highlighting: {{{1
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001261
1262" Define the default highlighting. {{{1
1263if !exists("skip_tex_syntax_inits")
1264
Bram Moolenaar071d4272004-06-13 20:20:40 +00001265 " TeX highlighting groups which should share similar highlighting
Bram Moolenaar6e932462014-09-09 18:48:09 +02001266 if !exists("g:tex_no_error")
Bram Moolenaar543b7ef2013-06-01 14:50:56 +02001267 if !exists("g:tex_no_math")
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001268 hi def link texBadMath texError
Bram Moolenaarce001a32022-04-27 15:25:03 +01001269 hi def link texBadPar texBadMath
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001270 hi def link texMathDelimBad texError
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001271 hi def link texMathError texError
Bram Moolenaar071d4272004-06-13 20:20:40 +00001272 if !b:tex_stylish
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001273 hi def link texOnlyMath texError
Bram Moolenaar071d4272004-06-13 20:20:40 +00001274 endif
1275 endif
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001276 hi def link texError Error
Bram Moolenaar071d4272004-06-13 20:20:40 +00001277 endif
1278
Bram Moolenaard38b0552012-04-25 19:07:41 +02001279 hi texBoldStyle gui=bold cterm=bold
1280 hi texItalStyle gui=italic cterm=italic
1281 hi texBoldItalStyle gui=bold,italic cterm=bold,italic
1282 hi texItalBoldStyle gui=bold,italic cterm=bold,italic
Bram Moolenaar723dd942019-04-04 13:11:03 +02001283 hi def link texEmphStyle texItalStyle
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001284 hi def link texCite texRefZone
1285 hi def link texDefCmd texDef
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001286 hi def link texDefName texDef
1287 hi def link texDocType texCmdName
1288 hi def link texDocTypeArgs texCmdArgs
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001289 hi def link texInputFileOpt texCmdArgs
1290 hi def link texInputCurlies texDelimiter
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001291 hi def link texLigature texSpecialChar
Bram Moolenaare2719092015-01-10 15:09:25 +01001292 if !exists("g:tex_no_math")
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001293 hi def link texMathDelimSet1 texMathDelim
1294 hi def link texMathDelimSet2 texMathDelim
1295 hi def link texMathDelimKey texMathDelim
1296 hi def link texMathMatcher texMath
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001297 hi def link texAccent texStatement
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001298 hi def link texGreek texStatement
1299 hi def link texSuperscript texStatement
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001300 hi def link texSubscript texStatement
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001301 hi def link texSuperscripts texSuperscript
1302 hi def link texSubscripts texSubscript
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001303 hi def link texMathSymbol texStatement
1304 hi def link texMathZoneV texMath
1305 hi def link texMathZoneW texMath
1306 hi def link texMathZoneX texMath
1307 hi def link texMathZoneY texMath
1308 hi def link texMathZoneV texMath
1309 hi def link texMathZoneZ texMath
Bram Moolenaar071d4272004-06-13 20:20:40 +00001310 endif
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001311 hi def link texBeginEnd texCmdName
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001312 hi def link texBeginEndName texSection
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001313 hi def link texSpaceCode texStatement
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001314 hi def link texStyleStatement texStatement
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001315 hi def link texTypeSize texType
1316 hi def link texTypeStyle texType
Bram Moolenaar071d4272004-06-13 20:20:40 +00001317
1318 " Basic TeX highlighting groups
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001319 hi def link texCmdArgs Number
1320 hi def link texCmdName Statement
1321 hi def link texComment Comment
1322 hi def link texDef Statement
1323 hi def link texDefParm Special
1324 hi def link texDelimiter Delimiter
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001325 hi def link texInput Special
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001326 hi def link texInputFile Special
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001327 hi def link texLength Number
1328 hi def link texMath Special
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001329 hi def link texMathDelim Statement
1330 hi def link texMathOper Operator
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001331 hi def link texNewCmd Statement
1332 hi def link texNewEnv Statement
1333 hi def link texOption Number
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001334 hi def link texRefZone Special
1335 hi def link texSection PreCondit
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001336 hi def link texSpaceCodeChar Special
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001337 hi def link texSpecialChar SpecialChar
1338 hi def link texStatement Statement
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001339 hi def link texString String
1340 hi def link texTodo Todo
1341 hi def link texType Type
1342 hi def link texZone PreCondit
Bram Moolenaar071d4272004-06-13 20:20:40 +00001343
Bram Moolenaar071d4272004-06-13 20:20:40 +00001344endif
1345
Bram Moolenaar15146672011-10-20 22:22:38 +02001346" Cleanup: {{{1
Bram Moolenaara0f849e2015-10-30 14:37:44 +01001347delc TexFold
Bram Moolenaar81af9252010-12-10 20:35:50 +01001348unlet s:extfname
Bram Moolenaar071d4272004-06-13 20:20:40 +00001349let b:current_syntax = "tex"
Bram Moolenaar15146672011-10-20 22:22:38 +02001350let &cpo = s:keepcpo
1351unlet s:keepcpo
Bram Moolenaare90ee312010-08-05 22:08:47 +02001352" vim: ts=8 fdm=marker