blob: bd47e168d77fb317e8650a96f05ace5213dfcd6b [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: TeX
Christian Brabandtf9ca1392024-02-19 20:37:11 +01003" Maintainer: This runtime file is looking for a new maintainer.
4" Former Maintainer: Charles E. Campbell
Bram Moolenaarce001a32022-04-27 15:25:03 +01005" Last Change: Apr 22, 2022
Christian Brabandtf9ca1392024-02-19 20:37:11 +01006" 2024 Feb 19 by Vim Project (announce adoption)
Christian Brabandt60657552024-11-10 14:10:52 +01007" 2024 Nov 09 add Number highlight (#11271)
Bram Moolenaarce001a32022-04-27 15:25:03 +01008" Version: 121
Christian Brabandtf9ca1392024-02-19 20:37:11 +01009" Former URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TEX
Bram Moolenaar071d4272004-06-13 20:20:40 +000010"
11" Notes: {{{1
12"
13" 1. If you have a \begin{verbatim} that appears to overrun its boundaries,
14" use %stopzone.
15"
16" 2. Run-on equations ($..$ and $$..$$, particularly) can also be stopped
17" by suitable use of %stopzone.
18"
19" 3. If you have a slow computer, you may wish to modify
20"
21" syn sync maxlines=200
22" syn sync minlines=50
23"
24" to values that are more to your liking.
25"
26" 4. There is no match-syncing for $...$ and $$...$$; hence large
27" equation blocks constructed that way may exhibit syncing problems.
28" (there's no difference between begin/end patterns)
29"
30" 5. If you have the variable "g:tex_no_error" defined then none of the
31" lexical error-checking will be done.
32"
33" ie. let g:tex_no_error=1
Bram Moolenaara6878372014-03-22 21:02:50 +010034"
35" 6. Please see :help latex-syntax for information on
36" syntax folding :help tex-folding
37" spell checking :help tex-nospell
38" commands and mathzones :help tex-runon
39" new command highlighting :help tex-morecommands
40" error highlighting :help tex-error
41" new math groups :help tex-math
42" new styles :help tex-style
43" using conceal mode :help tex-conceal
Bram Moolenaar071d4272004-06-13 20:20:40 +000044
45" Version Clears: {{{1
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020046" quit when a syntax file was already loaded
47if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000048 finish
49endif
Bram Moolenaar15146672011-10-20 22:22:38 +020050let s:keepcpo= &cpo
51set cpo&vim
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +020052scriptencoding utf-8
Bram Moolenaar071d4272004-06-13 20:20:40 +000053
Bram Moolenaar543b7ef2013-06-01 14:50:56 +020054" by default, enable all region-based highlighting
55let s:tex_fast= "bcmMprsSvV"
56if exists("g:tex_fast")
57 if type(g:tex_fast) != 1
58 " g:tex_fast exists and is not a string, so
59 " turn off all optional region-based highighting
60 let s:tex_fast= ""
61 else
62 let s:tex_fast= g:tex_fast
63 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000064endif
65
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +020066" let user determine which classes of concealment will be supported
Bram Moolenaar7fc0c062010-08-10 21:43:35 +020067" a=accents/ligatures d=delimiters m=math symbols g=Greek s=superscripts/subscripts
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +020068if !exists("g:tex_conceal")
Bram Moolenaarbc488a72013-07-05 21:01:22 +020069 let s:tex_conceal= 'abdmgsS'
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +020070else
71 let s:tex_conceal= g:tex_conceal
72endif
Bram Moolenaar6e932462014-09-09 18:48:09 +020073if !exists("g:tex_superscripts")
Bram Moolenaar802a0d92016-06-26 16:17:58 +020074 let s:tex_superscripts= '[0-9a-zA-W.,:;+-<>/()=]'
Bram Moolenaar03413f42016-04-12 21:07:15 +020075else
76 let s:tex_superscripts= g:tex_superscripts
Bram Moolenaar6e932462014-09-09 18:48:09 +020077endif
78if !exists("g:tex_subscripts")
Bram Moolenaar802a0d92016-06-26 16:17:58 +020079 let s:tex_subscripts= '[0-9aehijklmnoprstuvx,+-/().]'
Bram Moolenaar03413f42016-04-12 21:07:15 +020080else
81 let s:tex_subscripts= g:tex_subscripts
Bram Moolenaar6e932462014-09-09 18:48:09 +020082endif
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +020083
Bram Moolenaarf1f8bc52005-03-07 23:20:08 +000084" Determine whether or not to use "*.sty" mode {{{1
Bram Moolenaar071d4272004-06-13 20:20:40 +000085" The user may override the normal determination by setting
86" g:tex_stylish to 1 (for "*.sty" mode)
87" or to 0 else (normal "*.tex" mode)
88" or on a buffer-by-buffer basis with b:tex_stylish
Bram Moolenaar81af9252010-12-10 20:35:50 +010089let s:extfname=expand("%:e")
Bram Moolenaar071d4272004-06-13 20:20:40 +000090if exists("g:tex_stylish")
91 let b:tex_stylish= g:tex_stylish
92elseif !exists("b:tex_stylish")
Bram Moolenaar81af9252010-12-10 20:35:50 +010093 if s:extfname == "sty" || s:extfname == "cls" || s:extfname == "clo" || s:extfname == "dtx" || s:extfname == "ltx"
Bram Moolenaar071d4272004-06-13 20:20:40 +000094 let b:tex_stylish= 1
95 else
96 let b:tex_stylish= 0
97 endif
98endif
99
Bram Moolenaarf1f8bc52005-03-07 23:20:08 +0000100" handle folding {{{1
101if !exists("g:tex_fold_enabled")
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100102 let s:tex_fold_enabled= 0
Bram Moolenaarf1f8bc52005-03-07 23:20:08 +0000103elseif g:tex_fold_enabled && !has("folding")
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100104 let s:tex_fold_enabled= 0
Bram Moolenaarf1f8bc52005-03-07 23:20:08 +0000105 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 +0100106else
107 let s:tex_fold_enabled= 1
Bram Moolenaarf1f8bc52005-03-07 23:20:08 +0000108endif
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100109if s:tex_fold_enabled && &fdm == "manual"
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200110 setl fdm=syntax
Bram Moolenaarf1f8bc52005-03-07 23:20:08 +0000111endif
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100112if s:tex_fold_enabled && has("folding")
amarakon8e6b5032024-11-09 18:59:31 +0100113 com! -nargs=* TexFold <args> fold
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100114else
amarakon8e6b5032024-11-09 18:59:31 +0100115 com! -nargs=* TexFold <args>
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100116endif
Bram Moolenaarf1f8bc52005-03-07 23:20:08 +0000117
Bram Moolenaaradc21822011-04-01 18:03:16 +0200118" (La)TeX keywords: uses the characters 0-9,a-z,A-Z,192-255 only... {{{1
Bram Moolenaar071d4272004-06-13 20:20:40 +0000119" but _ is the only one that causes problems.
Bram Moolenaaradc21822011-04-01 18:03:16 +0200120" One may override this iskeyword setting by providing
121" g:tex_isk
122if exists("g:tex_isk")
Bram Moolenaarbc8801c2016-08-02 21:04:33 +0200123 if b:tex_stylish && g:tex_isk !~ '@'
124 let b:tex_isk= '@,'.g:tex_isk
125 else
126 let b:tex_isk= g:tex_isk
127 endif
128elseif b:tex_stylish
129 let b:tex_isk="@,48-57,a-z,A-Z,192-255"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000130else
Bram Moolenaarbc8801c2016-08-02 21:04:33 +0200131 let b:tex_isk="48-57,a-z,A-Z,192-255"
Bram Moolenaaradc21822011-04-01 18:03:16 +0200132endif
Bram Moolenaar723dd942019-04-04 13:11:03 +0200133if (v:version == 704 && has("patch-7.4.1142")) || v:version > 704
Bram Moolenaarbc8801c2016-08-02 21:04:33 +0200134 exe "syn iskeyword ".b:tex_isk
135else
136 exe "setl isk=".b:tex_isk
Bram Moolenaar071d4272004-06-13 20:20:40 +0000137endif
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100138if exists("g:tex_no_error") && g:tex_no_error
139 let s:tex_no_error= 1
140else
141 let s:tex_no_error= 0
142endif
143if exists("g:tex_comment_nospell") && g:tex_comment_nospell
144 let s:tex_comment_nospell= 1
145else
146 let s:tex_comment_nospell= 0
147endif
148if exists("g:tex_nospell") && g:tex_nospell
149 let s:tex_nospell = 1
150else
151 let s:tex_nospell = 0
Bram Moolenaard960d762011-09-21 19:22:10 +0200152endif
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200153if exists("g:tex_matchcheck")
154 let s:tex_matchcheck= g:tex_matchcheck
155else
156 let s:tex_matchcheck= '[({[]'
157endif
Bram Moolenaar1d9215b2020-01-25 13:27:42 +0100158if exists("g:tex_excludematcher")
159 let s:tex_excludematcher= g:tex_excludematcher
160else
161 let s:tex_excludematcher= 0
162endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000163
164" Clusters: {{{1
165" --------
amarakon8e6b5032024-11-09 18:59:31 +0100166syn cluster texCmdGroup contains=texCmdBody,texComment,texDefParm,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathOper,texMathNumber,texNewCmd,texNewEnv,texRefZone,texSection,texBeginEnd,texBeginEndName,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,@texMathZones
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100167if !s:tex_no_error
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100168 syn cluster texCmdGroup add=texMathError
Bram Moolenaar071d4272004-06-13 20:20:40 +0000169endif
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100170syn cluster texEnvGroup contains=texMatcher,texMathDelim,texSpecialChar,texStatement
Bram Moolenaar723dd942019-04-04 13:11:03 +0200171syn 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 +0100172syn 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
173syn 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
174if !s:tex_excludematcher
175 syn cluster texBoldGroup add=texMatcher
176 syn cluster texItalGroup add=texMatcher
177endif
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100178if !s:tex_nospell
Bram Moolenaarce001a32022-04-27 15:25:03 +0100179 if !s:tex_no_error
180 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
181 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
182 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
183 else
184 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
185 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
186 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
187 endif
Bram Moolenaard960d762011-09-21 19:22:10 +0200188else
Bram Moolenaarce001a32022-04-27 15:25:03 +0100189 if !s:tex_no_error
190 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
191 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
192 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
193 else
194 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
195 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
196 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
197 endif
Bram Moolenaard960d762011-09-21 19:22:10 +0200198endif
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +0200199syn 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 +0100200syn cluster texRefGroup contains=texMatcher,texComment,texDelimiter
Bram Moolenaare2719092015-01-10 15:09:25 +0100201if !exists("g:tex_no_math")
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +0200202 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 +0100203 syn cluster texMathZones contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ
204 syn cluster texMatchGroup add=@texMathZones
205 syn cluster texMathDelimGroup contains=texMathDelimBad,texMathDelimKey,texMathDelimSet1,texMathDelimSet2
amarakon8e6b5032024-11-09 18:59:31 +0100206 syn cluster texMathMatchGroup contains=@texMathZones,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathMatcher,texMathOper,texMathNumber,texNewCmd,texNewEnv,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone
207 syn cluster texMathZoneGroup contains=texBadPar,texComment,texDelimiter,texLength,texMathDelim,texMathMatcher,texMathOper,texMathNumber,texMathSymbol,texMathText,texRefZone,texSpecialChar,texStatement,texTypeSize,texTypeStyle
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100208 if !s:tex_no_error
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100209 syn cluster texMathMatchGroup add=texMathError
210 syn cluster texMathZoneGroup add=texMathError
Bram Moolenaar071d4272004-06-13 20:20:40 +0000211 endif
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100212 syn cluster texMathZoneGroup add=@NoSpell
Bram Moolenaar5b8d8fd2005-08-16 23:01:50 +0000213 " following used in the \part \chapter \section \subsection \subsubsection
214 " \paragraph \subparagraph \author \title highlighting
215 syn cluster texDocGroup contains=texPartZone,@texPartGroup
216 syn cluster texPartGroup contains=texChapterZone,texSectionZone,texParaZone
217 syn cluster texChapterGroup contains=texSectionZone,texParaZone
218 syn cluster texSectionGroup contains=texSubSectionZone,texParaZone
219 syn cluster texSubSectionGroup contains=texSubSubSectionZone,texParaZone
220 syn cluster texSubSubSectionGroup contains=texParaZone
221 syn cluster texParaGroup contains=texSubParaZone
Bram Moolenaarb2c03502010-07-02 20:20:09 +0200222 if has("conceal") && &enc == 'utf-8'
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100223 syn cluster texMathZoneGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol
224 syn cluster texMathMatchGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol
Bram Moolenaarb2c03502010-07-02 20:20:09 +0200225 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000226endif
227
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200228" Try to flag {}, [], and () mismatches: {{{1
Bram Moolenaarf3913272016-02-25 00:00:01 +0100229if s:tex_fast =~# 'm'
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100230 if !s:tex_no_error
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200231 if s:tex_matchcheck =~ '{'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100232 syn region texMatcher matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup,texError
233 syn region texMatcherNM matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup,texError
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200234 endif
235 if s:tex_matchcheck =~ '\['
Bram Moolenaarce001a32022-04-27 15:25:03 +0100236 syn region texMatcher matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchGroup,texError,@NoSpell
237 syn region texMatcherNM matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchNMGroup,texError,@NoSpell
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200238 endif
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100239 else
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200240 if s:tex_matchcheck =~ '{'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100241 syn region texMatcher matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup
242 syn region texMatcherNM matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200243 endif
244 if s:tex_matchcheck =~ '\['
Bram Moolenaarce001a32022-04-27 15:25:03 +0100245 syn region texMatcher matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchGroup
246 syn region texMatcherNM matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchNMGroup
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200247 endif
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100248 endif
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200249 if s:tex_matchcheck =~ '('
250 if !s:tex_nospell
251 syn region texParen start="(" end=")" transparent contains=@texMatchGroup,@Spell
252 else
253 syn region texParen start="(" end=")" transparent contains=@texMatchGroup
254 endif
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100255 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000256endif
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100257if !s:tex_no_error
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200258 if s:tex_matchcheck =~ '('
259 syn match texError "[}\]]"
260 else
261 syn match texError "[}\])]"
262 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000263endif
Bram Moolenaarf3913272016-02-25 00:00:01 +0100264if s:tex_fast =~# 'M'
Bram Moolenaare2719092015-01-10 15:09:25 +0100265 if !exists("g:tex_no_math")
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100266 if !s:tex_no_error
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100267 syn match texMathError "}" contained
268 endif
Bram Moolenaarce001a32022-04-27 15:25:03 +0100269 syn region texMathMatcher matchgroup=texDelimiter start="{" skip="\%(\\\\\)*\\}" end="}" end="%stopzone\>" contained contains=@texMathMatchGroup
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100270 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000271endif
272
273" TeX/LaTeX keywords: {{{1
274" Instead of trying to be All Knowing, I just match \..alphameric..
275" Note that *.tex files may not have "@" in their \commands
276if exists("g:tex_tex") || b:tex_stylish
277 syn match texStatement "\\[a-zA-Z@]\+"
278else
279 syn match texStatement "\\\a\+"
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100280 if !s:tex_no_error
Bram Moolenaar071d4272004-06-13 20:20:40 +0000281 syn match texError "\\\a*@[a-zA-Z@]*"
282 endif
283endif
284
285" TeX/LaTeX delimiters: {{{1
286syn match texDelimiter "&"
287syn match texDelimiter "\\\\"
288
289" Tex/Latex Options: {{{1
Bram Moolenaard38b0552012-04-25 19:07:41 +0200290syn match texOption "[^\\]\zs#\d\+\|^#\d\+"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000291
292" texAccent (tnx to Karim Belabas) avoids annoying highlighting for accents: {{{1
293if b:tex_stylish
294 syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1
295 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1
296else
297 syn match texAccent "\\[bcdvuH]\A"me=e-1
298 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)\A"me=e-1
299endif
300syn match texAccent "\\[bcdvuH]$"
301syn match texAccent +\\[=^.\~"`']+
302syn match texAccent +\\['=t'.c^ud"vb~Hr]{\a}+
303syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)$"
304
Bram Moolenaarb0d45e72017-11-05 18:19:24 +0100305
Bram Moolenaar071d4272004-06-13 20:20:40 +0000306" \begin{}/\end{} section markers: {{{1
Bram Moolenaard38b0552012-04-25 19:07:41 +0200307syn match texBeginEnd "\\begin\>\|\\end\>" nextgroup=texBeginEndName
Bram Moolenaarf3913272016-02-25 00:00:01 +0100308if s:tex_fast =~# 'm'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100309 syn region texBeginEndName matchgroup=texDelimiter start="{" end="}" contained nextgroup=texBeginEndModifier contains=texComment
310 syn region texBeginEndModifier matchgroup=texDelimiter start="\[" end="]" contained contains=texComment,@texMathZones,@NoSpell
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100311endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000312
313" \documentclass, \documentstyle, \usepackage: {{{1
Bram Moolenaard38b0552012-04-25 19:07:41 +0200314syn match texDocType "\\documentclass\>\|\\documentstyle\>\|\\usepackage\>" nextgroup=texBeginEndName,texDocTypeArgs
Bram Moolenaarf3913272016-02-25 00:00:01 +0100315if s:tex_fast =~# 'm'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100316 syn region texDocTypeArgs matchgroup=texDelimiter start="\[" end="]" contained nextgroup=texBeginEndName contains=texComment,@NoSpell
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100317endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000318
Bram Moolenaara9a568c2006-03-14 23:04:27 +0000319" Preamble syntax-based folding support: {{{1
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100320if s:tex_fold_enabled && has("folding")
Bram Moolenaard38b0552012-04-25 19:07:41 +0200321 syn region texPreamble transparent fold start='\zs\\documentclass\>' end='\ze\\begin{document}' contains=texStyle,@texPreambleMatchGroup
Bram Moolenaara9a568c2006-03-14 23:04:27 +0000322endif
323
Bram Moolenaar071d4272004-06-13 20:20:40 +0000324" TeX input: {{{1
325syn match texInput "\\input\s\+[a-zA-Z/.0-9_^]\+"hs=s+7 contains=texStatement
Bram Moolenaar5c736222010-01-06 20:54:52 +0100326syn match texInputFile "\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
Bram Moolenaar071d4272004-06-13 20:20:40 +0000327syn match texInputFile "\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
328syn match texInputCurlies "[{}]" contained
Bram Moolenaarf3913272016-02-25 00:00:01 +0100329if s:tex_fast =~# 'm'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100330 syn region texInputFileOpt matchgroup=texDelimiter start="\[" end="\]" contained contains=texComment
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100331endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000332
333" Type Styles (LaTeX 2.09): {{{1
334syn match texTypeStyle "\\rm\>"
335syn match texTypeStyle "\\em\>"
336syn match texTypeStyle "\\bf\>"
337syn match texTypeStyle "\\it\>"
338syn match texTypeStyle "\\sl\>"
339syn match texTypeStyle "\\sf\>"
340syn match texTypeStyle "\\sc\>"
341syn match texTypeStyle "\\tt\>"
342
343" Type Styles: attributes, commands, families, etc (LaTeX2E): {{{1
Bram Moolenaar7db8f6f2016-03-29 23:12:46 +0200344if s:tex_conceal !~# 'b'
Bram Moolenaard38b0552012-04-25 19:07:41 +0200345 syn match texTypeStyle "\\textbf\>"
346 syn match texTypeStyle "\\textit\>"
Bram Moolenaar723dd942019-04-04 13:11:03 +0200347 syn match texTypeStyle "\\emph\>"
Bram Moolenaard38b0552012-04-25 19:07:41 +0200348endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000349syn match texTypeStyle "\\textmd\>"
350syn match texTypeStyle "\\textrm\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000351
Bram Moolenaar071d4272004-06-13 20:20:40 +0000352syn match texTypeStyle "\\mathbf\>"
353syn match texTypeStyle "\\mathcal\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000354syn match texTypeStyle "\\mathit\>"
355syn match texTypeStyle "\\mathnormal\>"
356syn match texTypeStyle "\\mathrm\>"
357syn match texTypeStyle "\\mathsf\>"
358syn match texTypeStyle "\\mathtt\>"
359
360syn match texTypeStyle "\\rmfamily\>"
361syn match texTypeStyle "\\sffamily\>"
362syn match texTypeStyle "\\ttfamily\>"
363
364syn match texTypeStyle "\\itshape\>"
365syn match texTypeStyle "\\scshape\>"
366syn match texTypeStyle "\\slshape\>"
367syn match texTypeStyle "\\upshape\>"
368
369syn match texTypeStyle "\\bfseries\>"
370syn match texTypeStyle "\\mdseries\>"
371
372" Some type sizes: {{{1
373syn match texTypeSize "\\tiny\>"
374syn match texTypeSize "\\scriptsize\>"
375syn match texTypeSize "\\footnotesize\>"
376syn match texTypeSize "\\small\>"
377syn match texTypeSize "\\normalsize\>"
378syn match texTypeSize "\\large\>"
379syn match texTypeSize "\\Large\>"
380syn match texTypeSize "\\LARGE\>"
381syn match texTypeSize "\\huge\>"
382syn match texTypeSize "\\Huge\>"
383
384" Spacecodes (TeX'isms): {{{1
385" \mathcode`\^^@="2201 \delcode`\(="028300 \sfcode`\)=0 \uccode`X=`X \lccode`x=`x
386syn match texSpaceCode "\\\(math\|cat\|del\|lc\|sf\|uc\)code`"me=e-1 nextgroup=texSpaceCodeChar
387syn match texSpaceCodeChar "`\\\=.\(\^.\)\==\(\d\|\"\x\{1,6}\|`.\)" contained
388
389" Sections, subsections, etc: {{{1
Bram Moolenaarf3913272016-02-25 00:00:01 +0100390if s:tex_fast =~# 'p'
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100391 if !s:tex_nospell
392 TexFold syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup,@Spell
393 TexFold syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup,@Spell
394 TexFold syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup,@Spell
395 TexFold syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup,@Spell
396 TexFold syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup,@Spell
397 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
398 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
399 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
400 TexFold syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup,@Spell
401 TexFold syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup,@Spell
402 else
403 TexFold syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup
404 TexFold syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup
405 TexFold syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup
406 TexFold syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup
407 TexFold syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup
408 TexFold syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSubSectionGroup
409 TexFold syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texParaGroup
410 TexFold syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup
411 TexFold syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup
412 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 +0100413 endif
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000414endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000415
Bram Moolenaard38b0552012-04-25 19:07:41 +0200416" particular support for bold and italic {{{1
Bram Moolenaarf3913272016-02-25 00:00:01 +0100417if s:tex_fast =~# 'b'
418 if s:tex_conceal =~# 'b'
Bram Moolenaar83d1b192015-04-13 14:22:40 +0200419 if !exists("g:tex_nospell") || !g:tex_nospell
Bram Moolenaar541f92d2015-06-19 13:27:23 +0200420 syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
421 syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell
422 syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell
423 syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
Bram Moolenaar723dd942019-04-04 13:11:03 +0200424 syn region texEmphStyle matchgroup=texTypeStyle start="\\emph\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell
Bram Moolenaar1d9215b2020-01-25 13:27:42 +0100425 syn region texEmphStyle matchgroup=texTypeStyle start="\\texts[cfl]\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
426 syn region texEmphStyle matchgroup=texTypeStyle start="\\textup\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
427 syn region texEmphStyle matchgroup=texTypeStyle start="\\texttt\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
amarakon8e6b5032024-11-09 18:59:31 +0100428 else
Bram Moolenaar541f92d2015-06-19 13:27:23 +0200429 syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup
430 syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup
431 syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup
432 syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup
Bram Moolenaar723dd942019-04-04 13:11:03 +0200433 syn region texEmphStyle matchgroup=texTypeStyle start="\\emph\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup
Bram Moolenaar1d9215b2020-01-25 13:27:42 +0100434 syn region texEmphStyle matchgroup=texTypeStyle start="\\texts[cfl]\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup
435 syn region texEmphStyle matchgroup=texTypeStyle start="\\textup\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup
436 syn region texEmphStyle matchgroup=texTypeStyle start="\\texttt\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup
Bram Moolenaar83d1b192015-04-13 14:22:40 +0200437 endif
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100438 endif
Bram Moolenaard38b0552012-04-25 19:07:41 +0200439endif
440
Bram Moolenaar071d4272004-06-13 20:20:40 +0000441" Bad Math (mismatched): {{{1
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100442if !exists("g:tex_no_math") && !s:tex_no_error
Bram Moolenaar51ad4ea2018-04-06 11:14:11 +0200443 syn match texBadMath "\\end\s*{\s*\(array\|[bBpvV]matrix\|split\|smallmatrix\)\s*}"
Bram Moolenaarf0b03c42017-12-17 17:17:07 +0100444 syn match texBadMath "\\end\s*{\s*\(displaymath\|equation\|eqnarray\|math\)\*\=\s*}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000445 syn match texBadMath "\\[\])]"
Bram Moolenaarce001a32022-04-27 15:25:03 +0100446 syn match texBadPar contained "\%(\\par\>\|^\s*\n.\)"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000447endif
448
449" Math Zones: {{{1
Bram Moolenaare2719092015-01-10 15:09:25 +0100450if !exists("g:tex_no_math")
Bram Moolenaar488c6512005-08-11 20:09:58 +0000451 " TexNewMathZone: function creates a mathzone with the given suffix and mathzone name. {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000452 " Starred forms are created if starform is true. Starred
453 " forms have syntax group and synchronization groups with a
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +0200454 " "S" appended. Handles: cluster, syntax, sync, and highlighting.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000455 fun! TexNewMathZone(sfx,mathzone,starform)
456 let grpname = "texMathZone".a:sfx
457 let syncname = "texSyncMathZone".a:sfx
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100458 if s:tex_fold_enabled
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000459 let foldcmd= " fold"
460 else
461 let foldcmd= ""
462 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000463 exe "syn cluster texMathZones add=".grpname
Bram Moolenaarf3913272016-02-25 00:00:01 +0100464 if s:tex_fast =~# 'M'
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100465 exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
466 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
467 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
468 endif
Bram Moolenaar5c736222010-01-06 20:54:52 +0100469 exe 'hi def link '.grpname.' texMath'
Bram Moolenaar071d4272004-06-13 20:20:40 +0000470 if a:starform
471 let grpname = "texMathZone".a:sfx.'S'
472 let syncname = "texSyncMathZone".a:sfx.'S'
473 exe "syn cluster texMathZones add=".grpname
Bram Moolenaarf3913272016-02-25 00:00:01 +0100474 if s:tex_fast =~# 'M'
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100475 exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
476 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
477 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
478 endif
Bram Moolenaar5c736222010-01-06 20:54:52 +0100479 exe 'hi def link '.grpname.' texMath'
Bram Moolenaar071d4272004-06-13 20:20:40 +0000480 endif
481 endfun
482
483 " Standard Math Zones: {{{2
Bram Moolenaarf0b03c42017-12-17 17:17:07 +0100484 call TexNewMathZone("A","displaymath",1)
485 call TexNewMathZone("B","eqnarray",1)
486 call TexNewMathZone("C","equation",1)
487 call TexNewMathZone("D","math",1)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000488
489 " Inline Math Zones: {{{2
Bram Moolenaarf3913272016-02-25 00:00:01 +0100490 if s:tex_fast =~# 'M'
491 if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~# 'd'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100492 syn region texMathZoneV matchgroup=texDelimiter start="\\(" matchgroup=texDelimiter end="\\)\|%stopzone\>" keepend concealends contains=@texMathZoneGroup
493 syn region texMathZoneW matchgroup=texDelimiter start="\\\[" matchgroup=texDelimiter end="\\]\|%stopzone\>" keepend concealends contains=@texMathZoneGroup
494 syn region texMathZoneX matchgroup=texDelimiter start="\$" skip="\\\\\|\\\$" matchgroup=texDelimiter end="\$" end="%stopzone\>" concealends contains=@texMathZoneGroup
495 syn region texMathZoneY matchgroup=texDelimiter start="\$\$" matchgroup=texDelimiter end="\$\$" end="%stopzone\>" keepend concealends contains=@texMathZoneGroup
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100496 else
Bram Moolenaarce001a32022-04-27 15:25:03 +0100497 syn region texMathZoneV matchgroup=texDelimiter start="\\(" matchgroup=texDelimiter end="\\)\|%stopzone\>" keepend contains=@texMathZoneGroup
498 syn region texMathZoneW matchgroup=texDelimiter start="\\\[" matchgroup=texDelimiter end="\\]\|%stopzone\>" keepend contains=@texMathZoneGroup
499 syn region texMathZoneX matchgroup=texDelimiter start="\$" skip="\%(\\\\\)*\\\$" matchgroup=texDelimiter end="\$" end="%stopzone\>" contains=@texMathZoneGroup
500 syn region texMathZoneY matchgroup=texDelimiter start="\$\$" matchgroup=texDelimiter end="\$\$" end="%stopzone\>" keepend contains=@texMathZoneGroup
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100501 endif
Bram Moolenaar541f92d2015-06-19 13:27:23 +0200502 syn region texMathZoneZ matchgroup=texStatement start="\\ensuremath\s*{" matchgroup=texStatement end="}" end="%stopzone\>" contains=@texMathZoneGroup
Bram Moolenaare0021c72010-07-28 17:25:21 +0200503 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000504
505 syn match texMathOper "[_^=]" contained
amarakon8e6b5032024-11-09 18:59:31 +0100506 syn match texMathNumber "\<\d\|\.\d" contained
Bram Moolenaar071d4272004-06-13 20:20:40 +0000507
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200508 " Text Inside Math Zones: {{{2
Bram Moolenaarf3913272016-02-25 00:00:01 +0100509 if s:tex_fast =~# 'M'
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100510 if !exists("g:tex_nospell") || !g:tex_nospell
511 syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{' end='}' contains=@texFoldGroup,@Spell
512 else
513 syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{' end='}' contains=@texFoldGroup
514 endif
Bram Moolenaard960d762011-09-21 19:22:10 +0200515 endif
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200516
Bram Moolenaar071d4272004-06-13 20:20:40 +0000517 " \left..something.. and \right..something.. support: {{{2
518 syn match texMathDelimBad contained "\S"
Bram Moolenaarf3913272016-02-25 00:00:01 +0100519 if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~# 'm'
Bram Moolenaarbc8801c2016-08-02 21:04:33 +0200520 syn match texMathDelim contained "\\left\["
521 syn match texMathDelim contained "\\left\\{" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar={
522 syn match texMathDelim contained "\\right\\}" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar=}
Bram Moolenaaradc21822011-04-01 18:03:16 +0200523 let s:texMathDelimList=[
524 \ ['<' , '<'] ,
525 \ ['>' , '>'] ,
526 \ ['(' , '('] ,
527 \ [')' , ')'] ,
528 \ ['\[' , '['] ,
529 \ [']' , ']'] ,
530 \ ['\\{' , '{'] ,
531 \ ['\\}' , '}'] ,
532 \ ['|' , '|'] ,
533 \ ['\\|' , '‖'] ,
534 \ ['\\backslash' , '\'] ,
535 \ ['\\downarrow' , '↓'] ,
536 \ ['\\Downarrow' , '⇓'] ,
Bram Moolenaaradc21822011-04-01 18:03:16 +0200537 \ ['\\lbrace' , '['] ,
538 \ ['\\lceil' , '⌈'] ,
539 \ ['\\lfloor' , '⌊'] ,
540 \ ['\\lgroup' , '⌊'] ,
541 \ ['\\lmoustache' , '⎛'] ,
Bram Moolenaaradc21822011-04-01 18:03:16 +0200542 \ ['\\rbrace' , ']'] ,
543 \ ['\\rceil' , '⌉'] ,
544 \ ['\\rfloor' , '⌋'] ,
545 \ ['\\rgroup' , '⌋'] ,
546 \ ['\\rmoustache' , '⎞'] ,
547 \ ['\\uparrow' , '↑'] ,
548 \ ['\\Uparrow' , '↑'] ,
549 \ ['\\updownarrow', '↕'] ,
550 \ ['\\Updownarrow', '⇕']]
Bram Moolenaar690afe12017-01-28 18:34:47 +0100551 if &ambw == "double" || exists("g:tex_usedblwidth")
552 let s:texMathDelimList= s:texMathDelimList + [
553 \ ['\\langle' , '〈'] ,
Bram Moolenaar7f2e9d72017-11-11 20:58:53 +0100554 \ ['\\rangle' , '〉']]
Bram Moolenaar690afe12017-01-28 18:34:47 +0100555 else
556 let s:texMathDelimList= s:texMathDelimList + [
557 \ ['\\langle' , '<'] ,
558 \ ['\\rangle' , '>']]
559 endif
Bram Moolenaaradc21822011-04-01 18:03:16 +0200560 syn match texMathDelim '\\[bB]igg\=[lr]' contained nextgroup=texMathDelimBad
561 for texmath in s:texMathDelimList
562 exe "syn match texMathDelim '\\\\[bB]igg\\=[lr]\\=".texmath[0]."' contained conceal cchar=".texmath[1]
563 endfor
564
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +0200565 else
566 syn match texMathDelim contained "\\\(left\|right\)\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad
Bram Moolenaaradc21822011-04-01 18:03:16 +0200567 syn match texMathDelim contained "\\[bB]igg\=[lr]\=\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad
568 syn match texMathDelimSet2 contained "\\" nextgroup=texMathDelimKey,texMathDelimBad
569 syn match texMathDelimSet1 contained "[<>()[\]|/.]\|\\[{}|]"
570 syn keyword texMathDelimKey contained backslash lceil lVert rgroup uparrow
571 syn keyword texMathDelimKey contained downarrow lfloor rangle rmoustache Uparrow
572 syn keyword texMathDelimKey contained Downarrow lgroup rbrace rvert updownarrow
573 syn keyword texMathDelimKey contained langle lmoustache rceil rVert Updownarrow
574 syn keyword texMathDelimKey contained lbrace lvert rfloor
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +0200575 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000576 syn match texMathDelim contained "\\\(left\|right\)arrow\>\|\<\([aA]rrow\|brace\)\=vert\>"
577 syn match texMathDelim contained "\\lefteqn\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000578endif
579
580" Special TeX characters ( \$ \& \% \# \{ \} \_ \S \P ) : {{{1
581syn match texSpecialChar "\\[$&%#{}_]"
582if b:tex_stylish
583 syn match texSpecialChar "\\[SP@][^a-zA-Z@]"me=e-1
584else
585 syn match texSpecialChar "\\[SP@]\A"me=e-1
586endif
587syn match texSpecialChar "\\\\"
Bram Moolenaare2719092015-01-10 15:09:25 +0100588if !exists("g:tex_no_math")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000589 syn match texOnlyMath "[_^]"
590endif
591syn match texSpecialChar "\^\^[0-9a-f]\{2}\|\^\^\S"
Bram Moolenaar7db8f6f2016-03-29 23:12:46 +0200592if s:tex_conceal !~# 'S'
Bram Moolenaarbc488a72013-07-05 21:01:22 +0200593 syn match texSpecialChar '\\glq\>' contained conceal cchar=‚
594 syn match texSpecialChar '\\grq\>' contained conceal cchar=‘
595 syn match texSpecialChar '\\glqq\>' contained conceal cchar=„
596 syn match texSpecialChar '\\grqq\>' contained conceal cchar=“
597 syn match texSpecialChar '\\hyp\>' contained conceal cchar=-
598endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000599
600" Comments: {{{1
601" Normal TeX LaTeX : %....
602" Documented TeX Format: ^^A... -and- leading %s (only)
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100603if !s:tex_comment_nospell
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000604 syn cluster texCommentGroup contains=texTodo,@Spell
605else
606 syn cluster texCommentGroup contains=texTodo,@NoSpell
607endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000608syn case ignore
Bram Moolenaar18144c82006-04-12 21:52:12 +0000609syn keyword texTodo contained combak fixme todo xxx
Bram Moolenaar071d4272004-06-13 20:20:40 +0000610syn case match
Bram Moolenaar81af9252010-12-10 20:35:50 +0100611if s:extfname == "dtx"
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100612 syn match texComment "\^\^A.*$" contains=@texCommentGroup
613 syn match texComment "^%\+" contains=@texCommentGroup
Bram Moolenaar071d4272004-06-13 20:20:40 +0000614else
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100615 if s:tex_fold_enabled
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100616 " allows syntax-folding of 2 or more contiguous comment lines
617 " single-line comments are not folded
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100618 syn match texComment "%.*$" contains=@texCommentGroup
Bram Moolenaarf3913272016-02-25 00:00:01 +0100619 if s:tex_fast =~# 'c'
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100620 TexFold syn region texComment start="^\zs\s*%.*\_s*%" skip="^\s*%" end='^\ze\s*[^%]' contains=@texCommentGroup
621 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 +0000622 endif
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100623 else
624 syn match texComment "%.*$" contains=@texCommentGroup
Bram Moolenaarf3913272016-02-25 00:00:01 +0100625 if s:tex_fast =~# 'c'
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100626 syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100627 endif
628 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000629endif
630
Bram Moolenaarb0d45e72017-11-05 18:19:24 +0100631" %begin-include ... %end-include acts like a texDocZone for \include'd files. Permits spell checking, for example, in such files.
632if !s:tex_nospell
633 TexFold syn region texDocZone matchgroup=texSection start='^\s*%begin-include\>' end='^\s*%end-include\>' contains=@texFoldGroup,@texDocGroup,@Spell
634else
635 TexFold syn region texDocZone matchgroup=texSection start='^\s*%begin-include\>' end='^\s*%end-include\>' contains=@texFoldGroup,@texDocGroup
636endif
637
Bram Moolenaar071d4272004-06-13 20:20:40 +0000638" Separate lines used for verb` and verb# so that the end conditions {{{1
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200639" will appropriately terminate.
640" If g:tex_verbspell exists, then verbatim texZones will permit spellchecking there.
Bram Moolenaarf3913272016-02-25 00:00:01 +0100641if s:tex_fast =~# 'v'
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100642 if exists("g:tex_verbspell") && g:tex_verbspell
643 syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>" contains=@Spell
Bram Moolenaarb0d45e72017-11-05 18:19:24 +0100644 " listings package:
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200645 if b:tex_stylish
646 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>" contains=@Spell
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200647 else
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200648 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>" contains=@Spell
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200649 endif
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100650 else
651 syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>"
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200652 if b:tex_stylish
653 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>"
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200654 else
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200655 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>"
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200656 endif
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100657 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000658endif
659
660" Tex Reference Zones: {{{1
Bram Moolenaarf3913272016-02-25 00:00:01 +0100661if s:tex_fast =~# 'r'
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100662 syn region texZone matchgroup=texStatement start="@samp{" end="}\|%stopzone\>" contains=@texRefGroup
663 syn region texRefZone matchgroup=texStatement start="\\nocite{" end="}\|%stopzone\>" contains=@texRefGroup
664 syn region texRefZone matchgroup=texStatement start="\\bibliography{" end="}\|%stopzone\>" contains=@texRefGroup
665 syn region texRefZone matchgroup=texStatement start="\\label{" end="}\|%stopzone\>" contains=@texRefGroup
666 syn region texRefZone matchgroup=texStatement start="\\\(page\|eq\)ref{" end="}\|%stopzone\>" contains=@texRefGroup
667 syn region texRefZone matchgroup=texStatement start="\\v\=ref{" end="}\|%stopzone\>" contains=@texRefGroup
Bram Moolenaarce001a32022-04-27 15:25:03 +0100668 syn region texRefOption contained matchgroup=texDelimiter start='\[' end=']' contains=@texRefGroup,texRefZone nextgroup=texRefOption,texCite
669 syn region texCite contained matchgroup=texDelimiter start='{' end='}' contains=@texRefGroup,texRefZone,texCite
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100670endif
Bram Moolenaar1d9215b2020-01-25 13:27:42 +0100671syn match texRefZone '\\cite\%([tp]\*\=\)\=\>' nextgroup=texRefOption,texCite
Bram Moolenaar071d4272004-06-13 20:20:40 +0000672
Bram Moolenaarce001a32022-04-27 15:25:03 +0100673" Handle (re)newcommand, (re)newenvironment : {{{1
674syn match texNewCmd "\\\%(re\)\=newcommand\>" nextgroup=texCmdName skipwhite skipnl
Bram Moolenaarf3913272016-02-25 00:00:01 +0100675if s:tex_fast =~# 'V'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100676 syn region texCmdName contained matchgroup=texDelimiter start="{"rs=s+1 end="}" nextgroup=texCmdArgs,texCmdBody skipwhite skipnl
677 syn region texCmdArgs contained matchgroup=texDelimiter start="\["rs=s+1 end="]" nextgroup=texCmdBody skipwhite skipnl
678 syn region texCmdBody contained matchgroup=texDelimiter start="{"rs=s+1 skip="\\\\\|\\[{}]" matchgroup=texDelimiter end="}" contains=@texCmdGroup
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100679endif
Bram Moolenaarce001a32022-04-27 15:25:03 +0100680syn match texNewEnv "\\\%(re\)\=newenvironment\>" nextgroup=texEnvName skipwhite skipnl
Bram Moolenaarf3913272016-02-25 00:00:01 +0100681if s:tex_fast =~# 'V'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100682 syn region texEnvName contained matchgroup=texDelimiter start="{"rs=s+1 end="}" nextgroup=texEnvBgn skipwhite skipnl
683 syn region texEnvBgn contained matchgroup=texDelimiter start="{"rs=s+1 end="}" nextgroup=texEnvEnd skipwhite skipnl contains=@texEnvGroup
684 syn region texEnvEnd contained matchgroup=texDelimiter start="{"rs=s+1 end="}" skipwhite skipnl contains=@texEnvGroup
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100685endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000686
687" Definitions/Commands: {{{1
688syn match texDefCmd "\\def\>" nextgroup=texDefName skipwhite skipnl
689if b:tex_stylish
690 syn match texDefName contained "\\[a-zA-Z@]\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl
691 syn match texDefName contained "\\[^a-zA-Z@]" nextgroup=texDefParms,texCmdBody skipwhite skipnl
692else
693 syn match texDefName contained "\\\a\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl
694 syn match texDefName contained "\\\A" nextgroup=texDefParms,texCmdBody skipwhite skipnl
695endif
696syn match texDefParms contained "#[^{]*" contains=texDefParm nextgroup=texCmdBody skipwhite skipnl
697syn match texDefParm contained "#\d\+"
698
699" TeX Lengths: {{{1
Bram Moolenaar9964e462007-05-05 17:54:07 +0000700syn 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 +0000701
702" TeX String Delimiters: {{{1
703syn match texString "\(``\|''\|,,\)"
704
Bram Moolenaar5c736222010-01-06 20:54:52 +0100705" makeatletter -- makeatother sections
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100706if !s:tex_no_error
Bram Moolenaarf3913272016-02-25 00:00:01 +0100707 if s:tex_fast =~# 'S'
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100708 syn region texStyle matchgroup=texStatement start='\\makeatletter' end='\\makeatother' contains=@texStyleGroup contained
709 endif
Bram Moolenaar5c736222010-01-06 20:54:52 +0100710 syn match texStyleStatement "\\[a-zA-Z@]\+" contained
Bram Moolenaarf3913272016-02-25 00:00:01 +0100711 if s:tex_fast =~# 'S'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100712 syn region texStyleMatcher matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texStyleGroup,texError contained
713 syn region texStyleMatcher matchgroup=texDelimiter start="\[" end="]" contains=@texStyleGroup,texError contained
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100714 endif
Bram Moolenaar5c736222010-01-06 20:54:52 +0100715endif
716
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200717" Conceal mode support (supports set cole=2) {{{1
Bram Moolenaarb2c03502010-07-02 20:20:09 +0200718if has("conceal") && &enc == 'utf-8'
Bram Moolenaar611df5b2010-07-26 22:51:56 +0200719
720 " Math Symbols {{{2
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200721 " (many of these symbols were contributed by Björn Winckler)
Bram Moolenaarf3913272016-02-25 00:00:01 +0100722 if s:tex_conceal =~# 'm'
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200723 let s:texMathList=[
Bram Moolenaaradc21822011-04-01 18:03:16 +0200724 \ ['|' , '‖'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200725 \ ['aleph' , 'ℵ'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100726 \ ['amalg' , '∐'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200727 \ ['angle' , '∠'],
728 \ ['approx' , '≈'],
729 \ ['ast' , '∗'],
730 \ ['asymp' , '≍'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200731 \ ['backslash' , '∖'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200732 \ ['bigcap' , '∩'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100733 \ ['bigcirc' , '○'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200734 \ ['bigcup' , '∪'],
735 \ ['bigodot' , '⊙'],
736 \ ['bigoplus' , '⊕'],
737 \ ['bigotimes' , '⊗'],
738 \ ['bigsqcup' , '⊔'],
739 \ ['bigtriangledown', '∇'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100740 \ ['bigtriangleup' , '∆'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200741 \ ['bigvee' , '⋁'],
742 \ ['bigwedge' , '⋀'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200743 \ ['bot' , '⊥'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100744 \ ['bowtie' , '⋈'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100745 \ ['bullet' , '•'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200746 \ ['cap' , '∩'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200747 \ ['cdot' , '·'],
748 \ ['cdots' , '⋯'],
749 \ ['circ' , '∘'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200750 \ ['clubsuit' , '♣'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200751 \ ['cong' , '≅'],
752 \ ['coprod' , '∐'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200753 \ ['copyright' , '©'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200754 \ ['cup' , '∪'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100755 \ ['dagger' , '†'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200756 \ ['dashv' , '⊣'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100757 \ ['ddagger' , '‡'],
758 \ ['ddots' , '⋱'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200759 \ ['diamond' , '⋄'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200760 \ ['diamondsuit' , '♢'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200761 \ ['div' , '÷'],
762 \ ['doteq' , '≐'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100763 \ ['dots' , '…'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200764 \ ['downarrow' , '↓'],
765 \ ['Downarrow' , '⇓'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100766 \ ['ell' , 'ℓ'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200767 \ ['emptyset' , '∅'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200768 \ ['equiv' , '≡'],
769 \ ['exists' , '∃'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200770 \ ['flat' , '♭'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200771 \ ['forall' , '∀'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100772 \ ['frown' , '⁔'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200773 \ ['ge' , '≥'],
774 \ ['geq' , '≥'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200775 \ ['gets' , '←'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100776 \ ['gg' , '⟫'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200777 \ ['hbar' , 'ℏ'],
778 \ ['heartsuit' , '♡'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200779 \ ['hookleftarrow' , '↩'],
780 \ ['hookrightarrow' , '↪'],
Bram Moolenaar690afe12017-01-28 18:34:47 +0100781 \ ['iff' , '⇔'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200782 \ ['Im' , 'ℑ'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200783 \ ['imath' , 'ɩ'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200784 \ ['in' , '∈'],
785 \ ['infty' , '∞'],
786 \ ['int' , '∫'],
Bram Moolenaar690afe12017-01-28 18:34:47 +0100787 \ ['jmath' , '𝚥'],
788 \ ['land' , '∧'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200789 \ ['lceil' , '⌈'],
790 \ ['ldots' , '…'],
791 \ ['le' , '≤'],
Bram Moolenaar65e0d772020-06-14 17:29:55 +0200792 \ ['left|' , '|'],
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200793 \ ['left\\|' , '‖'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200794 \ ['left(' , '('],
795 \ ['left\[' , '['],
796 \ ['left\\{' , '{'],
Bram Moolenaare2719092015-01-10 15:09:25 +0100797 \ ['leftarrow' , '←'],
798 \ ['Leftarrow' , '⇐'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100799 \ ['leftharpoondown', '↽'],
800 \ ['leftharpoonup' , '↼'],
Bram Moolenaar97d62492012-11-15 21:28:22 +0100801 \ ['leftrightarrow' , '↔'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100802 \ ['Leftrightarrow' , '⇔'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200803 \ ['leq' , '≤'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100804 \ ['leq' , '≤'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200805 \ ['lfloor' , '⌊'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100806 \ ['ll' , '≪'],
Bram Moolenaaradc21822011-04-01 18:03:16 +0200807 \ ['lmoustache' , '╭'],
Bram Moolenaar690afe12017-01-28 18:34:47 +0100808 \ ['lor' , '∨'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200809 \ ['mapsto' , '↦'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200810 \ ['mid' , '∣'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100811 \ ['models' , '╞'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200812 \ ['mp' , '∓'],
813 \ ['nabla' , '∇'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200814 \ ['natural' , '♮'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200815 \ ['ne' , '≠'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100816 \ ['nearrow' , '↗'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200817 \ ['neg' , '¬'],
818 \ ['neq' , '≠'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200819 \ ['ni' , '∋'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200820 \ ['notin' , '∉'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200821 \ ['nwarrow' , '↖'],
822 \ ['odot' , '⊙'],
823 \ ['oint' , '∮'],
824 \ ['ominus' , '⊖'],
825 \ ['oplus' , '⊕'],
826 \ ['oslash' , '⊘'],
827 \ ['otimes' , '⊗'],
828 \ ['owns' , '∋'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200829 \ ['P' , '¶'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100830 \ ['parallel' , '║'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200831 \ ['partial' , '∂'],
832 \ ['perp' , '⊥'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200833 \ ['pm' , '±'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200834 \ ['prec' , '≺'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200835 \ ['preceq' , '⪯'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200836 \ ['prime' , '′'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200837 \ ['prod' , '∏'],
838 \ ['propto' , '∝'],
839 \ ['rceil' , '⌉'],
840 \ ['Re' , 'ℜ'],
Bram Moolenaar723dd942019-04-04 13:11:03 +0200841 \ ['quad' , ' '],
842 \ ['qquad' , ' '],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200843 \ ['rfloor' , '⌋'],
Bram Moolenaar65e0d772020-06-14 17:29:55 +0200844 \ ['right|' , '|'],
845 \ ['right\\|' , '‖'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200846 \ ['right)' , ')'],
847 \ ['right]' , ']'],
848 \ ['right\\}' , '}'],
Bram Moolenaare2719092015-01-10 15:09:25 +0100849 \ ['rightarrow' , '→'],
850 \ ['Rightarrow' , '⇒'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100851 \ ['rightleftharpoons', '⇌'],
Bram Moolenaaradc21822011-04-01 18:03:16 +0200852 \ ['rmoustache' , '╮'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200853 \ ['S' , '§'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200854 \ ['searrow' , '↘'],
855 \ ['setminus' , '∖'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200856 \ ['sharp' , '♯'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200857 \ ['sim' , '∼'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100858 \ ['simeq' , '⋍'],
859 \ ['smile' , '‿'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200860 \ ['spadesuit' , '♠'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200861 \ ['sqcap' , '⊓'],
862 \ ['sqcup' , '⊔'],
863 \ ['sqsubset' , '⊏'],
864 \ ['sqsubseteq' , '⊑'],
865 \ ['sqsupset' , '⊐'],
866 \ ['sqsupseteq' , '⊒'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100867 \ ['star' , '✫'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200868 \ ['subset' , '⊂'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200869 \ ['subseteq' , '⊆'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200870 \ ['succ' , '≻'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200871 \ ['succeq' , '⪰'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200872 \ ['sum' , '∑'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100873 \ ['supset' , '⊃'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200874 \ ['supseteq' , '⊇'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200875 \ ['surd' , '√'],
876 \ ['swarrow' , '↙'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200877 \ ['times' , '×'],
878 \ ['to' , '→'],
879 \ ['top' , '⊤'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200880 \ ['triangle' , '∆'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200881 \ ['triangleleft' , '⊲'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200882 \ ['triangleright' , '⊳'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200883 \ ['uparrow' , '↑'],
884 \ ['Uparrow' , '⇑'],
885 \ ['updownarrow' , '↕'],
886 \ ['Updownarrow' , '⇕'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200887 \ ['vdash' , '⊢'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200888 \ ['vdots' , '⋮'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200889 \ ['vee' , '∨'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200890 \ ['wedge' , '∧'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200891 \ ['wp' , '℘'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200892 \ ['wr' , '≀']]
Bram Moolenaar690afe12017-01-28 18:34:47 +0100893 if &ambw == "double" || exists("g:tex_usedblwidth")
894 let s:texMathList= s:texMathList + [
895 \ ['right\\rangle' , '〉'],
896 \ ['left\\langle' , '〈']]
897 else
898 let s:texMathList= s:texMathList + [
899 \ ['right\\rangle' , '>'],
900 \ ['left\\langle' , '<']]
901 endif
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200902 for texmath in s:texMathList
Bram Moolenaarf3913272016-02-25 00:00:01 +0100903 if texmath[0] =~# '\w$'
Bram Moolenaar81af9252010-12-10 20:35:50 +0100904 exe "syn match texMathSymbol '\\\\".texmath[0]."\\>' contained conceal cchar=".texmath[1]
905 else
906 exe "syn match texMathSymbol '\\\\".texmath[0]."' contained conceal cchar=".texmath[1]
907 endif
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200908 endfor
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200909
910 if &ambw == "double"
911 syn match texMathSymbol '\\gg\>' contained conceal cchar=≫
912 syn match texMathSymbol '\\ll\>' contained conceal cchar=≪
913 else
914 syn match texMathSymbol '\\gg\>' contained conceal cchar=⟫
915 syn match texMathSymbol '\\ll\>' contained conceal cchar=⟪
916 endif
Bram Moolenaard960d762011-09-21 19:22:10 +0200917
918 syn match texMathSymbol '\\hat{a}' contained conceal cchar=â
919 syn match texMathSymbol '\\hat{A}' contained conceal cchar=Â
920 syn match texMathSymbol '\\hat{c}' contained conceal cchar=ĉ
921 syn match texMathSymbol '\\hat{C}' contained conceal cchar=Ĉ
922 syn match texMathSymbol '\\hat{e}' contained conceal cchar=ê
923 syn match texMathSymbol '\\hat{E}' contained conceal cchar=Ê
924 syn match texMathSymbol '\\hat{g}' contained conceal cchar=ĝ
925 syn match texMathSymbol '\\hat{G}' contained conceal cchar=Ĝ
926 syn match texMathSymbol '\\hat{i}' contained conceal cchar=î
927 syn match texMathSymbol '\\hat{I}' contained conceal cchar=Î
928 syn match texMathSymbol '\\hat{o}' contained conceal cchar=ô
929 syn match texMathSymbol '\\hat{O}' contained conceal cchar=Ô
930 syn match texMathSymbol '\\hat{s}' contained conceal cchar=ŝ
931 syn match texMathSymbol '\\hat{S}' contained conceal cchar=Ŝ
932 syn match texMathSymbol '\\hat{u}' contained conceal cchar=û
933 syn match texMathSymbol '\\hat{U}' contained conceal cchar=Û
934 syn match texMathSymbol '\\hat{w}' contained conceal cchar=ŵ
935 syn match texMathSymbol '\\hat{W}' contained conceal cchar=Ŵ
936 syn match texMathSymbol '\\hat{y}' contained conceal cchar=ŷ
937 syn match texMathSymbol '\\hat{Y}' contained conceal cchar=Ŷ
Bram Moolenaare2719092015-01-10 15:09:25 +0100938" syn match texMathSymbol '\\bar{a}' contained conceal cchar=a̅
Bram Moolenaar51ad4ea2018-04-06 11:14:11 +0200939
940 syn match texMathSymbol '\\dot{B}' contained conceal cchar=Ḃ
941 syn match texMathSymbol '\\dot{b}' contained conceal cchar=ḃ
942 syn match texMathSymbol '\\dot{D}' contained conceal cchar=Ḋ
943 syn match texMathSymbol '\\dot{d}' contained conceal cchar=ḋ
944 syn match texMathSymbol '\\dot{F}' contained conceal cchar=Ḟ
945 syn match texMathSymbol '\\dot{f}' contained conceal cchar=ḟ
946 syn match texMathSymbol '\\dot{H}' contained conceal cchar=Ḣ
947 syn match texMathSymbol '\\dot{h}' contained conceal cchar=ḣ
948 syn match texMathSymbol '\\dot{M}' contained conceal cchar=Ṁ
949 syn match texMathSymbol '\\dot{m}' contained conceal cchar=ṁ
950 syn match texMathSymbol '\\dot{N}' contained conceal cchar=Ṅ
951 syn match texMathSymbol '\\dot{n}' contained conceal cchar=ṅ
952 syn match texMathSymbol '\\dot{P}' contained conceal cchar=Ṗ
953 syn match texMathSymbol '\\dot{p}' contained conceal cchar=ṗ
954 syn match texMathSymbol '\\dot{R}' contained conceal cchar=Ṙ
955 syn match texMathSymbol '\\dot{r}' contained conceal cchar=ṙ
956 syn match texMathSymbol '\\dot{S}' contained conceal cchar=Ṡ
957 syn match texMathSymbol '\\dot{s}' contained conceal cchar=ṡ
958 syn match texMathSymbol '\\dot{T}' contained conceal cchar=Ṫ
959 syn match texMathSymbol '\\dot{t}' contained conceal cchar=ṫ
960 syn match texMathSymbol '\\dot{W}' contained conceal cchar=Ẇ
961 syn match texMathSymbol '\\dot{w}' contained conceal cchar=ẇ
962 syn match texMathSymbol '\\dot{X}' contained conceal cchar=Ẋ
963 syn match texMathSymbol '\\dot{x}' contained conceal cchar=ẋ
964 syn match texMathSymbol '\\dot{Y}' contained conceal cchar=Ẏ
965 syn match texMathSymbol '\\dot{y}' contained conceal cchar=ẏ
966 syn match texMathSymbol '\\dot{Z}' contained conceal cchar=Ż
967 syn match texMathSymbol '\\dot{z}' contained conceal cchar=ż
968
969 syn match texMathSymbol '\\dot{C}' contained conceal cchar=Ċ
970 syn match texMathSymbol '\\dot{c}' contained conceal cchar=ċ
971 syn match texMathSymbol '\\dot{E}' contained conceal cchar=Ė
972 syn match texMathSymbol '\\dot{e}' contained conceal cchar=ė
973 syn match texMathSymbol '\\dot{G}' contained conceal cchar=Ġ
974 syn match texMathSymbol '\\dot{g}' contained conceal cchar=ġ
975 syn match texMathSymbol '\\dot{I}' contained conceal cchar=İ
976
977 syn match texMathSymbol '\\dot{A}' contained conceal cchar=Ȧ
978 syn match texMathSymbol '\\dot{a}' contained conceal cchar=ȧ
979 syn match texMathSymbol '\\dot{O}' contained conceal cchar=Ȯ
980 syn match texMathSymbol '\\dot{o}' contained conceal cchar=ȯ
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +0200981 endif
Bram Moolenaar611df5b2010-07-26 22:51:56 +0200982
983 " Greek {{{2
Bram Moolenaarf3913272016-02-25 00:00:01 +0100984 if s:tex_conceal =~# 'g'
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +0200985 fun! s:Greek(group,pat,cchar)
986 exe 'syn match '.a:group." '".a:pat."' contained conceal cchar=".a:cchar
987 endfun
988 call s:Greek('texGreek','\\alpha\>' ,'α')
989 call s:Greek('texGreek','\\beta\>' ,'β')
990 call s:Greek('texGreek','\\gamma\>' ,'γ')
991 call s:Greek('texGreek','\\delta\>' ,'δ')
992 call s:Greek('texGreek','\\epsilon\>' ,'ϵ')
993 call s:Greek('texGreek','\\varepsilon\>' ,'ε')
994 call s:Greek('texGreek','\\zeta\>' ,'ζ')
995 call s:Greek('texGreek','\\eta\>' ,'η')
996 call s:Greek('texGreek','\\theta\>' ,'θ')
Bram Moolenaare2719092015-01-10 15:09:25 +0100997 call s:Greek('texGreek','\\vartheta\>' ,'ϑ')
Bram Moolenaar6c1e1572019-06-22 02:13:00 +0200998 call s:Greek('texGreek','\\iota\>' ,'ι')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +0200999 call s:Greek('texGreek','\\kappa\>' ,'κ')
1000 call s:Greek('texGreek','\\lambda\>' ,'λ')
1001 call s:Greek('texGreek','\\mu\>' ,'μ')
1002 call s:Greek('texGreek','\\nu\>' ,'ν')
1003 call s:Greek('texGreek','\\xi\>' ,'ξ')
1004 call s:Greek('texGreek','\\pi\>' ,'π')
1005 call s:Greek('texGreek','\\varpi\>' ,'ϖ')
1006 call s:Greek('texGreek','\\rho\>' ,'ρ')
1007 call s:Greek('texGreek','\\varrho\>' ,'ϱ')
1008 call s:Greek('texGreek','\\sigma\>' ,'σ')
Bram Moolenaare2719092015-01-10 15:09:25 +01001009 call s:Greek('texGreek','\\varsigma\>' ,'ς')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001010 call s:Greek('texGreek','\\tau\>' ,'τ')
1011 call s:Greek('texGreek','\\upsilon\>' ,'υ')
Bram Moolenaare2719092015-01-10 15:09:25 +01001012 call s:Greek('texGreek','\\phi\>' ,'ϕ')
1013 call s:Greek('texGreek','\\varphi\>' ,'φ')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001014 call s:Greek('texGreek','\\chi\>' ,'χ')
1015 call s:Greek('texGreek','\\psi\>' ,'ψ')
1016 call s:Greek('texGreek','\\omega\>' ,'ω')
1017 call s:Greek('texGreek','\\Gamma\>' ,'Γ')
1018 call s:Greek('texGreek','\\Delta\>' ,'Δ')
1019 call s:Greek('texGreek','\\Theta\>' ,'Θ')
1020 call s:Greek('texGreek','\\Lambda\>' ,'Λ')
Bram Moolenaar6c1e1572019-06-22 02:13:00 +02001021 call s:Greek('texGreek','\\Xi\>' ,'Ξ')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001022 call s:Greek('texGreek','\\Pi\>' ,'Π')
1023 call s:Greek('texGreek','\\Sigma\>' ,'Σ')
1024 call s:Greek('texGreek','\\Upsilon\>' ,'Υ')
1025 call s:Greek('texGreek','\\Phi\>' ,'Φ')
Bram Moolenaar6c1e1572019-06-22 02:13:00 +02001026 call s:Greek('texGreek','\\Chi\>' ,'Χ')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001027 call s:Greek('texGreek','\\Psi\>' ,'Ψ')
1028 call s:Greek('texGreek','\\Omega\>' ,'Ω')
1029 delfun s:Greek
1030 endif
Bram Moolenaar611df5b2010-07-26 22:51:56 +02001031
1032 " Superscripts/Subscripts {{{2
Bram Moolenaarf3913272016-02-25 00:00:01 +01001033 if s:tex_conceal =~# 's'
1034 if s:tex_fast =~# 's'
Bram Moolenaarce001a32022-04-27 15:25:03 +01001035 syn region texSuperscript matchgroup=texDelimiter start='\^{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSuperscripts,texStatement,texSubscript,texSuperscript,texMathMatcher
1036 syn region texSubscript matchgroup=texDelimiter start='_{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSubscripts,texStatement,texSubscript,texSuperscript,texMathMatcher
Bram Moolenaarac7bd632013-03-19 11:35:58 +01001037 endif
Bram Moolenaar541f92d2015-06-19 13:27:23 +02001038 " s:SuperSub:
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001039 fun! s:SuperSub(group,leader,pat,cchar)
Bram Moolenaar03413f42016-04-12 21:07:15 +02001040 if a:pat =~# '^\\' || (a:leader == '\^' && a:pat =~# s:tex_superscripts) || (a:leader == '_' && a:pat =~# s:tex_subscripts)
Bram Moolenaar6e932462014-09-09 18:48:09 +02001041" call Decho("SuperSub: group<".a:group."> leader<".a:leader."> pat<".a:pat."> cchar<".a:cchar.">")
1042 exe 'syn match '.a:group." '".a:leader.a:pat."' contained conceal cchar=".a:cchar
Bram Moolenaar541f92d2015-06-19 13:27:23 +02001043 exe 'syn match '.a:group."s '".a:pat ."' contained conceal cchar=".a:cchar.' nextgroup='.a:group.'s'
Bram Moolenaar6e932462014-09-09 18:48:09 +02001044 endif
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001045 endfun
1046 call s:SuperSub('texSuperscript','\^','0','⁰')
1047 call s:SuperSub('texSuperscript','\^','1','¹')
1048 call s:SuperSub('texSuperscript','\^','2','²')
1049 call s:SuperSub('texSuperscript','\^','3','³')
1050 call s:SuperSub('texSuperscript','\^','4','⁴')
1051 call s:SuperSub('texSuperscript','\^','5','⁵')
1052 call s:SuperSub('texSuperscript','\^','6','⁶')
1053 call s:SuperSub('texSuperscript','\^','7','⁷')
1054 call s:SuperSub('texSuperscript','\^','8','⁸')
1055 call s:SuperSub('texSuperscript','\^','9','⁹')
1056 call s:SuperSub('texSuperscript','\^','a','ᵃ')
1057 call s:SuperSub('texSuperscript','\^','b','ᵇ')
1058 call s:SuperSub('texSuperscript','\^','c','ᶜ')
1059 call s:SuperSub('texSuperscript','\^','d','ᵈ')
1060 call s:SuperSub('texSuperscript','\^','e','ᵉ')
1061 call s:SuperSub('texSuperscript','\^','f','ᶠ')
1062 call s:SuperSub('texSuperscript','\^','g','ᵍ')
1063 call s:SuperSub('texSuperscript','\^','h','ʰ')
1064 call s:SuperSub('texSuperscript','\^','i','ⁱ')
1065 call s:SuperSub('texSuperscript','\^','j','ʲ')
1066 call s:SuperSub('texSuperscript','\^','k','ᵏ')
1067 call s:SuperSub('texSuperscript','\^','l','ˡ')
1068 call s:SuperSub('texSuperscript','\^','m','ᵐ')
1069 call s:SuperSub('texSuperscript','\^','n','ⁿ')
1070 call s:SuperSub('texSuperscript','\^','o','ᵒ')
1071 call s:SuperSub('texSuperscript','\^','p','ᵖ')
1072 call s:SuperSub('texSuperscript','\^','r','ʳ')
1073 call s:SuperSub('texSuperscript','\^','s','ˢ')
1074 call s:SuperSub('texSuperscript','\^','t','ᵗ')
1075 call s:SuperSub('texSuperscript','\^','u','ᵘ')
1076 call s:SuperSub('texSuperscript','\^','v','ᵛ')
1077 call s:SuperSub('texSuperscript','\^','w','ʷ')
1078 call s:SuperSub('texSuperscript','\^','x','ˣ')
1079 call s:SuperSub('texSuperscript','\^','y','ʸ')
1080 call s:SuperSub('texSuperscript','\^','z','ᶻ')
1081 call s:SuperSub('texSuperscript','\^','A','ᴬ')
1082 call s:SuperSub('texSuperscript','\^','B','ᴮ')
1083 call s:SuperSub('texSuperscript','\^','D','ᴰ')
1084 call s:SuperSub('texSuperscript','\^','E','ᴱ')
1085 call s:SuperSub('texSuperscript','\^','G','ᴳ')
1086 call s:SuperSub('texSuperscript','\^','H','ᴴ')
1087 call s:SuperSub('texSuperscript','\^','I','ᴵ')
1088 call s:SuperSub('texSuperscript','\^','J','ᴶ')
1089 call s:SuperSub('texSuperscript','\^','K','ᴷ')
1090 call s:SuperSub('texSuperscript','\^','L','ᴸ')
1091 call s:SuperSub('texSuperscript','\^','M','ᴹ')
1092 call s:SuperSub('texSuperscript','\^','N','ᴺ')
1093 call s:SuperSub('texSuperscript','\^','O','ᴼ')
1094 call s:SuperSub('texSuperscript','\^','P','ᴾ')
1095 call s:SuperSub('texSuperscript','\^','R','ᴿ')
1096 call s:SuperSub('texSuperscript','\^','T','ᵀ')
1097 call s:SuperSub('texSuperscript','\^','U','ᵁ')
Bram Moolenaar388a5d42020-05-26 21:20:45 +02001098 call s:SuperSub('texSuperscript','\^','V','ⱽ')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001099 call s:SuperSub('texSuperscript','\^','W','ᵂ')
Bram Moolenaar6be7f872012-01-20 21:08:56 +01001100 call s:SuperSub('texSuperscript','\^',',','︐')
1101 call s:SuperSub('texSuperscript','\^',':','︓')
1102 call s:SuperSub('texSuperscript','\^',';','︔')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001103 call s:SuperSub('texSuperscript','\^','+','⁺')
1104 call s:SuperSub('texSuperscript','\^','-','⁻')
1105 call s:SuperSub('texSuperscript','\^','<','˂')
1106 call s:SuperSub('texSuperscript','\^','>','˃')
1107 call s:SuperSub('texSuperscript','\^','/','ˊ')
1108 call s:SuperSub('texSuperscript','\^','(','⁽')
1109 call s:SuperSub('texSuperscript','\^',')','⁾')
1110 call s:SuperSub('texSuperscript','\^','\.','˙')
1111 call s:SuperSub('texSuperscript','\^','=','˭')
1112 call s:SuperSub('texSubscript','_','0','₀')
1113 call s:SuperSub('texSubscript','_','1','₁')
1114 call s:SuperSub('texSubscript','_','2','₂')
1115 call s:SuperSub('texSubscript','_','3','₃')
1116 call s:SuperSub('texSubscript','_','4','₄')
1117 call s:SuperSub('texSubscript','_','5','₅')
1118 call s:SuperSub('texSubscript','_','6','₆')
1119 call s:SuperSub('texSubscript','_','7','₇')
1120 call s:SuperSub('texSubscript','_','8','₈')
1121 call s:SuperSub('texSubscript','_','9','₉')
1122 call s:SuperSub('texSubscript','_','a','ₐ')
1123 call s:SuperSub('texSubscript','_','e','ₑ')
Bram Moolenaar802a0d92016-06-26 16:17:58 +02001124 call s:SuperSub('texSubscript','_','h','ₕ')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001125 call s:SuperSub('texSubscript','_','i','ᵢ')
Bram Moolenaar802a0d92016-06-26 16:17:58 +02001126 call s:SuperSub('texSubscript','_','j','ⱼ')
1127 call s:SuperSub('texSubscript','_','k','ₖ')
1128 call s:SuperSub('texSubscript','_','l','ₗ')
1129 call s:SuperSub('texSubscript','_','m','ₘ')
1130 call s:SuperSub('texSubscript','_','n','ₙ')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001131 call s:SuperSub('texSubscript','_','o','ₒ')
Bram Moolenaar802a0d92016-06-26 16:17:58 +02001132 call s:SuperSub('texSubscript','_','p','ₚ')
1133 call s:SuperSub('texSubscript','_','r','ᵣ')
1134 call s:SuperSub('texSubscript','_','s','ₛ')
1135 call s:SuperSub('texSubscript','_','t','ₜ')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001136 call s:SuperSub('texSubscript','_','u','ᵤ')
Bram Moolenaar802a0d92016-06-26 16:17:58 +02001137 call s:SuperSub('texSubscript','_','v','ᵥ')
1138 call s:SuperSub('texSubscript','_','x','ₓ')
Bram Moolenaar6be7f872012-01-20 21:08:56 +01001139 call s:SuperSub('texSubscript','_',',','︐')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001140 call s:SuperSub('texSubscript','_','+','₊')
1141 call s:SuperSub('texSubscript','_','-','₋')
1142 call s:SuperSub('texSubscript','_','/','ˏ')
1143 call s:SuperSub('texSubscript','_','(','₍')
1144 call s:SuperSub('texSubscript','_',')','₎')
1145 call s:SuperSub('texSubscript','_','\.','‸')
1146 call s:SuperSub('texSubscript','_','r','ᵣ')
1147 call s:SuperSub('texSubscript','_','v','ᵥ')
1148 call s:SuperSub('texSubscript','_','x','ₓ')
1149 call s:SuperSub('texSubscript','_','\\beta\>' ,'ᵦ')
1150 call s:SuperSub('texSubscript','_','\\delta\>','ᵨ')
1151 call s:SuperSub('texSubscript','_','\\phi\>' ,'ᵩ')
1152 call s:SuperSub('texSubscript','_','\\gamma\>','ᵧ')
1153 call s:SuperSub('texSubscript','_','\\chi\>' ,'ᵪ')
Bram Moolenaar802a0d92016-06-26 16:17:58 +02001154
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001155 delfun s:SuperSub
1156 endif
Bram Moolenaar611df5b2010-07-26 22:51:56 +02001157
Bram Moolenaarb0d45e72017-11-05 18:19:24 +01001158 " Accented characters and Ligatures: {{{2
Bram Moolenaarf3913272016-02-25 00:00:01 +01001159 if s:tex_conceal =~# 'a'
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001160 if b:tex_stylish
1161 syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1
Bram Moolenaarb0d45e72017-11-05 18:19:24 +01001162 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1
1163 syn match texLigature '--'
1164 syn match texLigature '---'
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001165 else
1166 fun! s:Accents(chr,...)
1167 let i= 1
Bram Moolenaara6878372014-03-22 21:02:50 +01001168 for accent in ["`","\\'","^",'"','\~','\.','=',"c","H","k","r","u","v"]
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001169 if i > a:0
1170 break
1171 endif
Bram Moolenaar7fc0c062010-08-10 21:43:35 +02001172 if strlen(a:{i}) == 0 || a:{i} == ' ' || a:{i} == '?'
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001173 let i= i + 1
1174 continue
1175 endif
Bram Moolenaarf3913272016-02-25 00:00:01 +01001176 if accent =~# '\a'
Bram Moolenaar7fc0c062010-08-10 21:43:35 +02001177 exe "syn match texAccent '".'\\'.accent.'\(\s*{'.a:chr.'}\|\s\+'.a:chr.'\)'."' conceal cchar=".a:{i}
1178 else
1179 exe "syn match texAccent '".'\\'.accent.'\s*\({'.a:chr.'}\|'.a:chr.'\)'."' conceal cchar=".a:{i}
1180 endif
Bram Moolenaare0021c72010-07-28 17:25:21 +02001181 let i= i + 1
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001182 endfor
1183 endfun
Bram Moolenaar6e932462014-09-09 18:48:09 +02001184 " \` \' \^ \" \~ \. \= \c \H \k \r \u \v
1185 call s:Accents('a','à','á','â','ä','ã','ȧ','ā',' ',' ','ą','å','ă','ǎ')
1186 call s:Accents('A','À','Á','Â','Ä','Ã','Ȧ','Ā',' ',' ','Ą','Å','Ă','Ǎ')
1187 call s:Accents('c',' ','ć','ĉ',' ',' ','ċ',' ','ç',' ',' ',' ',' ','č')
1188 call s:Accents('C',' ','Ć','Ĉ',' ',' ','Ċ',' ','Ç',' ',' ',' ',' ','Č')
1189 call s:Accents('d',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ď')
1190 call s:Accents('D',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Ď')
1191 call s:Accents('e','è','é','ê','ë','ẽ','ė','ē','ȩ',' ','ę',' ','ĕ','ě')
1192 call s:Accents('E','È','É','Ê','Ë','Ẽ','Ė','Ē','Ȩ',' ','Ę',' ','Ĕ','Ě')
1193 call s:Accents('g',' ','ǵ','ĝ',' ',' ','ġ',' ','ģ',' ',' ',' ','ğ','ǧ')
1194 call s:Accents('G',' ','Ǵ','Ĝ',' ',' ','Ġ',' ','Ģ',' ',' ',' ','Ğ','Ǧ')
1195 call s:Accents('h',' ',' ','ĥ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ȟ')
1196 call s:Accents('H',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Ȟ')
1197 call s:Accents('i','ì','í','î','ï','ĩ','į','ī',' ',' ','į',' ','ĭ','ǐ')
1198 call s:Accents('I','Ì','Í','Î','Ï','Ĩ','İ','Ī',' ',' ','Į',' ','Ĭ','Ǐ')
1199 call s:Accents('J',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ǰ')
1200 call s:Accents('k',' ',' ',' ',' ',' ',' ',' ','ķ',' ',' ',' ',' ','ǩ')
1201 call s:Accents('K',' ',' ',' ',' ',' ',' ',' ','Ķ',' ',' ',' ',' ','Ǩ')
1202 call s:Accents('l',' ','ĺ','ľ',' ',' ',' ',' ','ļ',' ',' ',' ',' ','ľ')
1203 call s:Accents('L',' ','Ĺ','Ľ',' ',' ',' ',' ','Ļ',' ',' ',' ',' ','Ľ')
1204 call s:Accents('n',' ','ń',' ',' ','ñ',' ',' ','ņ',' ',' ',' ',' ','ň')
1205 call s:Accents('N',' ','Ń',' ',' ','Ñ',' ',' ','Ņ',' ',' ',' ',' ','Ň')
1206 call s:Accents('o','ò','ó','ô','ö','õ','ȯ','ō',' ','ő','ǫ',' ','ŏ','ǒ')
1207 call s:Accents('O','Ò','Ó','Ô','Ö','Õ','Ȯ','Ō',' ','Ő','Ǫ',' ','Ŏ','Ǒ')
1208 call s:Accents('r',' ','ŕ',' ',' ',' ',' ',' ','ŗ',' ',' ',' ',' ','ř')
1209 call s:Accents('R',' ','Ŕ',' ',' ',' ',' ',' ','Ŗ',' ',' ',' ',' ','Ř')
1210 call s:Accents('s',' ','ś','ŝ',' ',' ',' ',' ','ş',' ','ȿ',' ',' ','š')
1211 call s:Accents('S',' ','Ś','Ŝ',' ',' ',' ',' ','Ş',' ',' ',' ',' ','Š')
1212 call s:Accents('t',' ',' ',' ',' ',' ',' ',' ','ţ',' ',' ',' ',' ','ť')
1213 call s:Accents('T',' ',' ',' ',' ',' ',' ',' ','Ţ',' ',' ',' ',' ','Ť')
1214 call s:Accents('u','ù','ú','û','ü','ũ',' ','ū',' ','ű','ų','ů','ŭ','ǔ')
1215 call s:Accents('U','Ù','Ú','Û','Ü','Ũ',' ','Ū',' ','Ű','Ų','Ů','Ŭ','Ǔ')
1216 call s:Accents('w',' ',' ','ŵ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ')
1217 call s:Accents('W',' ',' ','Ŵ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ')
1218 call s:Accents('y','ỳ','ý','ŷ','ÿ','ỹ',' ',' ',' ',' ',' ',' ',' ',' ')
1219 call s:Accents('Y','Ỳ','Ý','Ŷ','Ÿ','Ỹ',' ',' ',' ',' ',' ',' ',' ',' ')
1220 call s:Accents('z',' ','ź',' ',' ',' ','ż',' ',' ',' ',' ',' ',' ','ž')
1221 call s:Accents('Z',' ','Ź',' ',' ',' ','Ż',' ',' ',' ',' ',' ',' ','Ž')
Bram Moolenaara6878372014-03-22 21:02:50 +01001222 call s:Accents('\\i','ì','í','î','ï','ĩ','į',' ',' ',' ',' ',' ','ĭ',' ')
1223 " \` \' \^ \" \~ \. \= \c \H \k \r \u \v
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001224 delfun s:Accents
Bram Moolenaarb0d45e72017-11-05 18:19:24 +01001225 syn match texAccent '\\aa\>' conceal cchar=å
1226 syn match texAccent '\\AA\>' conceal cchar=Å
1227 syn match texAccent '\\o\>' conceal cchar=ø
1228 syn match texAccent '\\O\>' conceal cchar=Ø
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001229 syn match texLigature '\\AE\>' conceal cchar=Æ
1230 syn match texLigature '\\ae\>' conceal cchar=æ
1231 syn match texLigature '\\oe\>' conceal cchar=œ
1232 syn match texLigature '\\OE\>' conceal cchar=Œ
1233 syn match texLigature '\\ss\>' conceal cchar=ß
Bram Moolenaarb0d45e72017-11-05 18:19:24 +01001234 syn match texLigature '--' conceal cchar=–
1235 syn match texLigature '---' conceal cchar=—
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001236 endif
Bram Moolenaar611df5b2010-07-26 22:51:56 +02001237 endif
Bram Moolenaarb2c03502010-07-02 20:20:09 +02001238endif
1239
1240" ---------------------------------------------------------------------
Bram Moolenaar071d4272004-06-13 20:20:40 +00001241" LaTeX synchronization: {{{1
1242syn sync maxlines=200
1243syn sync minlines=50
1244
1245syn sync match texSyncStop groupthere NONE "%stopzone\>"
1246
1247" Synchronization: {{{1
1248" The $..$ and $$..$$ make for impossible sync patterns
1249" (one can't tell if a "$$" starts or stops a math zone by itself)
1250" The following grouptheres coupled with minlines above
1251" help improve the odds of good syncing.
Bram Moolenaare2719092015-01-10 15:09:25 +01001252if !exists("g:tex_no_math")
Bram Moolenaar071d4272004-06-13 20:20:40 +00001253 syn sync match texSyncMathZoneA groupthere NONE "\\end{abstract}"
1254 syn sync match texSyncMathZoneA groupthere NONE "\\end{center}"
1255 syn sync match texSyncMathZoneA groupthere NONE "\\end{description}"
1256 syn sync match texSyncMathZoneA groupthere NONE "\\end{enumerate}"
1257 syn sync match texSyncMathZoneA groupthere NONE "\\end{itemize}"
1258 syn sync match texSyncMathZoneA groupthere NONE "\\end{table}"
1259 syn sync match texSyncMathZoneA groupthere NONE "\\end{tabular}"
1260 syn sync match texSyncMathZoneA groupthere NONE "\\\(sub\)*section\>"
1261endif
1262
Bram Moolenaarb2c03502010-07-02 20:20:09 +02001263" ---------------------------------------------------------------------
Bram Moolenaar071d4272004-06-13 20:20:40 +00001264" Highlighting: {{{1
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001265
1266" Define the default highlighting. {{{1
1267if !exists("skip_tex_syntax_inits")
1268
Bram Moolenaar071d4272004-06-13 20:20:40 +00001269 " TeX highlighting groups which should share similar highlighting
Bram Moolenaar6e932462014-09-09 18:48:09 +02001270 if !exists("g:tex_no_error")
Bram Moolenaar543b7ef2013-06-01 14:50:56 +02001271 if !exists("g:tex_no_math")
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001272 hi def link texBadMath texError
Bram Moolenaarce001a32022-04-27 15:25:03 +01001273 hi def link texBadPar texBadMath
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001274 hi def link texMathDelimBad texError
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001275 hi def link texMathError texError
Bram Moolenaar071d4272004-06-13 20:20:40 +00001276 if !b:tex_stylish
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001277 hi def link texOnlyMath texError
Bram Moolenaar071d4272004-06-13 20:20:40 +00001278 endif
1279 endif
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001280 hi def link texError Error
Bram Moolenaar071d4272004-06-13 20:20:40 +00001281 endif
1282
Bram Moolenaard38b0552012-04-25 19:07:41 +02001283 hi texBoldStyle gui=bold cterm=bold
1284 hi texItalStyle gui=italic cterm=italic
1285 hi texBoldItalStyle gui=bold,italic cterm=bold,italic
1286 hi texItalBoldStyle gui=bold,italic cterm=bold,italic
Bram Moolenaar723dd942019-04-04 13:11:03 +02001287 hi def link texEmphStyle texItalStyle
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001288 hi def link texCite texRefZone
1289 hi def link texDefCmd texDef
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001290 hi def link texDefName texDef
1291 hi def link texDocType texCmdName
1292 hi def link texDocTypeArgs texCmdArgs
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001293 hi def link texInputFileOpt texCmdArgs
1294 hi def link texInputCurlies texDelimiter
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001295 hi def link texLigature texSpecialChar
Bram Moolenaare2719092015-01-10 15:09:25 +01001296 if !exists("g:tex_no_math")
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001297 hi def link texMathDelimSet1 texMathDelim
1298 hi def link texMathDelimSet2 texMathDelim
1299 hi def link texMathDelimKey texMathDelim
1300 hi def link texMathMatcher texMath
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001301 hi def link texAccent texStatement
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001302 hi def link texGreek texStatement
1303 hi def link texSuperscript texStatement
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001304 hi def link texSubscript texStatement
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001305 hi def link texSuperscripts texSuperscript
1306 hi def link texSubscripts texSubscript
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001307 hi def link texMathSymbol texStatement
1308 hi def link texMathZoneV texMath
1309 hi def link texMathZoneW texMath
1310 hi def link texMathZoneX texMath
1311 hi def link texMathZoneY texMath
1312 hi def link texMathZoneV texMath
1313 hi def link texMathZoneZ texMath
Bram Moolenaar071d4272004-06-13 20:20:40 +00001314 endif
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001315 hi def link texBeginEnd texCmdName
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001316 hi def link texBeginEndName texSection
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001317 hi def link texSpaceCode texStatement
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001318 hi def link texStyleStatement texStatement
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001319 hi def link texTypeSize texType
1320 hi def link texTypeStyle texType
Bram Moolenaar071d4272004-06-13 20:20:40 +00001321
1322 " Basic TeX highlighting groups
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001323 hi def link texCmdArgs Number
1324 hi def link texCmdName Statement
1325 hi def link texComment Comment
1326 hi def link texDef Statement
1327 hi def link texDefParm Special
1328 hi def link texDelimiter Delimiter
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001329 hi def link texInput Special
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001330 hi def link texInputFile Special
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001331 hi def link texLength Number
1332 hi def link texMath Special
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001333 hi def link texMathDelim Statement
1334 hi def link texMathOper Operator
amarakon8e6b5032024-11-09 18:59:31 +01001335 hi def link texMathNumber Number
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001336 hi def link texNewCmd Statement
1337 hi def link texNewEnv Statement
1338 hi def link texOption Number
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001339 hi def link texRefZone Special
1340 hi def link texSection PreCondit
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001341 hi def link texSpaceCodeChar Special
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001342 hi def link texSpecialChar SpecialChar
1343 hi def link texStatement Statement
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001344 hi def link texString String
1345 hi def link texTodo Todo
1346 hi def link texType Type
1347 hi def link texZone PreCondit
Bram Moolenaar071d4272004-06-13 20:20:40 +00001348
Bram Moolenaar071d4272004-06-13 20:20:40 +00001349endif
1350
Bram Moolenaar15146672011-10-20 22:22:38 +02001351" Cleanup: {{{1
Bram Moolenaara0f849e2015-10-30 14:37:44 +01001352delc TexFold
Bram Moolenaar81af9252010-12-10 20:35:50 +01001353unlet s:extfname
Bram Moolenaar071d4272004-06-13 20:20:40 +00001354let b:current_syntax = "tex"
Bram Moolenaar15146672011-10-20 22:22:38 +02001355let &cpo = s:keepcpo
1356unlet s:keepcpo
Bram Moolenaare90ee312010-08-05 22:08:47 +02001357" vim: ts=8 fdm=marker