blob: dc45790808f3f2e62d0d320ae2803baf4612b66b [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)
Bram Moolenaarce001a32022-04-27 15:25:03 +01007" Version: 121
Christian Brabandtf9ca1392024-02-19 20:37:11 +01008" Former URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TEX
Bram Moolenaar071d4272004-06-13 20:20:40 +00009"
10" Notes: {{{1
11"
12" 1. If you have a \begin{verbatim} that appears to overrun its boundaries,
13" use %stopzone.
14"
15" 2. Run-on equations ($..$ and $$..$$, particularly) can also be stopped
16" by suitable use of %stopzone.
17"
18" 3. If you have a slow computer, you may wish to modify
19"
20" syn sync maxlines=200
21" syn sync minlines=50
22"
23" to values that are more to your liking.
24"
25" 4. There is no match-syncing for $...$ and $$...$$; hence large
26" equation blocks constructed that way may exhibit syncing problems.
27" (there's no difference between begin/end patterns)
28"
29" 5. If you have the variable "g:tex_no_error" defined then none of the
30" lexical error-checking will be done.
31"
32" ie. let g:tex_no_error=1
Bram Moolenaara6878372014-03-22 21:02:50 +010033"
34" 6. Please see :help latex-syntax for information on
35" syntax folding :help tex-folding
36" spell checking :help tex-nospell
37" commands and mathzones :help tex-runon
38" new command highlighting :help tex-morecommands
39" error highlighting :help tex-error
40" new math groups :help tex-math
41" new styles :help tex-style
42" using conceal mode :help tex-conceal
Bram Moolenaar071d4272004-06-13 20:20:40 +000043
44" Version Clears: {{{1
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020045" quit when a syntax file was already loaded
46if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000047 finish
48endif
Bram Moolenaar15146672011-10-20 22:22:38 +020049let s:keepcpo= &cpo
50set cpo&vim
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +020051scriptencoding utf-8
Bram Moolenaar071d4272004-06-13 20:20:40 +000052
Bram Moolenaar543b7ef2013-06-01 14:50:56 +020053" by default, enable all region-based highlighting
54let s:tex_fast= "bcmMprsSvV"
55if exists("g:tex_fast")
56 if type(g:tex_fast) != 1
57 " g:tex_fast exists and is not a string, so
58 " turn off all optional region-based highighting
59 let s:tex_fast= ""
60 else
61 let s:tex_fast= g:tex_fast
62 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000063endif
64
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +020065" let user determine which classes of concealment will be supported
Bram Moolenaar7fc0c062010-08-10 21:43:35 +020066" a=accents/ligatures d=delimiters m=math symbols g=Greek s=superscripts/subscripts
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +020067if !exists("g:tex_conceal")
Bram Moolenaarbc488a72013-07-05 21:01:22 +020068 let s:tex_conceal= 'abdmgsS'
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +020069else
70 let s:tex_conceal= g:tex_conceal
71endif
Bram Moolenaar6e932462014-09-09 18:48:09 +020072if !exists("g:tex_superscripts")
Bram Moolenaar802a0d92016-06-26 16:17:58 +020073 let s:tex_superscripts= '[0-9a-zA-W.,:;+-<>/()=]'
Bram Moolenaar03413f42016-04-12 21:07:15 +020074else
75 let s:tex_superscripts= g:tex_superscripts
Bram Moolenaar6e932462014-09-09 18:48:09 +020076endif
77if !exists("g:tex_subscripts")
Bram Moolenaar802a0d92016-06-26 16:17:58 +020078 let s:tex_subscripts= '[0-9aehijklmnoprstuvx,+-/().]'
Bram Moolenaar03413f42016-04-12 21:07:15 +020079else
80 let s:tex_subscripts= g:tex_subscripts
Bram Moolenaar6e932462014-09-09 18:48:09 +020081endif
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +020082
Bram Moolenaarf1f8bc52005-03-07 23:20:08 +000083" Determine whether or not to use "*.sty" mode {{{1
Bram Moolenaar071d4272004-06-13 20:20:40 +000084" The user may override the normal determination by setting
85" g:tex_stylish to 1 (for "*.sty" mode)
86" or to 0 else (normal "*.tex" mode)
87" or on a buffer-by-buffer basis with b:tex_stylish
Bram Moolenaar81af9252010-12-10 20:35:50 +010088let s:extfname=expand("%:e")
Bram Moolenaar071d4272004-06-13 20:20:40 +000089if exists("g:tex_stylish")
90 let b:tex_stylish= g:tex_stylish
91elseif !exists("b:tex_stylish")
Bram Moolenaar81af9252010-12-10 20:35:50 +010092 if s:extfname == "sty" || s:extfname == "cls" || s:extfname == "clo" || s:extfname == "dtx" || s:extfname == "ltx"
Bram Moolenaar071d4272004-06-13 20:20:40 +000093 let b:tex_stylish= 1
94 else
95 let b:tex_stylish= 0
96 endif
97endif
98
Bram Moolenaarf1f8bc52005-03-07 23:20:08 +000099" handle folding {{{1
100if !exists("g:tex_fold_enabled")
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100101 let s:tex_fold_enabled= 0
Bram Moolenaarf1f8bc52005-03-07 23:20:08 +0000102elseif g:tex_fold_enabled && !has("folding")
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100103 let s:tex_fold_enabled= 0
Bram Moolenaarf1f8bc52005-03-07 23:20:08 +0000104 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 +0100105else
106 let s:tex_fold_enabled= 1
Bram Moolenaarf1f8bc52005-03-07 23:20:08 +0000107endif
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100108if s:tex_fold_enabled && &fdm == "manual"
Bram Moolenaar00a927d2010-05-14 23:24:24 +0200109 setl fdm=syntax
Bram Moolenaarf1f8bc52005-03-07 23:20:08 +0000110endif
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100111if s:tex_fold_enabled && has("folding")
amarakon8e6b5032024-11-09 18:59:31 +0100112 com! -nargs=* TexFold <args> fold
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100113else
amarakon8e6b5032024-11-09 18:59:31 +0100114 com! -nargs=* TexFold <args>
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100115endif
Bram Moolenaarf1f8bc52005-03-07 23:20:08 +0000116
Bram Moolenaaradc21822011-04-01 18:03:16 +0200117" (La)TeX keywords: uses the characters 0-9,a-z,A-Z,192-255 only... {{{1
Bram Moolenaar071d4272004-06-13 20:20:40 +0000118" but _ is the only one that causes problems.
Bram Moolenaaradc21822011-04-01 18:03:16 +0200119" One may override this iskeyword setting by providing
120" g:tex_isk
121if exists("g:tex_isk")
Bram Moolenaarbc8801c2016-08-02 21:04:33 +0200122 if b:tex_stylish && g:tex_isk !~ '@'
123 let b:tex_isk= '@,'.g:tex_isk
124 else
125 let b:tex_isk= g:tex_isk
126 endif
127elseif b:tex_stylish
128 let b:tex_isk="@,48-57,a-z,A-Z,192-255"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000129else
Bram Moolenaarbc8801c2016-08-02 21:04:33 +0200130 let b:tex_isk="48-57,a-z,A-Z,192-255"
Bram Moolenaaradc21822011-04-01 18:03:16 +0200131endif
Bram Moolenaar723dd942019-04-04 13:11:03 +0200132if (v:version == 704 && has("patch-7.4.1142")) || v:version > 704
Bram Moolenaarbc8801c2016-08-02 21:04:33 +0200133 exe "syn iskeyword ".b:tex_isk
134else
135 exe "setl isk=".b:tex_isk
Bram Moolenaar071d4272004-06-13 20:20:40 +0000136endif
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100137if exists("g:tex_no_error") && g:tex_no_error
138 let s:tex_no_error= 1
139else
140 let s:tex_no_error= 0
141endif
142if exists("g:tex_comment_nospell") && g:tex_comment_nospell
143 let s:tex_comment_nospell= 1
144else
145 let s:tex_comment_nospell= 0
146endif
147if exists("g:tex_nospell") && g:tex_nospell
148 let s:tex_nospell = 1
149else
150 let s:tex_nospell = 0
Bram Moolenaard960d762011-09-21 19:22:10 +0200151endif
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200152if exists("g:tex_matchcheck")
153 let s:tex_matchcheck= g:tex_matchcheck
154else
155 let s:tex_matchcheck= '[({[]'
156endif
Bram Moolenaar1d9215b2020-01-25 13:27:42 +0100157if exists("g:tex_excludematcher")
158 let s:tex_excludematcher= g:tex_excludematcher
159else
160 let s:tex_excludematcher= 0
161endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000162
163" Clusters: {{{1
164" --------
amarakon8e6b5032024-11-09 18:59:31 +0100165syn 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 +0100166if !s:tex_no_error
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100167 syn cluster texCmdGroup add=texMathError
Bram Moolenaar071d4272004-06-13 20:20:40 +0000168endif
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100169syn cluster texEnvGroup contains=texMatcher,texMathDelim,texSpecialChar,texStatement
Bram Moolenaar723dd942019-04-04 13:11:03 +0200170syn 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 +0100171syn 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
172syn 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
173if !s:tex_excludematcher
174 syn cluster texBoldGroup add=texMatcher
175 syn cluster texItalGroup add=texMatcher
176endif
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100177if !s:tex_nospell
Bram Moolenaarce001a32022-04-27 15:25:03 +0100178 if !s:tex_no_error
179 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
180 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
181 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
182 else
183 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
184 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
185 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
186 endif
Bram Moolenaard960d762011-09-21 19:22:10 +0200187else
Bram Moolenaarce001a32022-04-27 15:25:03 +0100188 if !s:tex_no_error
189 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
190 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
191 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
192 else
193 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
194 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
195 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
196 endif
Bram Moolenaard960d762011-09-21 19:22:10 +0200197endif
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +0200198syn 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 +0100199syn cluster texRefGroup contains=texMatcher,texComment,texDelimiter
Bram Moolenaare2719092015-01-10 15:09:25 +0100200if !exists("g:tex_no_math")
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +0200201 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 +0100202 syn cluster texMathZones contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ
203 syn cluster texMatchGroup add=@texMathZones
204 syn cluster texMathDelimGroup contains=texMathDelimBad,texMathDelimKey,texMathDelimSet1,texMathDelimSet2
amarakon8e6b5032024-11-09 18:59:31 +0100205 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
206 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 +0100207 if !s:tex_no_error
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100208 syn cluster texMathMatchGroup add=texMathError
209 syn cluster texMathZoneGroup add=texMathError
Bram Moolenaar071d4272004-06-13 20:20:40 +0000210 endif
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100211 syn cluster texMathZoneGroup add=@NoSpell
Bram Moolenaar5b8d8fd2005-08-16 23:01:50 +0000212 " following used in the \part \chapter \section \subsection \subsubsection
213 " \paragraph \subparagraph \author \title highlighting
214 syn cluster texDocGroup contains=texPartZone,@texPartGroup
215 syn cluster texPartGroup contains=texChapterZone,texSectionZone,texParaZone
216 syn cluster texChapterGroup contains=texSectionZone,texParaZone
217 syn cluster texSectionGroup contains=texSubSectionZone,texParaZone
218 syn cluster texSubSectionGroup contains=texSubSubSectionZone,texParaZone
219 syn cluster texSubSubSectionGroup contains=texParaZone
220 syn cluster texParaGroup contains=texSubParaZone
Bram Moolenaarb2c03502010-07-02 20:20:09 +0200221 if has("conceal") && &enc == 'utf-8'
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100222 syn cluster texMathZoneGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol
223 syn cluster texMathMatchGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol
Bram Moolenaarb2c03502010-07-02 20:20:09 +0200224 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000225endif
226
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200227" Try to flag {}, [], and () mismatches: {{{1
Bram Moolenaarf3913272016-02-25 00:00:01 +0100228if s:tex_fast =~# 'm'
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100229 if !s:tex_no_error
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200230 if s:tex_matchcheck =~ '{'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100231 syn region texMatcher matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup,texError
232 syn region texMatcherNM matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup,texError
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200233 endif
234 if s:tex_matchcheck =~ '\['
Bram Moolenaarce001a32022-04-27 15:25:03 +0100235 syn region texMatcher matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchGroup,texError,@NoSpell
236 syn region texMatcherNM matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchNMGroup,texError,@NoSpell
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200237 endif
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100238 else
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200239 if s:tex_matchcheck =~ '{'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100240 syn region texMatcher matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup
241 syn region texMatcherNM matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200242 endif
243 if s:tex_matchcheck =~ '\['
Bram Moolenaarce001a32022-04-27 15:25:03 +0100244 syn region texMatcher matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchGroup
245 syn region texMatcherNM matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchNMGroup
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200246 endif
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100247 endif
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200248 if s:tex_matchcheck =~ '('
249 if !s:tex_nospell
250 syn region texParen start="(" end=")" transparent contains=@texMatchGroup,@Spell
251 else
252 syn region texParen start="(" end=")" transparent contains=@texMatchGroup
253 endif
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100254 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000255endif
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100256if !s:tex_no_error
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200257 if s:tex_matchcheck =~ '('
258 syn match texError "[}\]]"
259 else
260 syn match texError "[}\])]"
261 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000262endif
Bram Moolenaarf3913272016-02-25 00:00:01 +0100263if s:tex_fast =~# 'M'
Bram Moolenaare2719092015-01-10 15:09:25 +0100264 if !exists("g:tex_no_math")
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100265 if !s:tex_no_error
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100266 syn match texMathError "}" contained
267 endif
Bram Moolenaarce001a32022-04-27 15:25:03 +0100268 syn region texMathMatcher matchgroup=texDelimiter start="{" skip="\%(\\\\\)*\\}" end="}" end="%stopzone\>" contained contains=@texMathMatchGroup
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100269 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000270endif
271
272" TeX/LaTeX keywords: {{{1
273" Instead of trying to be All Knowing, I just match \..alphameric..
274" Note that *.tex files may not have "@" in their \commands
275if exists("g:tex_tex") || b:tex_stylish
276 syn match texStatement "\\[a-zA-Z@]\+"
277else
278 syn match texStatement "\\\a\+"
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100279 if !s:tex_no_error
Bram Moolenaar071d4272004-06-13 20:20:40 +0000280 syn match texError "\\\a*@[a-zA-Z@]*"
281 endif
282endif
283
284" TeX/LaTeX delimiters: {{{1
285syn match texDelimiter "&"
286syn match texDelimiter "\\\\"
287
288" Tex/Latex Options: {{{1
Bram Moolenaard38b0552012-04-25 19:07:41 +0200289syn match texOption "[^\\]\zs#\d\+\|^#\d\+"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000290
291" texAccent (tnx to Karim Belabas) avoids annoying highlighting for accents: {{{1
292if b:tex_stylish
293 syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1
294 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1
295else
296 syn match texAccent "\\[bcdvuH]\A"me=e-1
297 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)\A"me=e-1
298endif
299syn match texAccent "\\[bcdvuH]$"
300syn match texAccent +\\[=^.\~"`']+
301syn match texAccent +\\['=t'.c^ud"vb~Hr]{\a}+
302syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)$"
303
Bram Moolenaarb0d45e72017-11-05 18:19:24 +0100304
Bram Moolenaar071d4272004-06-13 20:20:40 +0000305" \begin{}/\end{} section markers: {{{1
Bram Moolenaard38b0552012-04-25 19:07:41 +0200306syn match texBeginEnd "\\begin\>\|\\end\>" nextgroup=texBeginEndName
Bram Moolenaarf3913272016-02-25 00:00:01 +0100307if s:tex_fast =~# 'm'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100308 syn region texBeginEndName matchgroup=texDelimiter start="{" end="}" contained nextgroup=texBeginEndModifier contains=texComment
309 syn region texBeginEndModifier matchgroup=texDelimiter start="\[" end="]" contained contains=texComment,@texMathZones,@NoSpell
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100310endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000311
312" \documentclass, \documentstyle, \usepackage: {{{1
Bram Moolenaard38b0552012-04-25 19:07:41 +0200313syn match texDocType "\\documentclass\>\|\\documentstyle\>\|\\usepackage\>" nextgroup=texBeginEndName,texDocTypeArgs
Bram Moolenaarf3913272016-02-25 00:00:01 +0100314if s:tex_fast =~# 'm'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100315 syn region texDocTypeArgs matchgroup=texDelimiter start="\[" end="]" contained nextgroup=texBeginEndName contains=texComment,@NoSpell
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100316endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000317
Bram Moolenaara9a568c2006-03-14 23:04:27 +0000318" Preamble syntax-based folding support: {{{1
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100319if s:tex_fold_enabled && has("folding")
Bram Moolenaard38b0552012-04-25 19:07:41 +0200320 syn region texPreamble transparent fold start='\zs\\documentclass\>' end='\ze\\begin{document}' contains=texStyle,@texPreambleMatchGroup
Bram Moolenaara9a568c2006-03-14 23:04:27 +0000321endif
322
Bram Moolenaar071d4272004-06-13 20:20:40 +0000323" TeX input: {{{1
324syn match texInput "\\input\s\+[a-zA-Z/.0-9_^]\+"hs=s+7 contains=texStatement
Bram Moolenaar5c736222010-01-06 20:54:52 +0100325syn match texInputFile "\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
Bram Moolenaar071d4272004-06-13 20:20:40 +0000326syn match texInputFile "\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
327syn match texInputCurlies "[{}]" contained
Bram Moolenaarf3913272016-02-25 00:00:01 +0100328if s:tex_fast =~# 'm'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100329 syn region texInputFileOpt matchgroup=texDelimiter start="\[" end="\]" contained contains=texComment
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100330endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000331
332" Type Styles (LaTeX 2.09): {{{1
333syn match texTypeStyle "\\rm\>"
334syn match texTypeStyle "\\em\>"
335syn match texTypeStyle "\\bf\>"
336syn match texTypeStyle "\\it\>"
337syn match texTypeStyle "\\sl\>"
338syn match texTypeStyle "\\sf\>"
339syn match texTypeStyle "\\sc\>"
340syn match texTypeStyle "\\tt\>"
341
342" Type Styles: attributes, commands, families, etc (LaTeX2E): {{{1
Bram Moolenaar7db8f6f2016-03-29 23:12:46 +0200343if s:tex_conceal !~# 'b'
Bram Moolenaard38b0552012-04-25 19:07:41 +0200344 syn match texTypeStyle "\\textbf\>"
345 syn match texTypeStyle "\\textit\>"
Bram Moolenaar723dd942019-04-04 13:11:03 +0200346 syn match texTypeStyle "\\emph\>"
Bram Moolenaard38b0552012-04-25 19:07:41 +0200347endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000348syn match texTypeStyle "\\textmd\>"
349syn match texTypeStyle "\\textrm\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000350
Bram Moolenaar071d4272004-06-13 20:20:40 +0000351syn match texTypeStyle "\\mathbf\>"
352syn match texTypeStyle "\\mathcal\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000353syn match texTypeStyle "\\mathit\>"
354syn match texTypeStyle "\\mathnormal\>"
355syn match texTypeStyle "\\mathrm\>"
356syn match texTypeStyle "\\mathsf\>"
357syn match texTypeStyle "\\mathtt\>"
358
359syn match texTypeStyle "\\rmfamily\>"
360syn match texTypeStyle "\\sffamily\>"
361syn match texTypeStyle "\\ttfamily\>"
362
363syn match texTypeStyle "\\itshape\>"
364syn match texTypeStyle "\\scshape\>"
365syn match texTypeStyle "\\slshape\>"
366syn match texTypeStyle "\\upshape\>"
367
368syn match texTypeStyle "\\bfseries\>"
369syn match texTypeStyle "\\mdseries\>"
370
371" Some type sizes: {{{1
372syn match texTypeSize "\\tiny\>"
373syn match texTypeSize "\\scriptsize\>"
374syn match texTypeSize "\\footnotesize\>"
375syn match texTypeSize "\\small\>"
376syn match texTypeSize "\\normalsize\>"
377syn match texTypeSize "\\large\>"
378syn match texTypeSize "\\Large\>"
379syn match texTypeSize "\\LARGE\>"
380syn match texTypeSize "\\huge\>"
381syn match texTypeSize "\\Huge\>"
382
383" Spacecodes (TeX'isms): {{{1
384" \mathcode`\^^@="2201 \delcode`\(="028300 \sfcode`\)=0 \uccode`X=`X \lccode`x=`x
385syn match texSpaceCode "\\\(math\|cat\|del\|lc\|sf\|uc\)code`"me=e-1 nextgroup=texSpaceCodeChar
386syn match texSpaceCodeChar "`\\\=.\(\^.\)\==\(\d\|\"\x\{1,6}\|`.\)" contained
387
388" Sections, subsections, etc: {{{1
Bram Moolenaarf3913272016-02-25 00:00:01 +0100389if s:tex_fast =~# 'p'
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100390 if !s:tex_nospell
391 TexFold syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup,@Spell
392 TexFold syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup,@Spell
393 TexFold syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup,@Spell
394 TexFold syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup,@Spell
395 TexFold syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup,@Spell
396 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
397 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
398 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
399 TexFold syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup,@Spell
400 TexFold syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup,@Spell
401 else
402 TexFold syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup
403 TexFold syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup
404 TexFold syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup
405 TexFold syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup
406 TexFold syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup
407 TexFold syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSubSectionGroup
408 TexFold syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texParaGroup
409 TexFold syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup
410 TexFold syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup
411 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 +0100412 endif
Bram Moolenaar293ee4d2004-12-09 21:34:53 +0000413endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000414
Bram Moolenaard38b0552012-04-25 19:07:41 +0200415" particular support for bold and italic {{{1
Bram Moolenaarf3913272016-02-25 00:00:01 +0100416if s:tex_fast =~# 'b'
417 if s:tex_conceal =~# 'b'
Bram Moolenaar83d1b192015-04-13 14:22:40 +0200418 if !exists("g:tex_nospell") || !g:tex_nospell
Bram Moolenaar541f92d2015-06-19 13:27:23 +0200419 syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
420 syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell
421 syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell
422 syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
Bram Moolenaar723dd942019-04-04 13:11:03 +0200423 syn region texEmphStyle matchgroup=texTypeStyle start="\\emph\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell
Bram Moolenaar1d9215b2020-01-25 13:27:42 +0100424 syn region texEmphStyle matchgroup=texTypeStyle start="\\texts[cfl]\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
425 syn region texEmphStyle matchgroup=texTypeStyle start="\\textup\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
426 syn region texEmphStyle matchgroup=texTypeStyle start="\\texttt\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
amarakon8e6b5032024-11-09 18:59:31 +0100427 else
Bram Moolenaar541f92d2015-06-19 13:27:23 +0200428 syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup
429 syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup
430 syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup
431 syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup
Bram Moolenaar723dd942019-04-04 13:11:03 +0200432 syn region texEmphStyle matchgroup=texTypeStyle start="\\emph\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup
Bram Moolenaar1d9215b2020-01-25 13:27:42 +0100433 syn region texEmphStyle matchgroup=texTypeStyle start="\\texts[cfl]\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup
434 syn region texEmphStyle matchgroup=texTypeStyle start="\\textup\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup
435 syn region texEmphStyle matchgroup=texTypeStyle start="\\texttt\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup
Bram Moolenaar83d1b192015-04-13 14:22:40 +0200436 endif
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100437 endif
Bram Moolenaard38b0552012-04-25 19:07:41 +0200438endif
439
Bram Moolenaar071d4272004-06-13 20:20:40 +0000440" Bad Math (mismatched): {{{1
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100441if !exists("g:tex_no_math") && !s:tex_no_error
Bram Moolenaar51ad4ea2018-04-06 11:14:11 +0200442 syn match texBadMath "\\end\s*{\s*\(array\|[bBpvV]matrix\|split\|smallmatrix\)\s*}"
Bram Moolenaarf0b03c42017-12-17 17:17:07 +0100443 syn match texBadMath "\\end\s*{\s*\(displaymath\|equation\|eqnarray\|math\)\*\=\s*}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000444 syn match texBadMath "\\[\])]"
Bram Moolenaarce001a32022-04-27 15:25:03 +0100445 syn match texBadPar contained "\%(\\par\>\|^\s*\n.\)"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000446endif
447
448" Math Zones: {{{1
Bram Moolenaare2719092015-01-10 15:09:25 +0100449if !exists("g:tex_no_math")
Bram Moolenaar488c6512005-08-11 20:09:58 +0000450 " TexNewMathZone: function creates a mathzone with the given suffix and mathzone name. {{{2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000451 " Starred forms are created if starform is true. Starred
452 " forms have syntax group and synchronization groups with a
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +0200453 " "S" appended. Handles: cluster, syntax, sync, and highlighting.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000454 fun! TexNewMathZone(sfx,mathzone,starform)
455 let grpname = "texMathZone".a:sfx
456 let syncname = "texSyncMathZone".a:sfx
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100457 if s:tex_fold_enabled
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000458 let foldcmd= " fold"
459 else
460 let foldcmd= ""
461 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000462 exe "syn cluster texMathZones add=".grpname
Bram Moolenaarf3913272016-02-25 00:00:01 +0100463 if s:tex_fast =~# 'M'
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100464 exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
465 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
466 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
467 endif
Bram Moolenaar5c736222010-01-06 20:54:52 +0100468 exe 'hi def link '.grpname.' texMath'
Bram Moolenaar071d4272004-06-13 20:20:40 +0000469 if a:starform
470 let grpname = "texMathZone".a:sfx.'S'
471 let syncname = "texSyncMathZone".a:sfx.'S'
472 exe "syn cluster texMathZones add=".grpname
Bram Moolenaarf3913272016-02-25 00:00:01 +0100473 if s:tex_fast =~# 'M'
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100474 exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
475 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
476 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
477 endif
Bram Moolenaar5c736222010-01-06 20:54:52 +0100478 exe 'hi def link '.grpname.' texMath'
Bram Moolenaar071d4272004-06-13 20:20:40 +0000479 endif
480 endfun
481
482 " Standard Math Zones: {{{2
Bram Moolenaarf0b03c42017-12-17 17:17:07 +0100483 call TexNewMathZone("A","displaymath",1)
484 call TexNewMathZone("B","eqnarray",1)
485 call TexNewMathZone("C","equation",1)
486 call TexNewMathZone("D","math",1)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000487
488 " Inline Math Zones: {{{2
Bram Moolenaarf3913272016-02-25 00:00:01 +0100489 if s:tex_fast =~# 'M'
490 if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~# 'd'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100491 syn region texMathZoneV matchgroup=texDelimiter start="\\(" matchgroup=texDelimiter end="\\)\|%stopzone\>" keepend concealends contains=@texMathZoneGroup
492 syn region texMathZoneW matchgroup=texDelimiter start="\\\[" matchgroup=texDelimiter end="\\]\|%stopzone\>" keepend concealends contains=@texMathZoneGroup
493 syn region texMathZoneX matchgroup=texDelimiter start="\$" skip="\\\\\|\\\$" matchgroup=texDelimiter end="\$" end="%stopzone\>" concealends contains=@texMathZoneGroup
494 syn region texMathZoneY matchgroup=texDelimiter start="\$\$" matchgroup=texDelimiter end="\$\$" end="%stopzone\>" keepend concealends contains=@texMathZoneGroup
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100495 else
Bram Moolenaarce001a32022-04-27 15:25:03 +0100496 syn region texMathZoneV matchgroup=texDelimiter start="\\(" matchgroup=texDelimiter end="\\)\|%stopzone\>" keepend contains=@texMathZoneGroup
497 syn region texMathZoneW matchgroup=texDelimiter start="\\\[" matchgroup=texDelimiter end="\\]\|%stopzone\>" keepend contains=@texMathZoneGroup
498 syn region texMathZoneX matchgroup=texDelimiter start="\$" skip="\%(\\\\\)*\\\$" matchgroup=texDelimiter end="\$" end="%stopzone\>" contains=@texMathZoneGroup
499 syn region texMathZoneY matchgroup=texDelimiter start="\$\$" matchgroup=texDelimiter end="\$\$" end="%stopzone\>" keepend contains=@texMathZoneGroup
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100500 endif
Bram Moolenaar541f92d2015-06-19 13:27:23 +0200501 syn region texMathZoneZ matchgroup=texStatement start="\\ensuremath\s*{" matchgroup=texStatement end="}" end="%stopzone\>" contains=@texMathZoneGroup
Bram Moolenaare0021c72010-07-28 17:25:21 +0200502 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000503
504 syn match texMathOper "[_^=]" contained
amarakon8e6b5032024-11-09 18:59:31 +0100505 syn match texMathNumber "\<\d\|\.\d" contained
Bram Moolenaar071d4272004-06-13 20:20:40 +0000506
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200507 " Text Inside Math Zones: {{{2
Bram Moolenaarf3913272016-02-25 00:00:01 +0100508 if s:tex_fast =~# 'M'
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100509 if !exists("g:tex_nospell") || !g:tex_nospell
510 syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{' end='}' contains=@texFoldGroup,@Spell
511 else
512 syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{' end='}' contains=@texFoldGroup
513 endif
Bram Moolenaard960d762011-09-21 19:22:10 +0200514 endif
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200515
Bram Moolenaar071d4272004-06-13 20:20:40 +0000516 " \left..something.. and \right..something.. support: {{{2
517 syn match texMathDelimBad contained "\S"
Bram Moolenaarf3913272016-02-25 00:00:01 +0100518 if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~# 'm'
Bram Moolenaarbc8801c2016-08-02 21:04:33 +0200519 syn match texMathDelim contained "\\left\["
520 syn match texMathDelim contained "\\left\\{" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar={
521 syn match texMathDelim contained "\\right\\}" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar=}
Bram Moolenaaradc21822011-04-01 18:03:16 +0200522 let s:texMathDelimList=[
523 \ ['<' , '<'] ,
524 \ ['>' , '>'] ,
525 \ ['(' , '('] ,
526 \ [')' , ')'] ,
527 \ ['\[' , '['] ,
528 \ [']' , ']'] ,
529 \ ['\\{' , '{'] ,
530 \ ['\\}' , '}'] ,
531 \ ['|' , '|'] ,
532 \ ['\\|' , '‖'] ,
533 \ ['\\backslash' , '\'] ,
534 \ ['\\downarrow' , '↓'] ,
535 \ ['\\Downarrow' , '⇓'] ,
Bram Moolenaaradc21822011-04-01 18:03:16 +0200536 \ ['\\lbrace' , '['] ,
537 \ ['\\lceil' , '⌈'] ,
538 \ ['\\lfloor' , '⌊'] ,
539 \ ['\\lgroup' , '⌊'] ,
540 \ ['\\lmoustache' , '⎛'] ,
Bram Moolenaaradc21822011-04-01 18:03:16 +0200541 \ ['\\rbrace' , ']'] ,
542 \ ['\\rceil' , '⌉'] ,
543 \ ['\\rfloor' , '⌋'] ,
544 \ ['\\rgroup' , '⌋'] ,
545 \ ['\\rmoustache' , '⎞'] ,
546 \ ['\\uparrow' , '↑'] ,
547 \ ['\\Uparrow' , '↑'] ,
548 \ ['\\updownarrow', '↕'] ,
549 \ ['\\Updownarrow', '⇕']]
Bram Moolenaar690afe12017-01-28 18:34:47 +0100550 if &ambw == "double" || exists("g:tex_usedblwidth")
551 let s:texMathDelimList= s:texMathDelimList + [
552 \ ['\\langle' , '〈'] ,
Bram Moolenaar7f2e9d72017-11-11 20:58:53 +0100553 \ ['\\rangle' , '〉']]
Bram Moolenaar690afe12017-01-28 18:34:47 +0100554 else
555 let s:texMathDelimList= s:texMathDelimList + [
556 \ ['\\langle' , '<'] ,
557 \ ['\\rangle' , '>']]
558 endif
Bram Moolenaaradc21822011-04-01 18:03:16 +0200559 syn match texMathDelim '\\[bB]igg\=[lr]' contained nextgroup=texMathDelimBad
560 for texmath in s:texMathDelimList
561 exe "syn match texMathDelim '\\\\[bB]igg\\=[lr]\\=".texmath[0]."' contained conceal cchar=".texmath[1]
562 endfor
563
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +0200564 else
565 syn match texMathDelim contained "\\\(left\|right\)\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad
Bram Moolenaaradc21822011-04-01 18:03:16 +0200566 syn match texMathDelim contained "\\[bB]igg\=[lr]\=\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad
567 syn match texMathDelimSet2 contained "\\" nextgroup=texMathDelimKey,texMathDelimBad
568 syn match texMathDelimSet1 contained "[<>()[\]|/.]\|\\[{}|]"
569 syn keyword texMathDelimKey contained backslash lceil lVert rgroup uparrow
570 syn keyword texMathDelimKey contained downarrow lfloor rangle rmoustache Uparrow
571 syn keyword texMathDelimKey contained Downarrow lgroup rbrace rvert updownarrow
572 syn keyword texMathDelimKey contained langle lmoustache rceil rVert Updownarrow
573 syn keyword texMathDelimKey contained lbrace lvert rfloor
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +0200574 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000575 syn match texMathDelim contained "\\\(left\|right\)arrow\>\|\<\([aA]rrow\|brace\)\=vert\>"
576 syn match texMathDelim contained "\\lefteqn\>"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000577endif
578
579" Special TeX characters ( \$ \& \% \# \{ \} \_ \S \P ) : {{{1
580syn match texSpecialChar "\\[$&%#{}_]"
581if b:tex_stylish
582 syn match texSpecialChar "\\[SP@][^a-zA-Z@]"me=e-1
583else
584 syn match texSpecialChar "\\[SP@]\A"me=e-1
585endif
586syn match texSpecialChar "\\\\"
Bram Moolenaare2719092015-01-10 15:09:25 +0100587if !exists("g:tex_no_math")
Bram Moolenaar071d4272004-06-13 20:20:40 +0000588 syn match texOnlyMath "[_^]"
589endif
590syn match texSpecialChar "\^\^[0-9a-f]\{2}\|\^\^\S"
Bram Moolenaar7db8f6f2016-03-29 23:12:46 +0200591if s:tex_conceal !~# 'S'
Bram Moolenaarbc488a72013-07-05 21:01:22 +0200592 syn match texSpecialChar '\\glq\>' contained conceal cchar=‚
593 syn match texSpecialChar '\\grq\>' contained conceal cchar=‘
594 syn match texSpecialChar '\\glqq\>' contained conceal cchar=„
595 syn match texSpecialChar '\\grqq\>' contained conceal cchar=“
596 syn match texSpecialChar '\\hyp\>' contained conceal cchar=-
597endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000598
599" Comments: {{{1
600" Normal TeX LaTeX : %....
601" Documented TeX Format: ^^A... -and- leading %s (only)
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100602if !s:tex_comment_nospell
Bram Moolenaar3577c6f2008-06-24 21:16:56 +0000603 syn cluster texCommentGroup contains=texTodo,@Spell
604else
605 syn cluster texCommentGroup contains=texTodo,@NoSpell
606endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000607syn case ignore
Bram Moolenaar18144c82006-04-12 21:52:12 +0000608syn keyword texTodo contained combak fixme todo xxx
Bram Moolenaar071d4272004-06-13 20:20:40 +0000609syn case match
Bram Moolenaar81af9252010-12-10 20:35:50 +0100610if s:extfname == "dtx"
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100611 syn match texComment "\^\^A.*$" contains=@texCommentGroup
612 syn match texComment "^%\+" contains=@texCommentGroup
Bram Moolenaar071d4272004-06-13 20:20:40 +0000613else
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100614 if s:tex_fold_enabled
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100615 " allows syntax-folding of 2 or more contiguous comment lines
616 " single-line comments are not folded
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100617 syn match texComment "%.*$" contains=@texCommentGroup
Bram Moolenaarf3913272016-02-25 00:00:01 +0100618 if s:tex_fast =~# 'c'
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100619 TexFold syn region texComment start="^\zs\s*%.*\_s*%" skip="^\s*%" end='^\ze\s*[^%]' contains=@texCommentGroup
620 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 +0000621 endif
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100622 else
623 syn match texComment "%.*$" contains=@texCommentGroup
Bram Moolenaarf3913272016-02-25 00:00:01 +0100624 if s:tex_fast =~# 'c'
Bram Moolenaarb4ff5182015-11-10 21:15:48 +0100625 syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100626 endif
627 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000628endif
629
Bram Moolenaarb0d45e72017-11-05 18:19:24 +0100630" %begin-include ... %end-include acts like a texDocZone for \include'd files. Permits spell checking, for example, in such files.
631if !s:tex_nospell
632 TexFold syn region texDocZone matchgroup=texSection start='^\s*%begin-include\>' end='^\s*%end-include\>' contains=@texFoldGroup,@texDocGroup,@Spell
633else
634 TexFold syn region texDocZone matchgroup=texSection start='^\s*%begin-include\>' end='^\s*%end-include\>' contains=@texFoldGroup,@texDocGroup
635endif
636
Bram Moolenaar071d4272004-06-13 20:20:40 +0000637" Separate lines used for verb` and verb# so that the end conditions {{{1
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200638" will appropriately terminate.
639" If g:tex_verbspell exists, then verbatim texZones will permit spellchecking there.
Bram Moolenaarf3913272016-02-25 00:00:01 +0100640if s:tex_fast =~# 'v'
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100641 if exists("g:tex_verbspell") && g:tex_verbspell
642 syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>" contains=@Spell
Bram Moolenaarb0d45e72017-11-05 18:19:24 +0100643 " listings package:
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200644 if b:tex_stylish
645 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>" contains=@Spell
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200646 else
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200647 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>" contains=@Spell
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200648 endif
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100649 else
650 syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>"
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200651 if b:tex_stylish
652 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>"
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200653 else
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200654 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>"
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200655 endif
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100656 endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000657endif
658
659" Tex Reference Zones: {{{1
Bram Moolenaarf3913272016-02-25 00:00:01 +0100660if s:tex_fast =~# 'r'
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100661 syn region texZone matchgroup=texStatement start="@samp{" end="}\|%stopzone\>" contains=@texRefGroup
662 syn region texRefZone matchgroup=texStatement start="\\nocite{" end="}\|%stopzone\>" contains=@texRefGroup
663 syn region texRefZone matchgroup=texStatement start="\\bibliography{" end="}\|%stopzone\>" contains=@texRefGroup
664 syn region texRefZone matchgroup=texStatement start="\\label{" end="}\|%stopzone\>" contains=@texRefGroup
665 syn region texRefZone matchgroup=texStatement start="\\\(page\|eq\)ref{" end="}\|%stopzone\>" contains=@texRefGroup
666 syn region texRefZone matchgroup=texStatement start="\\v\=ref{" end="}\|%stopzone\>" contains=@texRefGroup
Bram Moolenaarce001a32022-04-27 15:25:03 +0100667 syn region texRefOption contained matchgroup=texDelimiter start='\[' end=']' contains=@texRefGroup,texRefZone nextgroup=texRefOption,texCite
668 syn region texCite contained matchgroup=texDelimiter start='{' end='}' contains=@texRefGroup,texRefZone,texCite
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100669endif
Bram Moolenaar1d9215b2020-01-25 13:27:42 +0100670syn match texRefZone '\\cite\%([tp]\*\=\)\=\>' nextgroup=texRefOption,texCite
Bram Moolenaar071d4272004-06-13 20:20:40 +0000671
Bram Moolenaarce001a32022-04-27 15:25:03 +0100672" Handle (re)newcommand, (re)newenvironment : {{{1
673syn match texNewCmd "\\\%(re\)\=newcommand\>" nextgroup=texCmdName skipwhite skipnl
Bram Moolenaarf3913272016-02-25 00:00:01 +0100674if s:tex_fast =~# 'V'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100675 syn region texCmdName contained matchgroup=texDelimiter start="{"rs=s+1 end="}" nextgroup=texCmdArgs,texCmdBody skipwhite skipnl
676 syn region texCmdArgs contained matchgroup=texDelimiter start="\["rs=s+1 end="]" nextgroup=texCmdBody skipwhite skipnl
677 syn region texCmdBody contained matchgroup=texDelimiter start="{"rs=s+1 skip="\\\\\|\\[{}]" matchgroup=texDelimiter end="}" contains=@texCmdGroup
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100678endif
Bram Moolenaarce001a32022-04-27 15:25:03 +0100679syn match texNewEnv "\\\%(re\)\=newenvironment\>" nextgroup=texEnvName skipwhite skipnl
Bram Moolenaarf3913272016-02-25 00:00:01 +0100680if s:tex_fast =~# 'V'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100681 syn region texEnvName contained matchgroup=texDelimiter start="{"rs=s+1 end="}" nextgroup=texEnvBgn skipwhite skipnl
682 syn region texEnvBgn contained matchgroup=texDelimiter start="{"rs=s+1 end="}" nextgroup=texEnvEnd skipwhite skipnl contains=@texEnvGroup
683 syn region texEnvEnd contained matchgroup=texDelimiter start="{"rs=s+1 end="}" skipwhite skipnl contains=@texEnvGroup
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100684endif
Bram Moolenaar071d4272004-06-13 20:20:40 +0000685
686" Definitions/Commands: {{{1
687syn match texDefCmd "\\def\>" nextgroup=texDefName skipwhite skipnl
688if b:tex_stylish
689 syn match texDefName contained "\\[a-zA-Z@]\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl
690 syn match texDefName contained "\\[^a-zA-Z@]" nextgroup=texDefParms,texCmdBody skipwhite skipnl
691else
692 syn match texDefName contained "\\\a\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl
693 syn match texDefName contained "\\\A" nextgroup=texDefParms,texCmdBody skipwhite skipnl
694endif
695syn match texDefParms contained "#[^{]*" contains=texDefParm nextgroup=texCmdBody skipwhite skipnl
696syn match texDefParm contained "#\d\+"
697
698" TeX Lengths: {{{1
Bram Moolenaar9964e462007-05-05 17:54:07 +0000699syn 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 +0000700
701" TeX String Delimiters: {{{1
702syn match texString "\(``\|''\|,,\)"
703
Bram Moolenaar5c736222010-01-06 20:54:52 +0100704" makeatletter -- makeatother sections
Bram Moolenaara0f849e2015-10-30 14:37:44 +0100705if !s:tex_no_error
Bram Moolenaarf3913272016-02-25 00:00:01 +0100706 if s:tex_fast =~# 'S'
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100707 syn region texStyle matchgroup=texStatement start='\\makeatletter' end='\\makeatother' contains=@texStyleGroup contained
708 endif
Bram Moolenaar5c736222010-01-06 20:54:52 +0100709 syn match texStyleStatement "\\[a-zA-Z@]\+" contained
Bram Moolenaarf3913272016-02-25 00:00:01 +0100710 if s:tex_fast =~# 'S'
Bram Moolenaarce001a32022-04-27 15:25:03 +0100711 syn region texStyleMatcher matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texStyleGroup,texError contained
712 syn region texStyleMatcher matchgroup=texDelimiter start="\[" end="]" contains=@texStyleGroup,texError contained
Bram Moolenaarac7bd632013-03-19 11:35:58 +0100713 endif
Bram Moolenaar5c736222010-01-06 20:54:52 +0100714endif
715
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200716" Conceal mode support (supports set cole=2) {{{1
Bram Moolenaarb2c03502010-07-02 20:20:09 +0200717if has("conceal") && &enc == 'utf-8'
Bram Moolenaar611df5b2010-07-26 22:51:56 +0200718
719 " Math Symbols {{{2
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200720 " (many of these symbols were contributed by Björn Winckler)
Bram Moolenaarf3913272016-02-25 00:00:01 +0100721 if s:tex_conceal =~# 'm'
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200722 let s:texMathList=[
Bram Moolenaaradc21822011-04-01 18:03:16 +0200723 \ ['|' , '‖'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200724 \ ['aleph' , 'ℵ'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100725 \ ['amalg' , '∐'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200726 \ ['angle' , '∠'],
727 \ ['approx' , '≈'],
728 \ ['ast' , '∗'],
729 \ ['asymp' , '≍'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200730 \ ['backslash' , '∖'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200731 \ ['bigcap' , '∩'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100732 \ ['bigcirc' , '○'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200733 \ ['bigcup' , '∪'],
734 \ ['bigodot' , '⊙'],
735 \ ['bigoplus' , '⊕'],
736 \ ['bigotimes' , '⊗'],
737 \ ['bigsqcup' , '⊔'],
738 \ ['bigtriangledown', '∇'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100739 \ ['bigtriangleup' , '∆'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200740 \ ['bigvee' , '⋁'],
741 \ ['bigwedge' , '⋀'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200742 \ ['bot' , '⊥'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100743 \ ['bowtie' , '⋈'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100744 \ ['bullet' , '•'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200745 \ ['cap' , '∩'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200746 \ ['cdot' , '·'],
747 \ ['cdots' , '⋯'],
748 \ ['circ' , '∘'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200749 \ ['clubsuit' , '♣'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200750 \ ['cong' , '≅'],
751 \ ['coprod' , '∐'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200752 \ ['copyright' , '©'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200753 \ ['cup' , '∪'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100754 \ ['dagger' , '†'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200755 \ ['dashv' , '⊣'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100756 \ ['ddagger' , '‡'],
757 \ ['ddots' , '⋱'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200758 \ ['diamond' , '⋄'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200759 \ ['diamondsuit' , '♢'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200760 \ ['div' , '÷'],
761 \ ['doteq' , '≐'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100762 \ ['dots' , '…'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200763 \ ['downarrow' , '↓'],
764 \ ['Downarrow' , '⇓'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100765 \ ['ell' , 'ℓ'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200766 \ ['emptyset' , '∅'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200767 \ ['equiv' , '≡'],
768 \ ['exists' , '∃'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200769 \ ['flat' , '♭'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200770 \ ['forall' , '∀'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100771 \ ['frown' , '⁔'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200772 \ ['ge' , '≥'],
773 \ ['geq' , '≥'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200774 \ ['gets' , '←'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100775 \ ['gg' , '⟫'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200776 \ ['hbar' , 'ℏ'],
777 \ ['heartsuit' , '♡'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200778 \ ['hookleftarrow' , '↩'],
779 \ ['hookrightarrow' , '↪'],
Bram Moolenaar690afe12017-01-28 18:34:47 +0100780 \ ['iff' , '⇔'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200781 \ ['Im' , 'ℑ'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200782 \ ['imath' , 'ɩ'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200783 \ ['in' , '∈'],
784 \ ['infty' , '∞'],
785 \ ['int' , '∫'],
Bram Moolenaar690afe12017-01-28 18:34:47 +0100786 \ ['jmath' , '𝚥'],
787 \ ['land' , '∧'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200788 \ ['lceil' , '⌈'],
789 \ ['ldots' , '…'],
790 \ ['le' , '≤'],
Bram Moolenaar65e0d772020-06-14 17:29:55 +0200791 \ ['left|' , '|'],
Bram Moolenaar2547aa92020-07-26 17:00:44 +0200792 \ ['left\\|' , '‖'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200793 \ ['left(' , '('],
794 \ ['left\[' , '['],
795 \ ['left\\{' , '{'],
Bram Moolenaare2719092015-01-10 15:09:25 +0100796 \ ['leftarrow' , '←'],
797 \ ['Leftarrow' , '⇐'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100798 \ ['leftharpoondown', '↽'],
799 \ ['leftharpoonup' , '↼'],
Bram Moolenaar97d62492012-11-15 21:28:22 +0100800 \ ['leftrightarrow' , '↔'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100801 \ ['Leftrightarrow' , '⇔'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200802 \ ['leq' , '≤'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100803 \ ['leq' , '≤'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200804 \ ['lfloor' , '⌊'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100805 \ ['ll' , '≪'],
Bram Moolenaaradc21822011-04-01 18:03:16 +0200806 \ ['lmoustache' , '╭'],
Bram Moolenaar690afe12017-01-28 18:34:47 +0100807 \ ['lor' , '∨'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200808 \ ['mapsto' , '↦'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200809 \ ['mid' , '∣'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100810 \ ['models' , '╞'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200811 \ ['mp' , '∓'],
812 \ ['nabla' , '∇'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200813 \ ['natural' , '♮'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200814 \ ['ne' , '≠'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100815 \ ['nearrow' , '↗'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200816 \ ['neg' , '¬'],
817 \ ['neq' , '≠'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200818 \ ['ni' , '∋'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200819 \ ['notin' , '∉'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200820 \ ['nwarrow' , '↖'],
821 \ ['odot' , '⊙'],
822 \ ['oint' , '∮'],
823 \ ['ominus' , '⊖'],
824 \ ['oplus' , '⊕'],
825 \ ['oslash' , '⊘'],
826 \ ['otimes' , '⊗'],
827 \ ['owns' , '∋'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200828 \ ['P' , '¶'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100829 \ ['parallel' , '║'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200830 \ ['partial' , '∂'],
831 \ ['perp' , '⊥'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200832 \ ['pm' , '±'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200833 \ ['prec' , '≺'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200834 \ ['preceq' , '⪯'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200835 \ ['prime' , '′'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200836 \ ['prod' , '∏'],
837 \ ['propto' , '∝'],
838 \ ['rceil' , '⌉'],
839 \ ['Re' , 'ℜ'],
Bram Moolenaar723dd942019-04-04 13:11:03 +0200840 \ ['quad' , ' '],
841 \ ['qquad' , ' '],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200842 \ ['rfloor' , '⌋'],
Bram Moolenaar65e0d772020-06-14 17:29:55 +0200843 \ ['right|' , '|'],
844 \ ['right\\|' , '‖'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200845 \ ['right)' , ')'],
846 \ ['right]' , ']'],
847 \ ['right\\}' , '}'],
Bram Moolenaare2719092015-01-10 15:09:25 +0100848 \ ['rightarrow' , '→'],
849 \ ['Rightarrow' , '⇒'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100850 \ ['rightleftharpoons', '⇌'],
Bram Moolenaaradc21822011-04-01 18:03:16 +0200851 \ ['rmoustache' , '╮'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200852 \ ['S' , '§'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200853 \ ['searrow' , '↘'],
854 \ ['setminus' , '∖'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200855 \ ['sharp' , '♯'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200856 \ ['sim' , '∼'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100857 \ ['simeq' , '⋍'],
858 \ ['smile' , '‿'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200859 \ ['spadesuit' , '♠'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200860 \ ['sqcap' , '⊓'],
861 \ ['sqcup' , '⊔'],
862 \ ['sqsubset' , '⊏'],
863 \ ['sqsubseteq' , '⊑'],
864 \ ['sqsupset' , '⊐'],
865 \ ['sqsupseteq' , '⊒'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100866 \ ['star' , '✫'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200867 \ ['subset' , '⊂'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200868 \ ['subseteq' , '⊆'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200869 \ ['succ' , '≻'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200870 \ ['succeq' , '⪰'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200871 \ ['sum' , '∑'],
Bram Moolenaar6be7f872012-01-20 21:08:56 +0100872 \ ['supset' , '⊃'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200873 \ ['supseteq' , '⊇'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200874 \ ['surd' , '√'],
875 \ ['swarrow' , '↙'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200876 \ ['times' , '×'],
877 \ ['to' , '→'],
878 \ ['top' , '⊤'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200879 \ ['triangle' , '∆'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200880 \ ['triangleleft' , '⊲'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200881 \ ['triangleright' , '⊳'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200882 \ ['uparrow' , '↑'],
883 \ ['Uparrow' , '⇑'],
884 \ ['updownarrow' , '↕'],
885 \ ['Updownarrow' , '⇕'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200886 \ ['vdash' , '⊢'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200887 \ ['vdots' , '⋮'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200888 \ ['vee' , '∨'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200889 \ ['wedge' , '∧'],
Bram Moolenaard960d762011-09-21 19:22:10 +0200890 \ ['wp' , '℘'],
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200891 \ ['wr' , '≀']]
Bram Moolenaar690afe12017-01-28 18:34:47 +0100892 if &ambw == "double" || exists("g:tex_usedblwidth")
893 let s:texMathList= s:texMathList + [
894 \ ['right\\rangle' , '〉'],
895 \ ['left\\langle' , '〈']]
896 else
897 let s:texMathList= s:texMathList + [
898 \ ['right\\rangle' , '>'],
899 \ ['left\\langle' , '<']]
900 endif
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200901 for texmath in s:texMathList
Bram Moolenaarf3913272016-02-25 00:00:01 +0100902 if texmath[0] =~# '\w$'
Bram Moolenaar81af9252010-12-10 20:35:50 +0100903 exe "syn match texMathSymbol '\\\\".texmath[0]."\\>' contained conceal cchar=".texmath[1]
904 else
905 exe "syn match texMathSymbol '\\\\".texmath[0]."' contained conceal cchar=".texmath[1]
906 endif
Bram Moolenaar7fc0c062010-08-10 21:43:35 +0200907 endfor
Bram Moolenaar74cbdf02010-08-04 23:03:17 +0200908
909 if &ambw == "double"
910 syn match texMathSymbol '\\gg\>' contained conceal cchar=≫
911 syn match texMathSymbol '\\ll\>' contained conceal cchar=≪
912 else
913 syn match texMathSymbol '\\gg\>' contained conceal cchar=⟫
914 syn match texMathSymbol '\\ll\>' contained conceal cchar=⟪
915 endif
Bram Moolenaard960d762011-09-21 19:22:10 +0200916
917 syn match texMathSymbol '\\hat{a}' contained conceal cchar=â
918 syn match texMathSymbol '\\hat{A}' contained conceal cchar=Â
919 syn match texMathSymbol '\\hat{c}' contained conceal cchar=ĉ
920 syn match texMathSymbol '\\hat{C}' contained conceal cchar=Ĉ
921 syn match texMathSymbol '\\hat{e}' contained conceal cchar=ê
922 syn match texMathSymbol '\\hat{E}' contained conceal cchar=Ê
923 syn match texMathSymbol '\\hat{g}' contained conceal cchar=ĝ
924 syn match texMathSymbol '\\hat{G}' contained conceal cchar=Ĝ
925 syn match texMathSymbol '\\hat{i}' contained conceal cchar=î
926 syn match texMathSymbol '\\hat{I}' contained conceal cchar=Î
927 syn match texMathSymbol '\\hat{o}' contained conceal cchar=ô
928 syn match texMathSymbol '\\hat{O}' contained conceal cchar=Ô
929 syn match texMathSymbol '\\hat{s}' contained conceal cchar=ŝ
930 syn match texMathSymbol '\\hat{S}' contained conceal cchar=Ŝ
931 syn match texMathSymbol '\\hat{u}' contained conceal cchar=û
932 syn match texMathSymbol '\\hat{U}' contained conceal cchar=Û
933 syn match texMathSymbol '\\hat{w}' contained conceal cchar=ŵ
934 syn match texMathSymbol '\\hat{W}' contained conceal cchar=Ŵ
935 syn match texMathSymbol '\\hat{y}' contained conceal cchar=ŷ
936 syn match texMathSymbol '\\hat{Y}' contained conceal cchar=Ŷ
Bram Moolenaare2719092015-01-10 15:09:25 +0100937" syn match texMathSymbol '\\bar{a}' contained conceal cchar=a̅
Bram Moolenaar51ad4ea2018-04-06 11:14:11 +0200938
939 syn match texMathSymbol '\\dot{B}' contained conceal cchar=Ḃ
940 syn match texMathSymbol '\\dot{b}' contained conceal cchar=ḃ
941 syn match texMathSymbol '\\dot{D}' contained conceal cchar=Ḋ
942 syn match texMathSymbol '\\dot{d}' contained conceal cchar=ḋ
943 syn match texMathSymbol '\\dot{F}' contained conceal cchar=Ḟ
944 syn match texMathSymbol '\\dot{f}' contained conceal cchar=ḟ
945 syn match texMathSymbol '\\dot{H}' contained conceal cchar=Ḣ
946 syn match texMathSymbol '\\dot{h}' contained conceal cchar=ḣ
947 syn match texMathSymbol '\\dot{M}' contained conceal cchar=Ṁ
948 syn match texMathSymbol '\\dot{m}' contained conceal cchar=ṁ
949 syn match texMathSymbol '\\dot{N}' contained conceal cchar=Ṅ
950 syn match texMathSymbol '\\dot{n}' contained conceal cchar=ṅ
951 syn match texMathSymbol '\\dot{P}' contained conceal cchar=Ṗ
952 syn match texMathSymbol '\\dot{p}' contained conceal cchar=ṗ
953 syn match texMathSymbol '\\dot{R}' contained conceal cchar=Ṙ
954 syn match texMathSymbol '\\dot{r}' contained conceal cchar=ṙ
955 syn match texMathSymbol '\\dot{S}' contained conceal cchar=Ṡ
956 syn match texMathSymbol '\\dot{s}' contained conceal cchar=ṡ
957 syn match texMathSymbol '\\dot{T}' contained conceal cchar=Ṫ
958 syn match texMathSymbol '\\dot{t}' contained conceal cchar=ṫ
959 syn match texMathSymbol '\\dot{W}' contained conceal cchar=Ẇ
960 syn match texMathSymbol '\\dot{w}' contained conceal cchar=ẇ
961 syn match texMathSymbol '\\dot{X}' contained conceal cchar=Ẋ
962 syn match texMathSymbol '\\dot{x}' contained conceal cchar=ẋ
963 syn match texMathSymbol '\\dot{Y}' contained conceal cchar=Ẏ
964 syn match texMathSymbol '\\dot{y}' contained conceal cchar=ẏ
965 syn match texMathSymbol '\\dot{Z}' contained conceal cchar=Ż
966 syn match texMathSymbol '\\dot{z}' contained conceal cchar=ż
967
968 syn match texMathSymbol '\\dot{C}' contained conceal cchar=Ċ
969 syn match texMathSymbol '\\dot{c}' contained conceal cchar=ċ
970 syn match texMathSymbol '\\dot{E}' contained conceal cchar=Ė
971 syn match texMathSymbol '\\dot{e}' contained conceal cchar=ė
972 syn match texMathSymbol '\\dot{G}' contained conceal cchar=Ġ
973 syn match texMathSymbol '\\dot{g}' contained conceal cchar=ġ
974 syn match texMathSymbol '\\dot{I}' contained conceal cchar=İ
975
976 syn match texMathSymbol '\\dot{A}' contained conceal cchar=Ȧ
977 syn match texMathSymbol '\\dot{a}' contained conceal cchar=ȧ
978 syn match texMathSymbol '\\dot{O}' contained conceal cchar=Ȯ
979 syn match texMathSymbol '\\dot{o}' contained conceal cchar=ȯ
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +0200980 endif
Bram Moolenaar611df5b2010-07-26 22:51:56 +0200981
982 " Greek {{{2
Bram Moolenaarf3913272016-02-25 00:00:01 +0100983 if s:tex_conceal =~# 'g'
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +0200984 fun! s:Greek(group,pat,cchar)
985 exe 'syn match '.a:group." '".a:pat."' contained conceal cchar=".a:cchar
986 endfun
987 call s:Greek('texGreek','\\alpha\>' ,'α')
988 call s:Greek('texGreek','\\beta\>' ,'β')
989 call s:Greek('texGreek','\\gamma\>' ,'γ')
990 call s:Greek('texGreek','\\delta\>' ,'δ')
991 call s:Greek('texGreek','\\epsilon\>' ,'ϵ')
992 call s:Greek('texGreek','\\varepsilon\>' ,'ε')
993 call s:Greek('texGreek','\\zeta\>' ,'ζ')
994 call s:Greek('texGreek','\\eta\>' ,'η')
995 call s:Greek('texGreek','\\theta\>' ,'θ')
Bram Moolenaare2719092015-01-10 15:09:25 +0100996 call s:Greek('texGreek','\\vartheta\>' ,'ϑ')
Bram Moolenaar6c1e1572019-06-22 02:13:00 +0200997 call s:Greek('texGreek','\\iota\>' ,'ι')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +0200998 call s:Greek('texGreek','\\kappa\>' ,'κ')
999 call s:Greek('texGreek','\\lambda\>' ,'λ')
1000 call s:Greek('texGreek','\\mu\>' ,'μ')
1001 call s:Greek('texGreek','\\nu\>' ,'ν')
1002 call s:Greek('texGreek','\\xi\>' ,'ξ')
1003 call s:Greek('texGreek','\\pi\>' ,'π')
1004 call s:Greek('texGreek','\\varpi\>' ,'ϖ')
1005 call s:Greek('texGreek','\\rho\>' ,'ρ')
1006 call s:Greek('texGreek','\\varrho\>' ,'ϱ')
1007 call s:Greek('texGreek','\\sigma\>' ,'σ')
Bram Moolenaare2719092015-01-10 15:09:25 +01001008 call s:Greek('texGreek','\\varsigma\>' ,'ς')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001009 call s:Greek('texGreek','\\tau\>' ,'τ')
1010 call s:Greek('texGreek','\\upsilon\>' ,'υ')
Bram Moolenaare2719092015-01-10 15:09:25 +01001011 call s:Greek('texGreek','\\phi\>' ,'ϕ')
1012 call s:Greek('texGreek','\\varphi\>' ,'φ')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001013 call s:Greek('texGreek','\\chi\>' ,'χ')
1014 call s:Greek('texGreek','\\psi\>' ,'ψ')
1015 call s:Greek('texGreek','\\omega\>' ,'ω')
1016 call s:Greek('texGreek','\\Gamma\>' ,'Γ')
1017 call s:Greek('texGreek','\\Delta\>' ,'Δ')
1018 call s:Greek('texGreek','\\Theta\>' ,'Θ')
1019 call s:Greek('texGreek','\\Lambda\>' ,'Λ')
Bram Moolenaar6c1e1572019-06-22 02:13:00 +02001020 call s:Greek('texGreek','\\Xi\>' ,'Ξ')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001021 call s:Greek('texGreek','\\Pi\>' ,'Π')
1022 call s:Greek('texGreek','\\Sigma\>' ,'Σ')
1023 call s:Greek('texGreek','\\Upsilon\>' ,'Υ')
1024 call s:Greek('texGreek','\\Phi\>' ,'Φ')
Bram Moolenaar6c1e1572019-06-22 02:13:00 +02001025 call s:Greek('texGreek','\\Chi\>' ,'Χ')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001026 call s:Greek('texGreek','\\Psi\>' ,'Ψ')
1027 call s:Greek('texGreek','\\Omega\>' ,'Ω')
1028 delfun s:Greek
1029 endif
Bram Moolenaar611df5b2010-07-26 22:51:56 +02001030
1031 " Superscripts/Subscripts {{{2
Bram Moolenaarf3913272016-02-25 00:00:01 +01001032 if s:tex_conceal =~# 's'
1033 if s:tex_fast =~# 's'
Bram Moolenaarce001a32022-04-27 15:25:03 +01001034 syn region texSuperscript matchgroup=texDelimiter start='\^{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSuperscripts,texStatement,texSubscript,texSuperscript,texMathMatcher
1035 syn region texSubscript matchgroup=texDelimiter start='_{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSubscripts,texStatement,texSubscript,texSuperscript,texMathMatcher
Bram Moolenaarac7bd632013-03-19 11:35:58 +01001036 endif
Bram Moolenaar541f92d2015-06-19 13:27:23 +02001037 " s:SuperSub:
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001038 fun! s:SuperSub(group,leader,pat,cchar)
Bram Moolenaar03413f42016-04-12 21:07:15 +02001039 if a:pat =~# '^\\' || (a:leader == '\^' && a:pat =~# s:tex_superscripts) || (a:leader == '_' && a:pat =~# s:tex_subscripts)
Bram Moolenaar6e932462014-09-09 18:48:09 +02001040" call Decho("SuperSub: group<".a:group."> leader<".a:leader."> pat<".a:pat."> cchar<".a:cchar.">")
1041 exe 'syn match '.a:group." '".a:leader.a:pat."' contained conceal cchar=".a:cchar
Bram Moolenaar541f92d2015-06-19 13:27:23 +02001042 exe 'syn match '.a:group."s '".a:pat ."' contained conceal cchar=".a:cchar.' nextgroup='.a:group.'s'
Bram Moolenaar6e932462014-09-09 18:48:09 +02001043 endif
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001044 endfun
1045 call s:SuperSub('texSuperscript','\^','0','⁰')
1046 call s:SuperSub('texSuperscript','\^','1','¹')
1047 call s:SuperSub('texSuperscript','\^','2','²')
1048 call s:SuperSub('texSuperscript','\^','3','³')
1049 call s:SuperSub('texSuperscript','\^','4','⁴')
1050 call s:SuperSub('texSuperscript','\^','5','⁵')
1051 call s:SuperSub('texSuperscript','\^','6','⁶')
1052 call s:SuperSub('texSuperscript','\^','7','⁷')
1053 call s:SuperSub('texSuperscript','\^','8','⁸')
1054 call s:SuperSub('texSuperscript','\^','9','⁹')
1055 call s:SuperSub('texSuperscript','\^','a','ᵃ')
1056 call s:SuperSub('texSuperscript','\^','b','ᵇ')
1057 call s:SuperSub('texSuperscript','\^','c','ᶜ')
1058 call s:SuperSub('texSuperscript','\^','d','ᵈ')
1059 call s:SuperSub('texSuperscript','\^','e','ᵉ')
1060 call s:SuperSub('texSuperscript','\^','f','ᶠ')
1061 call s:SuperSub('texSuperscript','\^','g','ᵍ')
1062 call s:SuperSub('texSuperscript','\^','h','ʰ')
1063 call s:SuperSub('texSuperscript','\^','i','ⁱ')
1064 call s:SuperSub('texSuperscript','\^','j','ʲ')
1065 call s:SuperSub('texSuperscript','\^','k','ᵏ')
1066 call s:SuperSub('texSuperscript','\^','l','ˡ')
1067 call s:SuperSub('texSuperscript','\^','m','ᵐ')
1068 call s:SuperSub('texSuperscript','\^','n','ⁿ')
1069 call s:SuperSub('texSuperscript','\^','o','ᵒ')
1070 call s:SuperSub('texSuperscript','\^','p','ᵖ')
1071 call s:SuperSub('texSuperscript','\^','r','ʳ')
1072 call s:SuperSub('texSuperscript','\^','s','ˢ')
1073 call s:SuperSub('texSuperscript','\^','t','ᵗ')
1074 call s:SuperSub('texSuperscript','\^','u','ᵘ')
1075 call s:SuperSub('texSuperscript','\^','v','ᵛ')
1076 call s:SuperSub('texSuperscript','\^','w','ʷ')
1077 call s:SuperSub('texSuperscript','\^','x','ˣ')
1078 call s:SuperSub('texSuperscript','\^','y','ʸ')
1079 call s:SuperSub('texSuperscript','\^','z','ᶻ')
1080 call s:SuperSub('texSuperscript','\^','A','ᴬ')
1081 call s:SuperSub('texSuperscript','\^','B','ᴮ')
1082 call s:SuperSub('texSuperscript','\^','D','ᴰ')
1083 call s:SuperSub('texSuperscript','\^','E','ᴱ')
1084 call s:SuperSub('texSuperscript','\^','G','ᴳ')
1085 call s:SuperSub('texSuperscript','\^','H','ᴴ')
1086 call s:SuperSub('texSuperscript','\^','I','ᴵ')
1087 call s:SuperSub('texSuperscript','\^','J','ᴶ')
1088 call s:SuperSub('texSuperscript','\^','K','ᴷ')
1089 call s:SuperSub('texSuperscript','\^','L','ᴸ')
1090 call s:SuperSub('texSuperscript','\^','M','ᴹ')
1091 call s:SuperSub('texSuperscript','\^','N','ᴺ')
1092 call s:SuperSub('texSuperscript','\^','O','ᴼ')
1093 call s:SuperSub('texSuperscript','\^','P','ᴾ')
1094 call s:SuperSub('texSuperscript','\^','R','ᴿ')
1095 call s:SuperSub('texSuperscript','\^','T','ᵀ')
1096 call s:SuperSub('texSuperscript','\^','U','ᵁ')
Bram Moolenaar388a5d42020-05-26 21:20:45 +02001097 call s:SuperSub('texSuperscript','\^','V','ⱽ')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001098 call s:SuperSub('texSuperscript','\^','W','ᵂ')
Bram Moolenaar6be7f872012-01-20 21:08:56 +01001099 call s:SuperSub('texSuperscript','\^',',','︐')
1100 call s:SuperSub('texSuperscript','\^',':','︓')
1101 call s:SuperSub('texSuperscript','\^',';','︔')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001102 call s:SuperSub('texSuperscript','\^','+','⁺')
1103 call s:SuperSub('texSuperscript','\^','-','⁻')
1104 call s:SuperSub('texSuperscript','\^','<','˂')
1105 call s:SuperSub('texSuperscript','\^','>','˃')
1106 call s:SuperSub('texSuperscript','\^','/','ˊ')
1107 call s:SuperSub('texSuperscript','\^','(','⁽')
1108 call s:SuperSub('texSuperscript','\^',')','⁾')
1109 call s:SuperSub('texSuperscript','\^','\.','˙')
1110 call s:SuperSub('texSuperscript','\^','=','˭')
1111 call s:SuperSub('texSubscript','_','0','₀')
1112 call s:SuperSub('texSubscript','_','1','₁')
1113 call s:SuperSub('texSubscript','_','2','₂')
1114 call s:SuperSub('texSubscript','_','3','₃')
1115 call s:SuperSub('texSubscript','_','4','₄')
1116 call s:SuperSub('texSubscript','_','5','₅')
1117 call s:SuperSub('texSubscript','_','6','₆')
1118 call s:SuperSub('texSubscript','_','7','₇')
1119 call s:SuperSub('texSubscript','_','8','₈')
1120 call s:SuperSub('texSubscript','_','9','₉')
1121 call s:SuperSub('texSubscript','_','a','ₐ')
1122 call s:SuperSub('texSubscript','_','e','ₑ')
Bram Moolenaar802a0d92016-06-26 16:17:58 +02001123 call s:SuperSub('texSubscript','_','h','ₕ')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001124 call s:SuperSub('texSubscript','_','i','ᵢ')
Bram Moolenaar802a0d92016-06-26 16:17:58 +02001125 call s:SuperSub('texSubscript','_','j','ⱼ')
1126 call s:SuperSub('texSubscript','_','k','ₖ')
1127 call s:SuperSub('texSubscript','_','l','ₗ')
1128 call s:SuperSub('texSubscript','_','m','ₘ')
1129 call s:SuperSub('texSubscript','_','n','ₙ')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001130 call s:SuperSub('texSubscript','_','o','ₒ')
Bram Moolenaar802a0d92016-06-26 16:17:58 +02001131 call s:SuperSub('texSubscript','_','p','ₚ')
1132 call s:SuperSub('texSubscript','_','r','ᵣ')
1133 call s:SuperSub('texSubscript','_','s','ₛ')
1134 call s:SuperSub('texSubscript','_','t','ₜ')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001135 call s:SuperSub('texSubscript','_','u','ᵤ')
Bram Moolenaar802a0d92016-06-26 16:17:58 +02001136 call s:SuperSub('texSubscript','_','v','ᵥ')
1137 call s:SuperSub('texSubscript','_','x','ₓ')
Bram Moolenaar6be7f872012-01-20 21:08:56 +01001138 call s:SuperSub('texSubscript','_',',','︐')
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001139 call s:SuperSub('texSubscript','_','+','₊')
1140 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','_','r','ᵣ')
1146 call s:SuperSub('texSubscript','_','v','ᵥ')
1147 call s:SuperSub('texSubscript','_','x','ₓ')
1148 call s:SuperSub('texSubscript','_','\\beta\>' ,'ᵦ')
1149 call s:SuperSub('texSubscript','_','\\delta\>','ᵨ')
1150 call s:SuperSub('texSubscript','_','\\phi\>' ,'ᵩ')
1151 call s:SuperSub('texSubscript','_','\\gamma\>','ᵧ')
1152 call s:SuperSub('texSubscript','_','\\chi\>' ,'ᵪ')
Bram Moolenaar802a0d92016-06-26 16:17:58 +02001153
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001154 delfun s:SuperSub
1155 endif
Bram Moolenaar611df5b2010-07-26 22:51:56 +02001156
Bram Moolenaarb0d45e72017-11-05 18:19:24 +01001157 " Accented characters and Ligatures: {{{2
Bram Moolenaarf3913272016-02-25 00:00:01 +01001158 if s:tex_conceal =~# 'a'
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001159 if b:tex_stylish
1160 syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1
Bram Moolenaarb0d45e72017-11-05 18:19:24 +01001161 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1
1162 syn match texLigature '--'
1163 syn match texLigature '---'
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001164 else
1165 fun! s:Accents(chr,...)
1166 let i= 1
Bram Moolenaara6878372014-03-22 21:02:50 +01001167 for accent in ["`","\\'","^",'"','\~','\.','=',"c","H","k","r","u","v"]
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001168 if i > a:0
1169 break
1170 endif
Bram Moolenaar7fc0c062010-08-10 21:43:35 +02001171 if strlen(a:{i}) == 0 || a:{i} == ' ' || a:{i} == '?'
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001172 let i= i + 1
1173 continue
1174 endif
Bram Moolenaarf3913272016-02-25 00:00:01 +01001175 if accent =~# '\a'
Bram Moolenaar7fc0c062010-08-10 21:43:35 +02001176 exe "syn match texAccent '".'\\'.accent.'\(\s*{'.a:chr.'}\|\s\+'.a:chr.'\)'."' conceal cchar=".a:{i}
1177 else
1178 exe "syn match texAccent '".'\\'.accent.'\s*\({'.a:chr.'}\|'.a:chr.'\)'."' conceal cchar=".a:{i}
1179 endif
Bram Moolenaare0021c72010-07-28 17:25:21 +02001180 let i= i + 1
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001181 endfor
1182 endfun
Bram Moolenaar6e932462014-09-09 18:48:09 +02001183 " \` \' \^ \" \~ \. \= \c \H \k \r \u \v
1184 call s:Accents('a','à','á','â','ä','ã','ȧ','ā',' ',' ','ą','å','ă','ǎ')
1185 call s:Accents('A','À','Á','Â','Ä','Ã','Ȧ','Ā',' ',' ','Ą','Å','Ă','Ǎ')
1186 call s:Accents('c',' ','ć','ĉ',' ',' ','ċ',' ','ç',' ',' ',' ',' ','č')
1187 call s:Accents('C',' ','Ć','Ĉ',' ',' ','Ċ',' ','Ç',' ',' ',' ',' ','Č')
1188 call s:Accents('d',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ď')
1189 call s:Accents('D',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Ď')
1190 call s:Accents('e','è','é','ê','ë','ẽ','ė','ē','ȩ',' ','ę',' ','ĕ','ě')
1191 call s:Accents('E','È','É','Ê','Ë','Ẽ','Ė','Ē','Ȩ',' ','Ę',' ','Ĕ','Ě')
1192 call s:Accents('g',' ','ǵ','ĝ',' ',' ','ġ',' ','ģ',' ',' ',' ','ğ','ǧ')
1193 call s:Accents('G',' ','Ǵ','Ĝ',' ',' ','Ġ',' ','Ģ',' ',' ',' ','Ğ','Ǧ')
1194 call s:Accents('h',' ',' ','ĥ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ȟ')
1195 call s:Accents('H',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Ȟ')
1196 call s:Accents('i','ì','í','î','ï','ĩ','į','ī',' ',' ','į',' ','ĭ','ǐ')
1197 call s:Accents('I','Ì','Í','Î','Ï','Ĩ','İ','Ī',' ',' ','Į',' ','Ĭ','Ǐ')
1198 call s:Accents('J',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ǰ')
1199 call s:Accents('k',' ',' ',' ',' ',' ',' ',' ','ķ',' ',' ',' ',' ','ǩ')
1200 call s:Accents('K',' ',' ',' ',' ',' ',' ',' ','Ķ',' ',' ',' ',' ','Ǩ')
1201 call s:Accents('l',' ','ĺ','ľ',' ',' ',' ',' ','ļ',' ',' ',' ',' ','ľ')
1202 call s:Accents('L',' ','Ĺ','Ľ',' ',' ',' ',' ','Ļ',' ',' ',' ',' ','Ľ')
1203 call s:Accents('n',' ','ń',' ',' ','ñ',' ',' ','ņ',' ',' ',' ',' ','ň')
1204 call s:Accents('N',' ','Ń',' ',' ','Ñ',' ',' ','Ņ',' ',' ',' ',' ','Ň')
1205 call s:Accents('o','ò','ó','ô','ö','õ','ȯ','ō',' ','ő','ǫ',' ','ŏ','ǒ')
1206 call s:Accents('O','Ò','Ó','Ô','Ö','Õ','Ȯ','Ō',' ','Ő','Ǫ',' ','Ŏ','Ǒ')
1207 call s:Accents('r',' ','ŕ',' ',' ',' ',' ',' ','ŗ',' ',' ',' ',' ','ř')
1208 call s:Accents('R',' ','Ŕ',' ',' ',' ',' ',' ','Ŗ',' ',' ',' ',' ','Ř')
1209 call s:Accents('s',' ','ś','ŝ',' ',' ',' ',' ','ş',' ','ȿ',' ',' ','š')
1210 call s:Accents('S',' ','Ś','Ŝ',' ',' ',' ',' ','Ş',' ',' ',' ',' ','Š')
1211 call s:Accents('t',' ',' ',' ',' ',' ',' ',' ','ţ',' ',' ',' ',' ','ť')
1212 call s:Accents('T',' ',' ',' ',' ',' ',' ',' ','Ţ',' ',' ',' ',' ','Ť')
1213 call s:Accents('u','ù','ú','û','ü','ũ',' ','ū',' ','ű','ų','ů','ŭ','ǔ')
1214 call s:Accents('U','Ù','Ú','Û','Ü','Ũ',' ','Ū',' ','Ű','Ų','Ů','Ŭ','Ǔ')
1215 call s:Accents('w',' ',' ','ŵ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ')
1216 call s:Accents('W',' ',' ','Ŵ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ')
1217 call s:Accents('y','ỳ','ý','ŷ','ÿ','ỹ',' ',' ',' ',' ',' ',' ',' ',' ')
1218 call s:Accents('Y','Ỳ','Ý','Ŷ','Ÿ','Ỹ',' ',' ',' ',' ',' ',' ',' ',' ')
1219 call s:Accents('z',' ','ź',' ',' ',' ','ż',' ',' ',' ',' ',' ',' ','ž')
1220 call s:Accents('Z',' ','Ź',' ',' ',' ','Ż',' ',' ',' ',' ',' ',' ','Ž')
Bram Moolenaara6878372014-03-22 21:02:50 +01001221 call s:Accents('\\i','ì','í','î','ï','ĩ','į',' ',' ',' ',' ',' ','ĭ',' ')
1222 " \` \' \^ \" \~ \. \= \c \H \k \r \u \v
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001223 delfun s:Accents
Bram Moolenaarb0d45e72017-11-05 18:19:24 +01001224 syn match texAccent '\\aa\>' conceal cchar=å
1225 syn match texAccent '\\AA\>' conceal cchar=Å
1226 syn match texAccent '\\o\>' conceal cchar=ø
1227 syn match texAccent '\\O\>' conceal cchar=Ø
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001228 syn match texLigature '\\AE\>' conceal cchar=Æ
1229 syn match texLigature '\\ae\>' conceal cchar=æ
1230 syn match texLigature '\\oe\>' conceal cchar=œ
1231 syn match texLigature '\\OE\>' conceal cchar=Œ
1232 syn match texLigature '\\ss\>' conceal cchar=ß
Bram Moolenaarb0d45e72017-11-05 18:19:24 +01001233 syn match texLigature '--' conceal cchar=–
1234 syn match texLigature '---' conceal cchar=—
Bram Moolenaar4b22cdb2010-08-02 22:12:46 +02001235 endif
Bram Moolenaar611df5b2010-07-26 22:51:56 +02001236 endif
Bram Moolenaarb2c03502010-07-02 20:20:09 +02001237endif
1238
1239" ---------------------------------------------------------------------
Bram Moolenaar071d4272004-06-13 20:20:40 +00001240" LaTeX synchronization: {{{1
1241syn sync maxlines=200
1242syn sync minlines=50
1243
1244syn sync match texSyncStop groupthere NONE "%stopzone\>"
1245
1246" Synchronization: {{{1
1247" The $..$ and $$..$$ make for impossible sync patterns
1248" (one can't tell if a "$$" starts or stops a math zone by itself)
1249" The following grouptheres coupled with minlines above
1250" help improve the odds of good syncing.
Bram Moolenaare2719092015-01-10 15:09:25 +01001251if !exists("g:tex_no_math")
Bram Moolenaar071d4272004-06-13 20:20:40 +00001252 syn sync match texSyncMathZoneA groupthere NONE "\\end{abstract}"
1253 syn sync match texSyncMathZoneA groupthere NONE "\\end{center}"
1254 syn sync match texSyncMathZoneA groupthere NONE "\\end{description}"
1255 syn sync match texSyncMathZoneA groupthere NONE "\\end{enumerate}"
1256 syn sync match texSyncMathZoneA groupthere NONE "\\end{itemize}"
1257 syn sync match texSyncMathZoneA groupthere NONE "\\end{table}"
1258 syn sync match texSyncMathZoneA groupthere NONE "\\end{tabular}"
1259 syn sync match texSyncMathZoneA groupthere NONE "\\\(sub\)*section\>"
1260endif
1261
Bram Moolenaarb2c03502010-07-02 20:20:09 +02001262" ---------------------------------------------------------------------
Bram Moolenaar071d4272004-06-13 20:20:40 +00001263" Highlighting: {{{1
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001264
1265" Define the default highlighting. {{{1
1266if !exists("skip_tex_syntax_inits")
1267
Bram Moolenaar071d4272004-06-13 20:20:40 +00001268 " TeX highlighting groups which should share similar highlighting
Bram Moolenaar6e932462014-09-09 18:48:09 +02001269 if !exists("g:tex_no_error")
Bram Moolenaar543b7ef2013-06-01 14:50:56 +02001270 if !exists("g:tex_no_math")
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001271 hi def link texBadMath texError
Bram Moolenaarce001a32022-04-27 15:25:03 +01001272 hi def link texBadPar texBadMath
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001273 hi def link texMathDelimBad texError
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001274 hi def link texMathError texError
Bram Moolenaar071d4272004-06-13 20:20:40 +00001275 if !b:tex_stylish
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001276 hi def link texOnlyMath texError
Bram Moolenaar071d4272004-06-13 20:20:40 +00001277 endif
1278 endif
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001279 hi def link texError Error
Bram Moolenaar071d4272004-06-13 20:20:40 +00001280 endif
1281
Bram Moolenaard38b0552012-04-25 19:07:41 +02001282 hi texBoldStyle gui=bold cterm=bold
1283 hi texItalStyle gui=italic cterm=italic
1284 hi texBoldItalStyle gui=bold,italic cterm=bold,italic
1285 hi texItalBoldStyle gui=bold,italic cterm=bold,italic
Bram Moolenaar723dd942019-04-04 13:11:03 +02001286 hi def link texEmphStyle texItalStyle
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001287 hi def link texCite texRefZone
1288 hi def link texDefCmd texDef
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001289 hi def link texDefName texDef
1290 hi def link texDocType texCmdName
1291 hi def link texDocTypeArgs texCmdArgs
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001292 hi def link texInputFileOpt texCmdArgs
1293 hi def link texInputCurlies texDelimiter
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001294 hi def link texLigature texSpecialChar
Bram Moolenaare2719092015-01-10 15:09:25 +01001295 if !exists("g:tex_no_math")
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001296 hi def link texMathDelimSet1 texMathDelim
1297 hi def link texMathDelimSet2 texMathDelim
1298 hi def link texMathDelimKey texMathDelim
1299 hi def link texMathMatcher texMath
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001300 hi def link texAccent texStatement
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001301 hi def link texGreek texStatement
1302 hi def link texSuperscript texStatement
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001303 hi def link texSubscript texStatement
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001304 hi def link texSuperscripts texSuperscript
1305 hi def link texSubscripts texSubscript
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001306 hi def link texMathSymbol texStatement
1307 hi def link texMathZoneV texMath
1308 hi def link texMathZoneW texMath
1309 hi def link texMathZoneX texMath
1310 hi def link texMathZoneY texMath
1311 hi def link texMathZoneV texMath
1312 hi def link texMathZoneZ texMath
Bram Moolenaar071d4272004-06-13 20:20:40 +00001313 endif
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001314 hi def link texBeginEnd texCmdName
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001315 hi def link texBeginEndName texSection
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001316 hi def link texSpaceCode texStatement
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001317 hi def link texStyleStatement texStatement
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001318 hi def link texTypeSize texType
1319 hi def link texTypeStyle texType
Bram Moolenaar071d4272004-06-13 20:20:40 +00001320
1321 " Basic TeX highlighting groups
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001322 hi def link texCmdArgs Number
1323 hi def link texCmdName Statement
1324 hi def link texComment Comment
1325 hi def link texDef Statement
1326 hi def link texDefParm Special
1327 hi def link texDelimiter Delimiter
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001328 hi def link texInput Special
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001329 hi def link texInputFile Special
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001330 hi def link texLength Number
1331 hi def link texMath Special
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001332 hi def link texMathDelim Statement
1333 hi def link texMathOper Operator
amarakon8e6b5032024-11-09 18:59:31 +01001334 hi def link texMathNumber Number
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001335 hi def link texNewCmd Statement
1336 hi def link texNewEnv Statement
1337 hi def link texOption Number
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001338 hi def link texRefZone Special
1339 hi def link texSection PreCondit
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001340 hi def link texSpaceCodeChar Special
Bram Moolenaar6d5ad4c2016-10-27 17:00:16 +02001341 hi def link texSpecialChar SpecialChar
1342 hi def link texStatement Statement
Bram Moolenaarf37506f2016-08-31 22:22:10 +02001343 hi def link texString String
1344 hi def link texTodo Todo
1345 hi def link texType Type
1346 hi def link texZone PreCondit
Bram Moolenaar071d4272004-06-13 20:20:40 +00001347
Bram Moolenaar071d4272004-06-13 20:20:40 +00001348endif
1349
Bram Moolenaar15146672011-10-20 22:22:38 +02001350" Cleanup: {{{1
Bram Moolenaara0f849e2015-10-30 14:37:44 +01001351delc TexFold
Bram Moolenaar81af9252010-12-10 20:35:50 +01001352unlet s:extfname
Bram Moolenaar071d4272004-06-13 20:20:40 +00001353let b:current_syntax = "tex"
Bram Moolenaar15146672011-10-20 22:22:38 +02001354let &cpo = s:keepcpo
1355unlet s:keepcpo
Bram Moolenaare90ee312010-08-05 22:08:47 +02001356" vim: ts=8 fdm=marker