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