codekingpro/portable-devtools
115k
1" Vim syntax file2" Language: TeX3" Maintainer: This runtime file is looking for a new maintainer.4" Former Maintainer: Charles E. Campbell5" Last Change: Apr 22, 20226" 2024 Feb 19 by Vim Project: announce adoption7" 2025 Jan 18 by Vim Project: add texEmphStyle to texMatchGroup, #162288" 2025 Feb 08 by Vim Project: improve macro option, \providecommand,9" \newcommand and \newenvironment #1654310" 2025 Sep 29 by Vim Project: add amsmath support #1843311" 2025 Oct 06 by Vim Project: link texBoldStyle to Bold, etc #1850512" Version: 12113" Former URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TEX14"15" Notes: {{{116"17" 1. If you have a \begin{verbatim} that appears to overrun its boundaries,18" use %stopzone.19"20" 2. Run-on equations ($..$ and $$..$$, particularly) can also be stopped21" by suitable use of %stopzone.22"23" 3. If you have a slow computer, you may wish to modify24"25" syn sync maxlines=20026" syn sync minlines=5027"28" to values that are more to your liking.29"30" 4. There is no match-syncing for $...$ and $$...$$; hence large31" equation blocks constructed that way may exhibit syncing problems.32" (there's no difference between begin/end patterns)33"34" 5. If you have the variable "g:tex_no_error" defined then none of the35" lexical error-checking will be done.36"37" ie. let g:tex_no_error=138"39" 6. Please see :help latex-syntax for information on40" syntax folding :help tex-folding41" spell checking :help tex-nospell42" commands and mathzones :help tex-runon43" new command highlighting :help tex-morecommands44" error highlighting :help tex-error45" new math groups :help tex-math46" new styles :help tex-style47" using conceal mode :help tex-conceal48 49" Version Clears: {{{150" quit when a syntax file was already loaded51if exists("b:current_syntax")52 finish53endif54let s:keepcpo= &cpo55set cpo&vim56scriptencoding utf-857 58" by default, enable all region-based highlighting59let s:tex_fast= "bcmMprsSvV"60if exists("g:tex_fast")61 if type(g:tex_fast) != 162 " g:tex_fast exists and is not a string, so63 " turn off all optional region-based highighting64 let s:tex_fast= ""65 else66 let s:tex_fast= g:tex_fast67 endif68endif69 70" let user determine which classes of concealment will be supported71" a=accents/ligatures d=delimiters m=math symbols g=Greek s=superscripts/subscripts72if !exists("g:tex_conceal")73 let s:tex_conceal= 'abdmgsS'74else75 let s:tex_conceal= g:tex_conceal76endif77if !exists("g:tex_superscripts")78 let s:tex_superscripts= '[0-9a-zA-W.,:;+-<>/()=]'79else80 let s:tex_superscripts= g:tex_superscripts81endif82if !exists("g:tex_subscripts")83 let s:tex_subscripts= '[0-9aehijklmnoprstuvx,+-/().]'84else85 let s:tex_subscripts= g:tex_subscripts86endif87 88" Determine whether or not to use "*.sty" mode {{{189" The user may override the normal determination by setting90" g:tex_stylish to 1 (for "*.sty" mode)91" or to 0 else (normal "*.tex" mode)92" or on a buffer-by-buffer basis with b:tex_stylish93let s:extfname=expand("%:e")94if exists("g:tex_stylish")95 let b:tex_stylish= g:tex_stylish96elseif !exists("b:tex_stylish")97 if s:extfname == "sty" || s:extfname == "cls" || s:extfname == "clo" || s:extfname == "dtx" || s:extfname == "ltx"98 let b:tex_stylish= 199 else100 let b:tex_stylish= 0101 endif102endif103 104" handle folding {{{1105if !exists("g:tex_fold_enabled")106 let s:tex_fold_enabled= 0107elseif g:tex_fold_enabled && !has("folding")108 let s:tex_fold_enabled= 0109 echomsg "Ignoring g:tex_fold_enabled=".g:tex_fold_enabled."; need to re-compile vim for +fold support"110else111 let s:tex_fold_enabled= 1112endif113if s:tex_fold_enabled && &fdm == "manual"114 setl fdm=syntax115endif116if s:tex_fold_enabled && has("folding")117 com! -nargs=* TexFold <args> fold118else119 com! -nargs=* TexFold <args>120endif121 122" (La)TeX keywords: uses the characters 0-9,a-z,A-Z,192-255 only... {{{1123" but _ is the only one that causes problems.124" One may override this iskeyword setting by providing125" g:tex_isk126if exists("g:tex_isk")127 if b:tex_stylish && g:tex_isk !~ '@'128 let b:tex_isk= '@,'.g:tex_isk129 else130 let b:tex_isk= g:tex_isk131 endif132elseif b:tex_stylish133 let b:tex_isk="@,48-57,a-z,A-Z,192-255"134else135 let b:tex_isk="48-57,a-z,A-Z,192-255"136endif137if (v:version == 704 && has("patch-7.4.1142")) || v:version > 704138 exe "syn iskeyword ".b:tex_isk139else140 exe "setl isk=".b:tex_isk141endif142if exists("g:tex_no_error") && g:tex_no_error143 let s:tex_no_error= 1144else145 let s:tex_no_error= 0146endif147if exists("g:tex_comment_nospell") && g:tex_comment_nospell148 let s:tex_comment_nospell= 1149else150 let s:tex_comment_nospell= 0151endif152if exists("g:tex_nospell") && g:tex_nospell153 let s:tex_nospell = 1154else155 let s:tex_nospell = 0156endif157if exists("g:tex_matchcheck")158 let s:tex_matchcheck= g:tex_matchcheck159else160 let s:tex_matchcheck= '[({[]'161endif162if exists("g:tex_excludematcher")163 let s:tex_excludematcher= g:tex_excludematcher164else165 let s:tex_excludematcher= 0166endif167 168" Clusters: {{{1169" --------170syn cluster texCmdGroup contains=texCmdBody,texComment,texDefParm,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texBeginEnd,texBeginEndName,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,@texMathZones171if !s:tex_no_error172 syn cluster texCmdGroup add=texMathError173endif174syn cluster texEnvGroup contains=texDefParm,texMatcher,texMathDelim,texSpecialChar,texStatement175syn 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,texNoSpell176syn 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,texNoSpell177syn 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,texNoSpell178if !s:tex_excludematcher179 syn cluster texBoldGroup add=texMatcher180 syn cluster texItalGroup add=texMatcher181endif182if !s:tex_nospell183 if !s:tex_no_error184 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,@Spell185 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,@Spell186 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,@Spell187 else188 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,@Spell189 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,@Spell190 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,@Spell191 endif192else193 if !s:tex_no_error194 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,texOption195 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,texOption196 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,texStyleMatcher197 else198 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,texOption199 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,texOption200 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,texStyleMatcher201 endif202endif203syn 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,texMathZoneZ204syn cluster texRefGroup contains=texMatcher,texComment,texDelimiter205if !exists("g:tex_no_math")206 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,texMathZoneZ207 syn cluster texMathZones contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ208 syn cluster texMatchGroup add=@texMathZones209 syn cluster texMathDelimGroup contains=texMathDelimBad,texMathDelimKey,texMathDelimSet1,texMathDelimSet2210 syn cluster texMathMatchGroup contains=@texMathZones,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathMatcher,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone211 syn cluster texMathZoneGroup contains=texBadPar,texComment,texDelimiter,texLength,texMathDelim,texMathMatcher,texMathOper,texMathSymbol,texMathText,texRefZone,texSpecialChar,texStatement,texTypeSize,texTypeStyle212 if !s:tex_no_error213 syn cluster texMathMatchGroup add=texMathError214 syn cluster texMathZoneGroup add=texMathError215 endif216 syn cluster texMathZoneGroup add=@NoSpell217 " following used in the \part \chapter \section \subsection \subsubsection218 " \paragraph \subparagraph \author \title highlighting219 syn cluster texDocGroup contains=texPartZone,@texPartGroup220 syn cluster texPartGroup contains=texChapterZone,texSectionZone,texParaZone221 syn cluster texChapterGroup contains=texSectionZone,texParaZone222 syn cluster texSectionGroup contains=texSubSectionZone,texParaZone223 syn cluster texSubSectionGroup contains=texSubSubSectionZone,texParaZone224 syn cluster texSubSubSectionGroup contains=texParaZone225 syn cluster texParaGroup contains=texSubParaZone226 if has("conceal") && &enc == 'utf-8'227 syn cluster texMathZoneGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol228 syn cluster texMathMatchGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol229 endif230endif231 232" Try to flag {}, [], and () mismatches: {{{1233if s:tex_fast =~# 'm'234 if !s:tex_no_error235 if s:tex_matchcheck =~ '{'236 syn region texMatcher matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup,texError237 syn region texMatcherNM matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup,texError238 endif239 if s:tex_matchcheck =~ '\['240 syn region texMatcher matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchGroup,texError,@NoSpell241 syn region texMatcherNM matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchNMGroup,texError,@NoSpell242 endif243 else244 if s:tex_matchcheck =~ '{'245 syn region texMatcher matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup246 syn region texMatcherNM matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup247 endif248 if s:tex_matchcheck =~ '\['249 syn region texMatcher matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchGroup250 syn region texMatcherNM matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchNMGroup251 endif252 endif253 if s:tex_matchcheck =~ '('254 if !s:tex_nospell255 syn region texParen start="(" end=")" transparent contains=@texMatchGroup,@Spell256 else257 syn region texParen start="(" end=")" transparent contains=@texMatchGroup258 endif259 endif260endif261if !s:tex_no_error262 if s:tex_matchcheck =~ '('263 syn match texError "[}\]]"264 else265 syn match texError "[}\])]"266 endif267endif268if s:tex_fast =~# 'M'269 if !exists("g:tex_no_math")270 if !s:tex_no_error271 syn match texMathError "}" contained272 endif273 syn region texMathMatcher matchgroup=texDelimiter start="{" skip="\%(\\\\\)*\\}" end="}" end="%stopzone\>" contained contains=@texMathMatchGroup274 endif275endif276 277" TeX/LaTeX keywords: {{{1278" Instead of trying to be All Knowing, I just match \..alphameric..279" Note that *.tex files may not have "@" in their \commands280if exists("g:tex_tex") || b:tex_stylish281 syn match texStatement "\\[a-zA-Z@]\+"282else283 syn match texStatement "\\\a\+"284 if !s:tex_no_error285 syn match texError "\\\a*@[a-zA-Z@]*"286 endif287endif288 289" TeX/LaTeX delimiters: {{{1290syn match texDelimiter "&"291syn match texDelimiter "\\\\"292 293" Tex/Latex Options: {{{1294syn match texOption "[^\\]\zs#[1-9]\|^#[1-9]"295 296" texAccent (tnx to Karim Belabas) avoids annoying highlighting for accents: {{{1297if b:tex_stylish298 syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1299 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1300else301 syn match texAccent "\\[bcdvuH]\A"me=e-1302 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)\A"me=e-1303endif304syn match texAccent "\\[bcdvuH]$"305syn match texAccent +\\[=^.\~"`']+306syn match texAccent +\\['=t'.c^ud"vb~Hr]{\a}+307syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)$"308 309 310" \begin{}/\end{} section markers: {{{1311syn match texBeginEnd "\\begin\>\|\\end\>" nextgroup=texBeginEndName312if s:tex_fast =~# 'm'313 syn region texBeginEndName matchgroup=texDelimiter start="{" end="}" contained nextgroup=texBeginEndModifier contains=texComment314 syn region texBeginEndModifier matchgroup=texDelimiter start="\[" end="]" contained contains=texComment,@texMathZones,@NoSpell315endif316 317" \documentclass, \documentstyle, \usepackage: {{{1318syn match texDocType "\\documentclass\>\|\\documentstyle\>\|\\usepackage\>" nextgroup=texBeginEndName,texDocTypeArgs319if s:tex_fast =~# 'm'320 syn region texDocTypeArgs matchgroup=texDelimiter start="\[" end="]" contained nextgroup=texBeginEndName contains=texComment,@NoSpell321endif322 323" Preamble syntax-based folding support: {{{1324if s:tex_fold_enabled && has("folding")325 syn region texPreamble transparent fold start='\zs\\documentclass\>' end='\ze\\begin{document}' contains=texStyle,@texPreambleMatchGroup326endif327 328" TeX input: {{{1329syn match texInput "\\input\s\+[a-zA-Z/.0-9_^]\+"hs=s+7 contains=texStatement330syn match texInputFile "\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt331syn match texInputFile "\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt332syn match texInputCurlies "[{}]" contained333if s:tex_fast =~# 'm'334 syn region texInputFileOpt matchgroup=texDelimiter start="\[" end="\]" contained contains=texComment335endif336 337" Type Styles (LaTeX 2.09): {{{1338syn match texTypeStyle "\\rm\>"339syn match texTypeStyle "\\em\>"340syn match texTypeStyle "\\bf\>"341syn match texTypeStyle "\\it\>"342syn match texTypeStyle "\\sl\>"343syn match texTypeStyle "\\sf\>"344syn match texTypeStyle "\\sc\>"345syn match texTypeStyle "\\tt\>"346 347" Type Styles: attributes, commands, families, etc (LaTeX2E): {{{1348if s:tex_conceal !~# 'b'349 syn match texTypeStyle "\\textbf\>"350 syn match texTypeStyle "\\textit\>"351 syn match texTypeStyle "\\emph\>"352endif353syn match texTypeStyle "\\textmd\>"354syn match texTypeStyle "\\textrm\>"355 356syn match texTypeStyle "\\mathbf\>"357syn match texTypeStyle "\\mathcal\>"358syn match texTypeStyle "\\mathit\>"359syn match texTypeStyle "\\mathnormal\>"360syn match texTypeStyle "\\mathrm\>"361syn match texTypeStyle "\\mathsf\>"362syn match texTypeStyle "\\mathtt\>"363 364syn match texTypeStyle "\\rmfamily\>"365syn match texTypeStyle "\\sffamily\>"366syn match texTypeStyle "\\ttfamily\>"367 368syn match texTypeStyle "\\itshape\>"369syn match texTypeStyle "\\scshape\>"370syn match texTypeStyle "\\slshape\>"371syn match texTypeStyle "\\upshape\>"372 373syn match texTypeStyle "\\bfseries\>"374syn match texTypeStyle "\\mdseries\>"375 376" Some type sizes: {{{1377syn match texTypeSize "\\tiny\>"378syn match texTypeSize "\\scriptsize\>"379syn match texTypeSize "\\footnotesize\>"380syn match texTypeSize "\\small\>"381syn match texTypeSize "\\normalsize\>"382syn match texTypeSize "\\large\>"383syn match texTypeSize "\\Large\>"384syn match texTypeSize "\\LARGE\>"385syn match texTypeSize "\\huge\>"386syn match texTypeSize "\\Huge\>"387 388" Spacecodes (TeX'isms): {{{1389" \mathcode`\^^@="2201 \delcode`\(="028300 \sfcode`\)=0 \uccode`X=`X \lccode`x=`x390syn match texSpaceCode "\\\(math\|cat\|del\|lc\|sf\|uc\)code`"me=e-1 nextgroup=texSpaceCodeChar391syn match texSpaceCodeChar "`\\\=.\(\^.\)\==\(\d\|\"\x\{1,6}\|`.\)" contained392 393" Sections, subsections, etc: {{{1394if s:tex_fast =~# 'p'395 if !s:tex_nospell396 TexFold syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup,@Spell397 TexFold syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup,@Spell398 TexFold syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup,@Spell399 TexFold syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup,@Spell400 TexFold syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup,@Spell401 TexFold syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSubSectionGroup,@Spell402 TexFold syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texParaGroup,@Spell403 TexFold syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@Spell404 TexFold syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup,@Spell405 TexFold syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup,@Spell406 else407 TexFold syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup408 TexFold syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup409 TexFold syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup410 TexFold syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup411 TexFold syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup412 TexFold syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSubSectionGroup413 TexFold syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texParaGroup414 TexFold syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup415 TexFold syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup416 TexFold syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup417 endif418endif419 420" particular support for bold and italic {{{1421if s:tex_fast =~# 'b'422 if s:tex_conceal =~# 'b'423 if !exists("g:tex_nospell") || !g:tex_nospell424 syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell425 syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell426 syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell427 syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell428 syn region texEmphStyle matchgroup=texTypeStyle start="\\emph\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell429 syn region texEmphStyle matchgroup=texTypeStyle start="\\texts[cfl]\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell430 syn region texEmphStyle matchgroup=texTypeStyle start="\\textup\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell431 syn region texEmphStyle matchgroup=texTypeStyle start="\\texttt\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell432 else433 syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup434 syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup435 syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup436 syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup437 syn region texEmphStyle matchgroup=texTypeStyle start="\\emph\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup438 syn region texEmphStyle matchgroup=texTypeStyle start="\\texts[cfl]\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup439 syn region texEmphStyle matchgroup=texTypeStyle start="\\textup\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup440 syn region texEmphStyle matchgroup=texTypeStyle start="\\texttt\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup441 endif442 endif443endif444 445" Bad Math (mismatched): {{{1446if !exists("g:tex_no_math") && !s:tex_no_error447 syn match texBadMath "\\end\s*{\s*\(array\|[bBpvV]matrix\|split\|smallmatrix\)\s*}"448 syn match texBadMath "\\end\s*{\s*\(align\|alignat\|displaymath\|eqnarray\|equation\|flalign\|gather\|math\|multline\)\*\=\s*}"449 syn match texBadMath "\\[\])]"450 syn match texBadPar contained "\%(\\par\>\|^\s*\n.\)"451endif452 453" Math Zones: {{{1454if !exists("g:tex_no_math")455 " TexNewMathZone: function creates a mathzone with the given suffix and mathzone name. {{{2456 " Starred forms are created if starform is true. Starred457 " forms have syntax group and synchronization groups with a458 " "S" appended. Handles: cluster, syntax, sync, and highlighting.459 fun! TexNewMathZone(sfx,mathzone,starform)460 let grpname = "texMathZone".a:sfx461 let syncname = "texSyncMathZone".a:sfx462 if s:tex_fold_enabled463 let foldcmd= " fold"464 else465 let foldcmd= ""466 endif467 exe "syn cluster texMathZones add=".grpname468 if s:tex_fast =~# 'M'469 exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd470 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'471 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'472 endif473 exe 'hi def link '.grpname.' texMath'474 if a:starform475 let grpname = "texMathZone".a:sfx.'S'476 let syncname = "texSyncMathZone".a:sfx.'S'477 exe "syn cluster texMathZones add=".grpname478 if s:tex_fast =~# 'M'479 exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd480 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'481 exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'482 endif483 exe 'hi def link '.grpname.' texMath'484 endif485 endfun486 487 " Standard Math Zones: {{{2488 call TexNewMathZone("A","displaymath",1)489 call TexNewMathZone("B","eqnarray",1)490 call TexNewMathZone("C","equation",1)491 call TexNewMathZone("D","math",1)492 call TexNewMathZone("E","align",1)493 call TexNewMathZone("F","alignat",1)494 call TexNewMathZone("G","flalign",1)495 call TexNewMathZone("H","gather",1)496 call TexNewMathZone("I","multline",1)497 498 " Inline Math Zones: {{{2499 if s:tex_fast =~# 'M'500 if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~# 'd'501 syn region texMathZoneV matchgroup=texDelimiter start="\\(" matchgroup=texDelimiter end="\\)\|%stopzone\>" keepend concealends contains=@texMathZoneGroup502 syn region texMathZoneW matchgroup=texDelimiter start="\\\[" matchgroup=texDelimiter end="\\]\|%stopzone\>" keepend concealends contains=@texMathZoneGroup503 syn region texMathZoneX matchgroup=texDelimiter start="\$" skip="\\\\\|\\\$" matchgroup=texDelimiter end="\$" end="%stopzone\>" concealends contains=@texMathZoneGroup504 syn region texMathZoneY matchgroup=texDelimiter start="\$\$" matchgroup=texDelimiter end="\$\$" end="%stopzone\>" keepend concealends contains=@texMathZoneGroup505 else506 syn region texMathZoneV matchgroup=texDelimiter start="\\(" matchgroup=texDelimiter end="\\)\|%stopzone\>" keepend contains=@texMathZoneGroup507 syn region texMathZoneW matchgroup=texDelimiter start="\\\[" matchgroup=texDelimiter end="\\]\|%stopzone\>" keepend contains=@texMathZoneGroup508 syn region texMathZoneX matchgroup=texDelimiter start="\$" skip="\%(\\\\\)*\\\$" matchgroup=texDelimiter end="\$" end="%stopzone\>" contains=@texMathZoneGroup509 syn region texMathZoneY matchgroup=texDelimiter start="\$\$" matchgroup=texDelimiter end="\$\$" end="%stopzone\>" keepend contains=@texMathZoneGroup510 endif511 syn region texMathZoneZ matchgroup=texStatement start="\\ensuremath\s*{" matchgroup=texStatement end="}" end="%stopzone\>" contains=@texMathZoneGroup512 endif513 514 syn match texMathOper "[_^=]" contained515 516 " Text Inside Math Zones: {{{2517 if s:tex_fast =~# 'M'518 if !exists("g:tex_nospell") || !g:tex_nospell519 syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{' end='}' contains=@texFoldGroup,@Spell520 else521 syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{' end='}' contains=@texFoldGroup522 endif523 endif524 525 " \left..something.. and \right..something.. support: {{{2526 syn match texMathDelimBad contained "\S"527 if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~# 'm'528 syn match texMathDelim contained "\\left\["529 syn match texMathDelim contained "\\left\\{" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar={530 syn match texMathDelim contained "\\right\\}" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar=}531 let s:texMathDelimList=[532 \ ['<' , '<'] ,533 \ ['>' , '>'] ,534 \ ['(' , '('] ,535 \ [')' , ')'] ,536 \ ['\[' , '['] ,537 \ [']' , ']'] ,538 \ ['\\{' , '{'] ,539 \ ['\\}' , '}'] ,540 \ ['|' , '|'] ,541 \ ['\\|' , '‖'] ,542 \ ['\\backslash' , '\'] ,543 \ ['\\downarrow' , '↓'] ,544 \ ['\\Downarrow' , '⇓'] ,545 \ ['\\lbrace' , '['] ,546 \ ['\\lceil' , '⌈'] ,547 \ ['\\lfloor' , '⌊'] ,548 \ ['\\lgroup' , '⌊'] ,549 \ ['\\lmoustache' , '⎛'] ,550 \ ['\\rbrace' , ']'] ,551 \ ['\\rceil' , '⌉'] ,552 \ ['\\rfloor' , '⌋'] ,553 \ ['\\rgroup' , '⌋'] ,554 \ ['\\rmoustache' , '⎞'] ,555 \ ['\\uparrow' , '↑'] ,556 \ ['\\Uparrow' , '↑'] ,557 \ ['\\updownarrow', '↕'] ,558 \ ['\\Updownarrow', '⇕']]559 if &ambw == "double" || exists("g:tex_usedblwidth")560 let s:texMathDelimList= s:texMathDelimList + [561 \ ['\\langle' , '〈'] ,562 \ ['\\rangle' , '〉']]563 else564 let s:texMathDelimList= s:texMathDelimList + [565 \ ['\\langle' , '<'] ,566 \ ['\\rangle' , '>']]567 endif568 syn match texMathDelim '\\[bB]igg\=[lr]' contained nextgroup=texMathDelimBad569 for texmath in s:texMathDelimList570 exe "syn match texMathDelim '\\\\[bB]igg\\=[lr]\\=".texmath[0]."' contained conceal cchar=".texmath[1]571 endfor572 573 else574 syn match texMathDelim contained "\\\(left\|right\)\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad575 syn match texMathDelim contained "\\[bB]igg\=[lr]\=\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad576 syn match texMathDelimSet2 contained "\\" nextgroup=texMathDelimKey,texMathDelimBad577 syn match texMathDelimSet1 contained "[<>()[\]|/.]\|\\[{}|]"578 syn keyword texMathDelimKey contained backslash lceil lVert rgroup uparrow579 syn keyword texMathDelimKey contained downarrow lfloor rangle rmoustache Uparrow580 syn keyword texMathDelimKey contained Downarrow lgroup rbrace rvert updownarrow581 syn keyword texMathDelimKey contained langle lmoustache rceil rVert Updownarrow582 syn keyword texMathDelimKey contained lbrace lvert rfloor583 endif584 syn match texMathDelim contained "\\\(left\|right\)arrow\>\|\<\([aA]rrow\|brace\)\=vert\>"585 syn match texMathDelim contained "\\lefteqn\>"586endif587 588" Special TeX characters ( \$ \& \% \# \{ \} \_ \S \P ) : {{{1589syn match texSpecialChar "\\[$&%#{}_]"590if b:tex_stylish591 syn match texSpecialChar "\\[SP@][^a-zA-Z@]"me=e-1592else593 syn match texSpecialChar "\\[SP@]\A"me=e-1594endif595syn match texSpecialChar "\\\\"596if !exists("g:tex_no_math")597 syn match texOnlyMath "[_^]"598endif599syn match texSpecialChar "\^\^[0-9a-f]\{2}\|\^\^\S"600if s:tex_conceal !~# 'S'601 syn match texSpecialChar '\\glq\>' contained conceal cchar=‚602 syn match texSpecialChar '\\grq\>' contained conceal cchar=‘603 syn match texSpecialChar '\\glqq\>' contained conceal cchar=„604 syn match texSpecialChar '\\grqq\>' contained conceal cchar=“605 syn match texSpecialChar '\\hyp\>' contained conceal cchar=-606endif607 608" Comments: {{{1609" Normal TeX LaTeX : %....610" Documented TeX Format: ^^A... -and- leading %s (only)611if !s:tex_comment_nospell612 syn cluster texCommentGroup contains=texTodo,@Spell613else614 syn cluster texCommentGroup contains=texTodo,@NoSpell615endif616syn case ignore617syn keyword texTodo contained combak fixme todo xxx618syn case match619if s:extfname == "dtx"620 syn match texComment "\^\^A.*$" contains=@texCommentGroup621 syn match texComment "^%\+" contains=@texCommentGroup622else623 if s:tex_fold_enabled624 " allows syntax-folding of 2 or more contiguous comment lines625 " single-line comments are not folded626 syn match texComment "%.*$" contains=@texCommentGroup627 if s:tex_fast =~# 'c'628 TexFold syn region texComment start="^\zs\s*%.*\_s*%" skip="^\s*%" end='^\ze\s*[^%]' contains=@texCommentGroup629 TexFold syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell630 endif631 else632 syn match texComment "%.*$" contains=@texCommentGroup633 if s:tex_fast =~# 'c'634 syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell635 endif636 endif637endif638 639" %begin-include ... %end-include acts like a texDocZone for \include'd files. Permits spell checking, for example, in such files.640if !s:tex_nospell641 TexFold syn region texDocZone matchgroup=texSection start='^\s*%begin-include\>' end='^\s*%end-include\>' contains=@texFoldGroup,@texDocGroup,@Spell642else643 TexFold syn region texDocZone matchgroup=texSection start='^\s*%begin-include\>' end='^\s*%end-include\>' contains=@texFoldGroup,@texDocGroup644endif645 646" Separate lines used for verb` and verb# so that the end conditions {{{1647" will appropriately terminate.648" If g:tex_verbspell exists, then verbatim texZones will permit spellchecking there.649if s:tex_fast =~# 'v'650 if exists("g:tex_verbspell") && g:tex_verbspell651 syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>" contains=@Spell652 " listings package:653 if b:tex_stylish654 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>" contains=@Spell655 else656 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>" contains=@Spell657 endif658 else659 syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>"660 if b:tex_stylish661 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>"662 else663 syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>"664 endif665 endif666endif667 668" Tex Reference Zones: {{{1669if s:tex_fast =~# 'r'670 syn region texZone matchgroup=texStatement start="@samp{" end="}\|%stopzone\>" contains=@texRefGroup671 syn region texRefZone matchgroup=texStatement start="\\nocite{" end="}\|%stopzone\>" contains=@texRefGroup672 syn region texRefZone matchgroup=texStatement start="\\bibliography{" end="}\|%stopzone\>" contains=@texRefGroup673 syn region texRefZone matchgroup=texStatement start="\\label{" end="}\|%stopzone\>" contains=@texRefGroup674 syn region texRefZone matchgroup=texStatement start="\\\(page\|eq\)ref{" end="}\|%stopzone\>" contains=@texRefGroup675 syn region texRefZone matchgroup=texStatement start="\\v\=ref{" end="}\|%stopzone\>" contains=@texRefGroup676 syn region texRefOption contained matchgroup=texDelimiter start='\[' end=']' contains=@texRefGroup,texRefZone nextgroup=texRefOption,texCite677 syn region texCite contained matchgroup=texDelimiter start='{' end='}' contains=@texRefGroup,texRefZone,texCite678endif679syn match texRefZone '\\cite\%([tp]\*\=\)\=\>' nextgroup=texRefOption,texCite680 681" Handle (re)newcommand, providecommand, (re)newenvironment : {{{1682" EXAMPLE:683"684" The followings are valid (ignoring error due to redefinition):685"686" \newcommand{\foo}{body}687" \newcommand{\foo}[1]{#1}688" \newcommand{\foo}[1][def]{#1}689"690" The followings are ill-formed:691"692" \newcommand{\foo}{#1} ! Illegal parameter number in definition of \foo.693" \newcommand{\foo}[x]{…} ! Missing number, treated as zero.694" \newcommand{\foo}[10]{…} ! You already have nine parameters.695syn match texNewCmd "\\\%(\%(re\)\=new\|provide\)command\>\*\?" nextgroup=texCmdName skipwhite skipnl696if s:tex_fast =~# 'V'697 syn region texCmdName contained matchgroup=texDelimiter start="{"rs=s+1 end="}" nextgroup=texCmdArgs,texCmdBody skipwhite skipnl698 syn region texCmdArgs contained matchgroup=texDelimiter start="\["rs=s+1 end="]" nextgroup=texCmdDefaultPar,texCmdBody skipwhite skipnl699 syn region texCmdDefaultPar contained matchgroup=texDelimiter start="\["rs=s+1 end="]" nextgroup=texCmdBody skipwhite skipnl700 syn region texCmdBody contained matchgroup=texDelimiter start="{"rs=s+1 skip="\\\\\|\\[{}]" matchgroup=texDelimiter end="}" contains=@texCmdGroup701endif702" EXAMPLE:703"704" The followings are valid (ignoring error due to redefinition):705"706" \newenvironment{baz}{beg}{end}707" \newenvironment{baz}[1]{beg #1}{end}708" \newenvironment{baz}[1][default]{beg #1}{end}709"710" The followings are invalid:711"712" \newenvironment{baz}{#1}{…} ! Illegal parameter number in definition of \baz.713" \newenvironment{baz}[x]{…}{…} ! Missing number, treated as zero.714" \newenvironment{baz}[10]{…}{…} ! You already have nine parameters.715" \newenvironment{baz}[1]{…}{#1} ! Illegal parameter number in definition of \endbaz.716syn match texNewEnv "\\\%(re\)\=newenvironment\>\*\?" nextgroup=texEnvName skipwhite skipnl717if s:tex_fast =~# 'V'718 syn region texEnvName contained matchgroup=texDelimiter start="{"rs=s+1 end="}" nextgroup=texEnvArgs,texEnvBgn skipwhite skipnl719 syn region texEnvArgs contained matchgroup=texDelimiter start="\["rs=s+1 end="]" nextgroup=texEnvDefaultPar,texEnvBgn skipwhite skipnl720 syn region texEnvDefaultPar contained matchgroup=texDelimiter start="\["rs=s+1 end="]" nextgroup=texEnvBgn skipwhite skipnl721 syn region texEnvBgn contained matchgroup=texDelimiter start="{"rs=s+1 end="}" nextgroup=texEnvEnd skipwhite skipnl contains=@texEnvGroup722 syn region texEnvEnd contained matchgroup=texDelimiter start="{"rs=s+1 end="}" skipwhite skipnl contains=@texEnvGroup723endif724 725" Definitions/Commands: {{{1726syn match texDefCmd "\\def\>" nextgroup=texDefName skipwhite skipnl727if b:tex_stylish728 syn match texDefName contained "\\[a-zA-Z@]\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl729 syn match texDefName contained "\\[^a-zA-Z@]" nextgroup=texDefParms,texCmdBody skipwhite skipnl730else731 syn match texDefName contained "\\\a\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl732 syn match texDefName contained "\\\A" nextgroup=texDefParms,texCmdBody skipwhite skipnl733endif734syn match texDefParms contained "#[^{]*" contains=texDefParm nextgroup=texCmdBody skipwhite skipnl735syn match texDefParm contained "#[1-9]"736 737" TeX Lengths: {{{1738syn match texLength "\<\d\+\([.,]\d\+\)\=\s*\(true\)\=\s*\(bp\|cc\|cm\|dd\|em\|ex\|in\|mm\|pc\|pt\|sp\)\>"739 740" TeX String Delimiters: {{{1741syn match texString "\(``\|''\|,,\)"742 743" makeatletter -- makeatother sections744if !s:tex_no_error745 if s:tex_fast =~# 'S'746 syn region texStyle matchgroup=texStatement start='\\makeatletter' end='\\makeatother' contains=@texStyleGroup contained747 endif748 syn match texStyleStatement "\\[a-zA-Z@]\+" contained749 if s:tex_fast =~# 'S'750 syn region texStyleMatcher matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texStyleGroup,texError contained751 syn region texStyleMatcher matchgroup=texDelimiter start="\[" end="]" contains=@texStyleGroup,texError contained752 endif753endif754 755" Conceal mode support (supports set cole=2) {{{1756if has("conceal") && &enc == 'utf-8'757 758 " Math Symbols {{{2759 " (many of these symbols were contributed by Björn Winckler)760 if s:tex_conceal =~# 'm'761 let s:texMathList=[762 \ ['|' , '‖'],763 \ ['aleph' , 'ℵ'],764 \ ['amalg' , '∐'],765 \ ['angle' , '∠'],766 \ ['approx' , '≈'],767 \ ['ast' , '∗'],768 \ ['asymp' , '≍'],769 \ ['backslash' , '∖'],770 \ ['bigcap' , '∩'],771 \ ['bigcirc' , '○'],772 \ ['bigcup' , '∪'],773 \ ['bigodot' , '⊙'],774 \ ['bigoplus' , '⊕'],775 \ ['bigotimes' , '⊗'],776 \ ['bigsqcup' , '⊔'],777 \ ['bigtriangledown', '∇'],778 \ ['bigtriangleup' , '∆'],779 \ ['bigvee' , '⋁'],780 \ ['bigwedge' , '⋀'],781 \ ['bot' , '⊥'],782 \ ['bowtie' , '⋈'],783 \ ['bullet' , '•'],784 \ ['cap' , '∩'],785 \ ['cdot' , '·'],786 \ ['cdots' , '⋯'],787 \ ['circ' , '∘'],788 \ ['clubsuit' , '♣'],789 \ ['cong' , '≅'],790 \ ['coprod' , '∐'],791 \ ['copyright' , '©'],792 \ ['cup' , '∪'],793 \ ['dagger' , '†'],794 \ ['dashv' , '⊣'],795 \ ['ddagger' , '‡'],796 \ ['ddots' , '⋱'],797 \ ['diamond' , '⋄'],798 \ ['diamondsuit' , '♢'],799 \ ['div' , '÷'],800 \ ['doteq' , '≐'],801 \ ['dots' , '…'],802 \ ['downarrow' , '↓'],803 \ ['Downarrow' , '⇓'],804 \ ['ell' , 'ℓ'],805 \ ['emptyset' , '∅'],806 \ ['equiv' , '≡'],807 \ ['exists' , '∃'],808 \ ['flat' , '♭'],809 \ ['forall' , '∀'],810 \ ['frown' , '⁔'],811 \ ['ge' , '≥'],812 \ ['geq' , '≥'],813 \ ['gets' , '←'],814 \ ['gg' , '⟫'],815 \ ['hbar' , 'ℏ'],816 \ ['heartsuit' , '♡'],817 \ ['hookleftarrow' , '↩'],818 \ ['hookrightarrow' , '↪'],819 \ ['iff' , '⇔'],820 \ ['Im' , 'ℑ'],821 \ ['imath' , 'ɩ'],822 \ ['in' , '∈'],823 \ ['infty' , '∞'],824 \ ['int' , '∫'],825 \ ['jmath' , '𝚥'],826 \ ['land' , '∧'],827 \ ['lceil' , '⌈'],828 \ ['ldots' , '…'],829 \ ['le' , '≤'],830 \ ['left|' , '|'],831 \ ['left\\|' , '‖'],832 \ ['left(' , '('],833 \ ['left\[' , '['],834 \ ['left\\{' , '{'],835 \ ['leftarrow' , '←'],836 \ ['Leftarrow' , '⇐'],837 \ ['leftharpoondown', '↽'],838 \ ['leftharpoonup' , '↼'],839 \ ['leftrightarrow' , '↔'],840 \ ['Leftrightarrow' , '⇔'],841 \ ['leq' , '≤'],842 \ ['leq' , '≤'],843 \ ['lfloor' , '⌊'],844 \ ['ll' , '≪'],845 \ ['lmoustache' , '╭'],846 \ ['lor' , '∨'],847 \ ['mapsto' , '↦'],848 \ ['mid' , '∣'],849 \ ['models' , '╞'],850 \ ['mp' , '∓'],851 \ ['nabla' , '∇'],852 \ ['natural' , '♮'],853 \ ['ne' , '≠'],854 \ ['nearrow' , '↗'],855 \ ['neg' , '¬'],856 \ ['neq' , '≠'],857 \ ['ni' , '∋'],858 \ ['notin' , '∉'],859 \ ['nwarrow' , '↖'],860 \ ['odot' , '⊙'],861 \ ['oint' , '∮'],862 \ ['ominus' , '⊖'],863 \ ['oplus' , '⊕'],864 \ ['oslash' , '⊘'],865 \ ['otimes' , '⊗'],866 \ ['owns' , '∋'],867 \ ['P' , '¶'],868 \ ['parallel' , '║'],869 \ ['partial' , '∂'],870 \ ['perp' , '⊥'],871 \ ['pm' , '±'],872 \ ['prec' , '≺'],873 \ ['preceq' , '⪯'],874 \ ['prime' , '′'],875 \ ['prod' , '∏'],876 \ ['propto' , '∝'],877 \ ['rceil' , '⌉'],878 \ ['Re' , 'ℜ'],879 \ ['quad' , ' '],880 \ ['qquad' , ' '],881 \ ['rfloor' , '⌋'],882 \ ['right|' , '|'],883 \ ['right\\|' , '‖'],884 \ ['right)' , ')'],885 \ ['right]' , ']'],886 \ ['right\\}' , '}'],887 \ ['rightarrow' , '→'],888 \ ['Rightarrow' , '⇒'],889 \ ['rightleftharpoons', '⇌'],890 \ ['rmoustache' , '╮'],891 \ ['S' , '§'],892 \ ['searrow' , '↘'],893 \ ['setminus' , '∖'],894 \ ['sharp' , '♯'],895 \ ['sim' , '∼'],896 \ ['simeq' , '⋍'],897 \ ['smile' , '‿'],898 \ ['spadesuit' , '♠'],899 \ ['sqcap' , '⊓'],900 \ ['sqcup' , '⊔'],901 \ ['sqsubset' , '⊏'],902 \ ['sqsubseteq' , '⊑'],903 \ ['sqsupset' , '⊐'],904 \ ['sqsupseteq' , '⊒'],905 \ ['star' , '✫'],906 \ ['subset' , '⊂'],907 \ ['subseteq' , '⊆'],908 \ ['succ' , '≻'],909 \ ['succeq' , '⪰'],910 \ ['sum' , '∑'],911 \ ['supset' , '⊃'],912 \ ['supseteq' , '⊇'],913 \ ['surd' , '√'],914 \ ['swarrow' , '↙'],915 \ ['times' , '×'],916 \ ['to' , '→'],917 \ ['top' , '⊤'],918 \ ['triangle' , '∆'],919 \ ['triangleleft' , '⊲'],920 \ ['triangleright' , '⊳'],921 \ ['uparrow' , '↑'],922 \ ['Uparrow' , '⇑'],923 \ ['updownarrow' , '↕'],924 \ ['Updownarrow' , '⇕'],925 \ ['vdash' , '⊢'],926 \ ['vdots' , '⋮'],927 \ ['vee' , '∨'],928 \ ['wedge' , '∧'],929 \ ['wp' , '℘'],930 \ ['wr' , '≀']]931 if &ambw == "double" || exists("g:tex_usedblwidth")932 let s:texMathList= s:texMathList + [933 \ ['right\\rangle' , '〉'],934 \ ['left\\langle' , '〈']]935 else936 let s:texMathList= s:texMathList + [937 \ ['right\\rangle' , '>'],938 \ ['left\\langle' , '<']]939 endif940 for texmath in s:texMathList941 if texmath[0] =~# '\w$'942 exe "syn match texMathSymbol '\\\\".texmath[0]."\\>' contained conceal cchar=".texmath[1]943 else944 exe "syn match texMathSymbol '\\\\".texmath[0]."' contained conceal cchar=".texmath[1]945 endif946 endfor947 948 if &ambw == "double"949 syn match texMathSymbol '\\gg\>' contained conceal cchar=≫950 syn match texMathSymbol '\\ll\>' contained conceal cchar=≪951 else952 syn match texMathSymbol '\\gg\>' contained conceal cchar=⟫953 syn match texMathSymbol '\\ll\>' contained conceal cchar=⟪954 endif955 956 syn match texMathSymbol '\\hat{a}' contained conceal cchar=â957 syn match texMathSymbol '\\hat{A}' contained conceal cchar=Â958 syn match texMathSymbol '\\hat{c}' contained conceal cchar=ĉ959 syn match texMathSymbol '\\hat{C}' contained conceal cchar=Ĉ960 syn match texMathSymbol '\\hat{e}' contained conceal cchar=ê961 syn match texMathSymbol '\\hat{E}' contained conceal cchar=Ê962 syn match texMathSymbol '\\hat{g}' contained conceal cchar=ĝ963 syn match texMathSymbol '\\hat{G}' contained conceal cchar=Ĝ964 syn match texMathSymbol '\\hat{i}' contained conceal cchar=î965 syn match texMathSymbol '\\hat{I}' contained conceal cchar=Î966 syn match texMathSymbol '\\hat{o}' contained conceal cchar=ô967 syn match texMathSymbol '\\hat{O}' contained conceal cchar=Ô968 syn match texMathSymbol '\\hat{s}' contained conceal cchar=ŝ969 syn match texMathSymbol '\\hat{S}' contained conceal cchar=Ŝ970 syn match texMathSymbol '\\hat{u}' contained conceal cchar=û971 syn match texMathSymbol '\\hat{U}' contained conceal cchar=Û972 syn match texMathSymbol '\\hat{w}' contained conceal cchar=ŵ973 syn match texMathSymbol '\\hat{W}' contained conceal cchar=Ŵ974 syn match texMathSymbol '\\hat{y}' contained conceal cchar=ŷ975 syn match texMathSymbol '\\hat{Y}' contained conceal cchar=Ŷ976" syn match texMathSymbol '\\bar{a}' contained conceal cchar=a̅977 978 syn match texMathSymbol '\\dot{B}' contained conceal cchar=Ḃ979 syn match texMathSymbol '\\dot{b}' contained conceal cchar=ḃ980 syn match texMathSymbol '\\dot{D}' contained conceal cchar=Ḋ981 syn match texMathSymbol '\\dot{d}' contained conceal cchar=ḋ982 syn match texMathSymbol '\\dot{F}' contained conceal cchar=Ḟ983 syn match texMathSymbol '\\dot{f}' contained conceal cchar=ḟ984 syn match texMathSymbol '\\dot{H}' contained conceal cchar=Ḣ985 syn match texMathSymbol '\\dot{h}' contained conceal cchar=ḣ986 syn match texMathSymbol '\\dot{M}' contained conceal cchar=Ṁ987 syn match texMathSymbol '\\dot{m}' contained conceal cchar=ṁ988 syn match texMathSymbol '\\dot{N}' contained conceal cchar=Ṅ989 syn match texMathSymbol '\\dot{n}' contained conceal cchar=ṅ990 syn match texMathSymbol '\\dot{P}' contained conceal cchar=Ṗ991 syn match texMathSymbol '\\dot{p}' contained conceal cchar=ṗ992 syn match texMathSymbol '\\dot{R}' contained conceal cchar=Ṙ993 syn match texMathSymbol '\\dot{r}' contained conceal cchar=ṙ994 syn match texMathSymbol '\\dot{S}' contained conceal cchar=Ṡ995 syn match texMathSymbol '\\dot{s}' contained conceal cchar=ṡ996 syn match texMathSymbol '\\dot{T}' contained conceal cchar=Ṫ997 syn match texMathSymbol '\\dot{t}' contained conceal cchar=ṫ998 syn match texMathSymbol '\\dot{W}' contained conceal cchar=Ẇ999 syn match texMathSymbol '\\dot{w}' contained conceal cchar=ẇ1000 syn match texMathSymbol '\\dot{X}' contained conceal cchar=Ẋ1001 syn match texMathSymbol '\\dot{x}' contained conceal cchar=ẋ1002 syn match texMathSymbol '\\dot{Y}' contained conceal cchar=Ẏ1003 syn match texMathSymbol '\\dot{y}' contained conceal cchar=ẏ1004 syn match texMathSymbol '\\dot{Z}' contained conceal cchar=Ż1005 syn match texMathSymbol '\\dot{z}' contained conceal cchar=ż1006 1007 syn match texMathSymbol '\\dot{C}' contained conceal cchar=Ċ1008 syn match texMathSymbol '\\dot{c}' contained conceal cchar=ċ1009 syn match texMathSymbol '\\dot{E}' contained conceal cchar=Ė1010 syn match texMathSymbol '\\dot{e}' contained conceal cchar=ė1011 syn match texMathSymbol '\\dot{G}' contained conceal cchar=Ġ1012 syn match texMathSymbol '\\dot{g}' contained conceal cchar=ġ1013 syn match texMathSymbol '\\dot{I}' contained conceal cchar=İ1014 1015 syn match texMathSymbol '\\dot{A}' contained conceal cchar=Ȧ1016 syn match texMathSymbol '\\dot{a}' contained conceal cchar=ȧ1017 syn match texMathSymbol '\\dot{O}' contained conceal cchar=Ȯ1018 syn match texMathSymbol '\\dot{o}' contained conceal cchar=ȯ1019 endif1020 1021 " Greek {{{21022 if s:tex_conceal =~# 'g'1023 fun! s:Greek(group,pat,cchar)1024 exe 'syn match '.a:group." '".a:pat."' contained conceal cchar=".a:cchar1025 endfun1026 call s:Greek('texGreek','\\alpha\>' ,'α')1027 call s:Greek('texGreek','\\beta\>' ,'β')1028 call s:Greek('texGreek','\\gamma\>' ,'γ')1029 call s:Greek('texGreek','\\delta\>' ,'δ')1030 call s:Greek('texGreek','\\epsilon\>' ,'ϵ')1031 call s:Greek('texGreek','\\varepsilon\>' ,'ε')1032 call s:Greek('texGreek','\\zeta\>' ,'ζ')1033 call s:Greek('texGreek','\\eta\>' ,'η')1034 call s:Greek('texGreek','\\theta\>' ,'θ')1035 call s:Greek('texGreek','\\vartheta\>' ,'ϑ')1036 call s:Greek('texGreek','\\iota\>' ,'ι')1037 call s:Greek('texGreek','\\kappa\>' ,'κ')1038 call s:Greek('texGreek','\\lambda\>' ,'λ')1039 call s:Greek('texGreek','\\mu\>' ,'μ')1040 call s:Greek('texGreek','\\nu\>' ,'ν')1041 call s:Greek('texGreek','\\xi\>' ,'ξ')1042 call s:Greek('texGreek','\\pi\>' ,'π')1043 call s:Greek('texGreek','\\varpi\>' ,'ϖ')1044 call s:Greek('texGreek','\\rho\>' ,'ρ')1045 call s:Greek('texGreek','\\varrho\>' ,'ϱ')1046 call s:Greek('texGreek','\\sigma\>' ,'σ')1047 call s:Greek('texGreek','\\varsigma\>' ,'ς')1048 call s:Greek('texGreek','\\tau\>' ,'τ')1049 call s:Greek('texGreek','\\upsilon\>' ,'υ')1050 call s:Greek('texGreek','\\phi\>' ,'ϕ')1051 call s:Greek('texGreek','\\varphi\>' ,'φ')1052 call s:Greek('texGreek','\\chi\>' ,'χ')1053 call s:Greek('texGreek','\\psi\>' ,'ψ')1054 call s:Greek('texGreek','\\omega\>' ,'ω')1055 call s:Greek('texGreek','\\Gamma\>' ,'Γ')1056 call s:Greek('texGreek','\\Delta\>' ,'Δ')1057 call s:Greek('texGreek','\\Theta\>' ,'Θ')1058 call s:Greek('texGreek','\\Lambda\>' ,'Λ')1059 call s:Greek('texGreek','\\Xi\>' ,'Ξ')1060 call s:Greek('texGreek','\\Pi\>' ,'Π')1061 call s:Greek('texGreek','\\Sigma\>' ,'Σ')1062 call s:Greek('texGreek','\\Upsilon\>' ,'Υ')1063 call s:Greek('texGreek','\\Phi\>' ,'Φ')1064 call s:Greek('texGreek','\\Chi\>' ,'Χ')1065 call s:Greek('texGreek','\\Psi\>' ,'Ψ')1066 call s:Greek('texGreek','\\Omega\>' ,'Ω')1067 delfun s:Greek1068 endif1069 1070 " Superscripts/Subscripts {{{21071 if s:tex_conceal =~# 's'1072 if s:tex_fast =~# 's'1073 syn region texSuperscript matchgroup=texDelimiter start='\^{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSuperscripts,texStatement,texSubscript,texSuperscript,texMathMatcher1074 syn region texSubscript matchgroup=texDelimiter start='_{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSubscripts,texStatement,texSubscript,texSuperscript,texMathMatcher1075 endif1076 " s:SuperSub:1077 fun! s:SuperSub(group,leader,pat,cchar)1078 if a:pat =~# '^\\' || (a:leader == '\^' && a:pat =~# s:tex_superscripts) || (a:leader == '_' && a:pat =~# s:tex_subscripts)1079" call Decho("SuperSub: group<".a:group."> leader<".a:leader."> pat<".a:pat."> cchar<".a:cchar.">")1080 exe 'syn match '.a:group." '".a:leader.a:pat."' contained conceal cchar=".a:cchar1081 exe 'syn match '.a:group."s '".a:pat ."' contained conceal cchar=".a:cchar.' nextgroup='.a:group.'s'1082 endif1083 endfun1084 call s:SuperSub('texSuperscript','\^','0','⁰')1085 call s:SuperSub('texSuperscript','\^','1','¹')1086 call s:SuperSub('texSuperscript','\^','2','²')1087 call s:SuperSub('texSuperscript','\^','3','³')1088 call s:SuperSub('texSuperscript','\^','4','⁴')1089 call s:SuperSub('texSuperscript','\^','5','⁵')1090 call s:SuperSub('texSuperscript','\^','6','⁶')1091 call s:SuperSub('texSuperscript','\^','7','⁷')1092 call s:SuperSub('texSuperscript','\^','8','⁸')1093 call s:SuperSub('texSuperscript','\^','9','⁹')1094 call s:SuperSub('texSuperscript','\^','a','ᵃ')1095 call s:SuperSub('texSuperscript','\^','b','ᵇ')1096 call s:SuperSub('texSuperscript','\^','c','ᶜ')1097 call s:SuperSub('texSuperscript','\^','d','ᵈ')1098 call s:SuperSub('texSuperscript','\^','e','ᵉ')1099 call s:SuperSub('texSuperscript','\^','f','ᶠ')1100 call s:SuperSub('texSuperscript','\^','g','ᵍ')1101 call s:SuperSub('texSuperscript','\^','h','ʰ')1102 call s:SuperSub('texSuperscript','\^','i','ⁱ')1103 call s:SuperSub('texSuperscript','\^','j','ʲ')1104 call s:SuperSub('texSuperscript','\^','k','ᵏ')1105 call s:SuperSub('texSuperscript','\^','l','ˡ')1106 call s:SuperSub('texSuperscript','\^','m','ᵐ')1107 call s:SuperSub('texSuperscript','\^','n','ⁿ')1108 call s:SuperSub('texSuperscript','\^','o','ᵒ')1109 call s:SuperSub('texSuperscript','\^','p','ᵖ')1110 call s:SuperSub('texSuperscript','\^','r','ʳ')1111 call s:SuperSub('texSuperscript','\^','s','ˢ')1112 call s:SuperSub('texSuperscript','\^','t','ᵗ')1113 call s:SuperSub('texSuperscript','\^','u','ᵘ')1114 call s:SuperSub('texSuperscript','\^','v','ᵛ')1115 call s:SuperSub('texSuperscript','\^','w','ʷ')1116 call s:SuperSub('texSuperscript','\^','x','ˣ')1117 call s:SuperSub('texSuperscript','\^','y','ʸ')1118 call s:SuperSub('texSuperscript','\^','z','ᶻ')1119 call s:SuperSub('texSuperscript','\^','A','ᴬ')1120 call s:SuperSub('texSuperscript','\^','B','ᴮ')1121 call s:SuperSub('texSuperscript','\^','D','ᴰ')1122 call s:SuperSub('texSuperscript','\^','E','ᴱ')1123 call s:SuperSub('texSuperscript','\^','G','ᴳ')1124 call s:SuperSub('texSuperscript','\^','H','ᴴ')1125 call s:SuperSub('texSuperscript','\^','I','ᴵ')1126 call s:SuperSub('texSuperscript','\^','J','ᴶ')1127 call s:SuperSub('texSuperscript','\^','K','ᴷ')1128 call s:SuperSub('texSuperscript','\^','L','ᴸ')1129 call s:SuperSub('texSuperscript','\^','M','ᴹ')1130 call s:SuperSub('texSuperscript','\^','N','ᴺ')1131 call s:SuperSub('texSuperscript','\^','O','ᴼ')1132 call s:SuperSub('texSuperscript','\^','P','ᴾ')1133 call s:SuperSub('texSuperscript','\^','R','ᴿ')1134 call s:SuperSub('texSuperscript','\^','T','ᵀ')1135 call s:SuperSub('texSuperscript','\^','U','ᵁ')1136 call s:SuperSub('texSuperscript','\^','V','ⱽ')1137 call s:SuperSub('texSuperscript','\^','W','ᵂ')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('texSuperscript','\^','<','˂')1144 call s:SuperSub('texSuperscript','\^','>','˃')1145 call s:SuperSub('texSuperscript','\^','/','ˊ')1146 call s:SuperSub('texSuperscript','\^','(','⁽')1147 call s:SuperSub('texSuperscript','\^',')','⁾')1148 call s:SuperSub('texSuperscript','\^','\.','˙')1149 call s:SuperSub('texSuperscript','\^','=','˭')1150 call s:SuperSub('texSubscript','_','0','₀')1151 call s:SuperSub('texSubscript','_','1','₁')1152 call s:SuperSub('texSubscript','_','2','₂')1153 call s:SuperSub('texSubscript','_','3','₃')1154 call s:SuperSub('texSubscript','_','4','₄')1155 call s:SuperSub('texSubscript','_','5','₅')1156 call s:SuperSub('texSubscript','_','6','₆')1157 call s:SuperSub('texSubscript','_','7','₇')1158 call s:SuperSub('texSubscript','_','8','₈')1159 call s:SuperSub('texSubscript','_','9','₉')1160 call s:SuperSub('texSubscript','_','a','ₐ')1161 call s:SuperSub('texSubscript','_','e','ₑ')1162 call s:SuperSub('texSubscript','_','h','ₕ')1163 call s:SuperSub('texSubscript','_','i','ᵢ')1164 call s:SuperSub('texSubscript','_','j','ⱼ')1165 call s:SuperSub('texSubscript','_','k','ₖ')1166 call s:SuperSub('texSubscript','_','l','ₗ')1167 call s:SuperSub('texSubscript','_','m','ₘ')1168 call s:SuperSub('texSubscript','_','n','ₙ')1169 call s:SuperSub('texSubscript','_','o','ₒ')1170 call s:SuperSub('texSubscript','_','p','ₚ')1171 call s:SuperSub('texSubscript','_','r','ᵣ')1172 call s:SuperSub('texSubscript','_','s','ₛ')1173 call s:SuperSub('texSubscript','_','t','ₜ')1174 call s:SuperSub('texSubscript','_','u','ᵤ')1175 call s:SuperSub('texSubscript','_','v','ᵥ')1176 call s:SuperSub('texSubscript','_','x','ₓ')1177 call s:SuperSub('texSubscript','_',',','︐')1178 call s:SuperSub('texSubscript','_','+','₊')1179 call s:SuperSub('texSubscript','_','-','₋')1180 call s:SuperSub('texSubscript','_','/','ˏ')1181 call s:SuperSub('texSubscript','_','(','₍')1182 call s:SuperSub('texSubscript','_',')','₎')1183 call s:SuperSub('texSubscript','_','\.','‸')1184 call s:SuperSub('texSubscript','_','r','ᵣ')1185 call s:SuperSub('texSubscript','_','v','ᵥ')1186 call s:SuperSub('texSubscript','_','x','ₓ')1187 call s:SuperSub('texSubscript','_','\\beta\>' ,'ᵦ')1188 call s:SuperSub('texSubscript','_','\\delta\>','ᵨ')1189 call s:SuperSub('texSubscript','_','\\phi\>' ,'ᵩ')1190 call s:SuperSub('texSubscript','_','\\gamma\>','ᵧ')1191 call s:SuperSub('texSubscript','_','\\chi\>' ,'ᵪ')1192 1193 delfun s:SuperSub1194 endif1195 1196 " Accented characters and Ligatures: {{{21197 if s:tex_conceal =~# 'a'1198 if b:tex_stylish1199 syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-11200 syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1