1
0
Fork 0
mirror of https://github.com/vim/vim synced 2025-03-29 21:16:57 +01:00
vim/runtime/syntax/tex.vim

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

1355 lines
66 KiB
VimL
Raw Permalink Normal View History

2004-06-13 20:20:40 +00:00
" Vim syntax file
" Language: TeX
" Maintainer: This runtime file is looking for a new maintainer.
" Former Maintainer: Charles E. Campbell
2022-04-27 15:25:03 +01:00
" Last Change: Apr 22, 2022
" 2024 Feb 19 by Vim Project (announce adoption)
2022-04-27 15:25:03 +01:00
" Version: 121
" Former URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TEX
2004-06-13 20:20:40 +00:00
"
" Notes: {{{1
"
" 1. If you have a \begin{verbatim} that appears to overrun its boundaries,
" use %stopzone.
"
" 2. Run-on equations ($..$ and $$..$$, particularly) can also be stopped
" by suitable use of %stopzone.
"
" 3. If you have a slow computer, you may wish to modify
"
" syn sync maxlines=200
" syn sync minlines=50
"
" to values that are more to your liking.
"
" 4. There is no match-syncing for $...$ and $$...$$; hence large
" equation blocks constructed that way may exhibit syncing problems.
" (there's no difference between begin/end patterns)
"
" 5. If you have the variable "g:tex_no_error" defined then none of the
" lexical error-checking will be done.
"
" ie. let g:tex_no_error=1
2014-03-22 21:02:50 +01:00
"
" 6. Please see :help latex-syntax for information on
" syntax folding :help tex-folding
" spell checking :help tex-nospell
" commands and mathzones :help tex-runon
" new command highlighting :help tex-morecommands
" error highlighting :help tex-error
" new math groups :help tex-math
" new styles :help tex-style
" using conceal mode :help tex-conceal
2004-06-13 20:20:40 +00:00
" Version Clears: {{{1
" quit when a syntax file was already loaded
if exists("b:current_syntax")
2004-06-13 20:20:40 +00:00
finish
endif
2011-10-20 22:22:38 +02:00
let s:keepcpo= &cpo
set cpo&vim
scriptencoding utf-8
2004-06-13 20:20:40 +00:00
" by default, enable all region-based highlighting
let s:tex_fast= "bcmMprsSvV"
if exists("g:tex_fast")
if type(g:tex_fast) != 1
" g:tex_fast exists and is not a string, so
" turn off all optional region-based highighting
let s:tex_fast= ""
else
let s:tex_fast= g:tex_fast
endif
2004-06-13 20:20:40 +00:00
endif
" let user determine which classes of concealment will be supported
" a=accents/ligatures d=delimiters m=math symbols g=Greek s=superscripts/subscripts
if !exists("g:tex_conceal")
2013-07-05 21:01:22 +02:00
let s:tex_conceal= 'abdmgsS'
else
let s:tex_conceal= g:tex_conceal
endif
2014-09-09 18:48:09 +02:00
if !exists("g:tex_superscripts")
2016-06-26 16:17:58 +02:00
let s:tex_superscripts= '[0-9a-zA-W.,:;+-<>/()=]'
2016-04-12 21:07:15 +02:00
else
let s:tex_superscripts= g:tex_superscripts
2014-09-09 18:48:09 +02:00
endif
if !exists("g:tex_subscripts")
2016-06-26 16:17:58 +02:00
let s:tex_subscripts= '[0-9aehijklmnoprstuvx,+-/().]'
2016-04-12 21:07:15 +02:00
else
let s:tex_subscripts= g:tex_subscripts
2014-09-09 18:48:09 +02:00
endif
2005-03-07 23:20:08 +00:00
" Determine whether or not to use "*.sty" mode {{{1
2004-06-13 20:20:40 +00:00
" The user may override the normal determination by setting
" g:tex_stylish to 1 (for "*.sty" mode)
" or to 0 else (normal "*.tex" mode)
" or on a buffer-by-buffer basis with b:tex_stylish
2010-12-10 20:35:50 +01:00
let s:extfname=expand("%:e")
2004-06-13 20:20:40 +00:00
if exists("g:tex_stylish")
let b:tex_stylish= g:tex_stylish
elseif !exists("b:tex_stylish")
2010-12-10 20:35:50 +01:00
if s:extfname == "sty" || s:extfname == "cls" || s:extfname == "clo" || s:extfname == "dtx" || s:extfname == "ltx"
2004-06-13 20:20:40 +00:00
let b:tex_stylish= 1
else
let b:tex_stylish= 0
endif
endif
2005-03-07 23:20:08 +00:00
" handle folding {{{1
if !exists("g:tex_fold_enabled")
2015-11-10 21:15:48 +01:00
let s:tex_fold_enabled= 0
2005-03-07 23:20:08 +00:00
elseif g:tex_fold_enabled && !has("folding")
2015-11-10 21:15:48 +01:00
let s:tex_fold_enabled= 0
2005-03-07 23:20:08 +00:00
echomsg "Ignoring g:tex_fold_enabled=".g:tex_fold_enabled."; need to re-compile vim for +fold support"
2015-11-10 21:15:48 +01:00
else
let s:tex_fold_enabled= 1
2005-03-07 23:20:08 +00:00
endif
2015-11-10 21:15:48 +01:00
if s:tex_fold_enabled && &fdm == "manual"
2010-05-14 23:24:24 +02:00
setl fdm=syntax
2005-03-07 23:20:08 +00:00
endif
2015-11-10 21:15:48 +01:00
if s:tex_fold_enabled && has("folding")
com! -nargs=* TexFold <args> fold
2015-10-30 14:37:44 +01:00
else
com! -nargs=* TexFold <args>
2015-10-30 14:37:44 +01:00
endif
2005-03-07 23:20:08 +00:00
2011-04-01 18:03:16 +02:00
" (La)TeX keywords: uses the characters 0-9,a-z,A-Z,192-255 only... {{{1
2004-06-13 20:20:40 +00:00
" but _ is the only one that causes problems.
2011-04-01 18:03:16 +02:00
" One may override this iskeyword setting by providing
" g:tex_isk
if exists("g:tex_isk")
2016-08-02 21:04:33 +02:00
if b:tex_stylish && g:tex_isk !~ '@'
let b:tex_isk= '@,'.g:tex_isk
else
let b:tex_isk= g:tex_isk
endif
elseif b:tex_stylish
let b:tex_isk="@,48-57,a-z,A-Z,192-255"
2004-06-13 20:20:40 +00:00
else
2016-08-02 21:04:33 +02:00
let b:tex_isk="48-57,a-z,A-Z,192-255"
2011-04-01 18:03:16 +02:00
endif
2019-04-04 13:11:03 +02:00
if (v:version == 704 && has("patch-7.4.1142")) || v:version > 704
2016-08-02 21:04:33 +02:00
exe "syn iskeyword ".b:tex_isk
else
exe "setl isk=".b:tex_isk
2004-06-13 20:20:40 +00:00
endif
2015-11-10 21:15:48 +01:00
if exists("g:tex_no_error") && g:tex_no_error
let s:tex_no_error= 1
else
let s:tex_no_error= 0
endif
if exists("g:tex_comment_nospell") && g:tex_comment_nospell
let s:tex_comment_nospell= 1
else
let s:tex_comment_nospell= 0
endif
if exists("g:tex_nospell") && g:tex_nospell
let s:tex_nospell = 1
else
let s:tex_nospell = 0
2011-09-21 19:22:10 +02:00
endif
2020-07-26 17:00:44 +02:00
if exists("g:tex_matchcheck")
let s:tex_matchcheck= g:tex_matchcheck
else
let s:tex_matchcheck= '[({[]'
endif
2020-01-25 13:27:42 +01:00
if exists("g:tex_excludematcher")
let s:tex_excludematcher= g:tex_excludematcher
else
let s:tex_excludematcher= 0
endif
2004-06-13 20:20:40 +00:00
" Clusters: {{{1
" --------
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
2015-10-30 14:37:44 +01:00
if !s:tex_no_error
2015-11-10 21:15:48 +01:00
syn cluster texCmdGroup add=texMathError
endif
syn cluster texEnvGroup contains=texMatcher,texMathDelim,texSpecialChar,texStatement
2019-04-04 13:11:03 +02:00
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
2020-01-25 13:27:42 +01:00
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
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
if !s:tex_excludematcher
syn cluster texBoldGroup add=texMatcher
syn cluster texItalGroup add=texMatcher
endif
2015-11-10 21:15:48 +01:00
if !s:tex_nospell
2022-04-27 15:25:03 +01:00
if !s:tex_no_error
syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texError,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,@Spell
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
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
else
syn cluster texMatchGroup contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texBoldStyle,texBoldItalStyle,texItalStyle,texItalBoldStyle,texZone,texInputFile,texOption,@Spell
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
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
endif
2011-09-21 19:22:10 +02:00
else
2022-04-27 15:25:03 +01:00
if !s:tex_no_error
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
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
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
else
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
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
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
endif
2011-09-21 19:22:10 +02:00
endif
2016-10-27 17:00:16 +02:00
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
2015-11-10 21:15:48 +01:00
syn cluster texRefGroup contains=texMatcher,texComment,texDelimiter
2015-01-10 15:09:25 +01:00
if !exists("g:tex_no_math")
2016-10-27 17:00:16 +02:00
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
2015-11-10 21:15:48 +01:00
syn cluster texMathZones contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ
syn cluster texMatchGroup add=@texMathZones
syn cluster texMathDelimGroup contains=texMathDelimBad,texMathDelimKey,texMathDelimSet1,texMathDelimSet2
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
syn cluster texMathZoneGroup contains=texBadPar,texComment,texDelimiter,texLength,texMathDelim,texMathMatcher,texMathOper,texMathSymbol,texMathText,texRefZone,texSpecialChar,texStatement,texTypeSize,texTypeStyle
2015-10-30 14:37:44 +01:00
if !s:tex_no_error
2015-11-10 21:15:48 +01:00
syn cluster texMathMatchGroup add=texMathError
syn cluster texMathZoneGroup add=texMathError
2004-06-13 20:20:40 +00:00
endif
2015-11-10 21:15:48 +01:00
syn cluster texMathZoneGroup add=@NoSpell
2005-08-16 23:01:50 +00:00
" following used in the \part \chapter \section \subsection \subsubsection
" \paragraph \subparagraph \author \title highlighting
syn cluster texDocGroup contains=texPartZone,@texPartGroup
syn cluster texPartGroup contains=texChapterZone,texSectionZone,texParaZone
syn cluster texChapterGroup contains=texSectionZone,texParaZone
syn cluster texSectionGroup contains=texSubSectionZone,texParaZone
syn cluster texSubSectionGroup contains=texSubSubSectionZone,texParaZone
syn cluster texSubSubSectionGroup contains=texParaZone
syn cluster texParaGroup contains=texSubParaZone
if has("conceal") && &enc == 'utf-8'
2015-11-10 21:15:48 +01:00
syn cluster texMathZoneGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol
syn cluster texMathMatchGroup add=texGreek,texSuperscript,texSubscript,texMathSymbol
endif
2004-06-13 20:20:40 +00:00
endif
2020-07-26 17:00:44 +02:00
" Try to flag {}, [], and () mismatches: {{{1
2016-02-25 00:00:01 +01:00
if s:tex_fast =~# 'm'
2015-10-30 14:37:44 +01:00
if !s:tex_no_error
2020-07-26 17:00:44 +02:00
if s:tex_matchcheck =~ '{'
2022-04-27 15:25:03 +01:00
syn region texMatcher matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup,texError
syn region texMatcherNM matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup,texError
2020-07-26 17:00:44 +02:00
endif
if s:tex_matchcheck =~ '\['
2022-04-27 15:25:03 +01:00
syn region texMatcher matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchGroup,texError,@NoSpell
syn region texMatcherNM matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchNMGroup,texError,@NoSpell
2020-07-26 17:00:44 +02:00
endif
2013-03-19 11:35:58 +01:00
else
2020-07-26 17:00:44 +02:00
if s:tex_matchcheck =~ '{'
2022-04-27 15:25:03 +01:00
syn region texMatcher matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchGroup
syn region texMatcherNM matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" transparent contains=@texMatchNMGroup
2020-07-26 17:00:44 +02:00
endif
if s:tex_matchcheck =~ '\['
2022-04-27 15:25:03 +01:00
syn region texMatcher matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchGroup
syn region texMatcherNM matchgroup=texDelimiter start="\[" end="]" transparent contains=@texMatchNMGroup
2020-07-26 17:00:44 +02:00
endif
2013-03-19 11:35:58 +01:00
endif
2020-07-26 17:00:44 +02:00
if s:tex_matchcheck =~ '('
if !s:tex_nospell
syn region texParen start="(" end=")" transparent contains=@texMatchGroup,@Spell
else
syn region texParen start="(" end=")" transparent contains=@texMatchGroup
endif
2013-03-19 11:35:58 +01:00
endif
2011-09-21 19:22:10 +02:00
endif
2015-10-30 14:37:44 +01:00
if !s:tex_no_error
2020-07-26 17:00:44 +02:00
if s:tex_matchcheck =~ '('
syn match texError "[}\]]"
else
syn match texError "[}\])]"
endif
2004-06-13 20:20:40 +00:00
endif
2016-02-25 00:00:01 +01:00
if s:tex_fast =~# 'M'
2015-01-10 15:09:25 +01:00
if !exists("g:tex_no_math")
2015-10-30 14:37:44 +01:00
if !s:tex_no_error
2013-03-19 11:35:58 +01:00
syn match texMathError "}" contained
endif
2022-04-27 15:25:03 +01:00
syn region texMathMatcher matchgroup=texDelimiter start="{" skip="\%(\\\\\)*\\}" end="}" end="%stopzone\>" contained contains=@texMathMatchGroup
2013-03-19 11:35:58 +01:00
endif
2004-06-13 20:20:40 +00:00
endif
" TeX/LaTeX keywords: {{{1
" Instead of trying to be All Knowing, I just match \..alphameric..
" Note that *.tex files may not have "@" in their \commands
if exists("g:tex_tex") || b:tex_stylish
syn match texStatement "\\[a-zA-Z@]\+"
else
syn match texStatement "\\\a\+"
2015-10-30 14:37:44 +01:00
if !s:tex_no_error
2004-06-13 20:20:40 +00:00
syn match texError "\\\a*@[a-zA-Z@]*"
endif
endif
" TeX/LaTeX delimiters: {{{1
syn match texDelimiter "&"
syn match texDelimiter "\\\\"
" Tex/Latex Options: {{{1
2012-04-25 19:07:41 +02:00
syn match texOption "[^\\]\zs#\d\+\|^#\d\+"
2004-06-13 20:20:40 +00:00
" texAccent (tnx to Karim Belabas) avoids annoying highlighting for accents: {{{1
if b:tex_stylish
syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1
syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1
else
syn match texAccent "\\[bcdvuH]\A"me=e-1
syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)\A"me=e-1
endif
syn match texAccent "\\[bcdvuH]$"
syn match texAccent +\\[=^.\~"`']+
syn match texAccent +\\['=t'.c^ud"vb~Hr]{\a}+
syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)$"
2017-11-05 18:19:24 +01:00
2004-06-13 20:20:40 +00:00
" \begin{}/\end{} section markers: {{{1
2012-04-25 19:07:41 +02:00
syn match texBeginEnd "\\begin\>\|\\end\>" nextgroup=texBeginEndName
2016-02-25 00:00:01 +01:00
if s:tex_fast =~# 'm'
2022-04-27 15:25:03 +01:00
syn region texBeginEndName matchgroup=texDelimiter start="{" end="}" contained nextgroup=texBeginEndModifier contains=texComment
syn region texBeginEndModifier matchgroup=texDelimiter start="\[" end="]" contained contains=texComment,@texMathZones,@NoSpell
2013-03-19 11:35:58 +01:00
endif
2004-06-13 20:20:40 +00:00
" \documentclass, \documentstyle, \usepackage: {{{1
2012-04-25 19:07:41 +02:00
syn match texDocType "\\documentclass\>\|\\documentstyle\>\|\\usepackage\>" nextgroup=texBeginEndName,texDocTypeArgs
2016-02-25 00:00:01 +01:00
if s:tex_fast =~# 'm'
2022-04-27 15:25:03 +01:00
syn region texDocTypeArgs matchgroup=texDelimiter start="\[" end="]" contained nextgroup=texBeginEndName contains=texComment,@NoSpell
2013-03-19 11:35:58 +01:00
endif
2004-06-13 20:20:40 +00:00
2006-03-14 23:04:27 +00:00
" Preamble syntax-based folding support: {{{1
2015-11-10 21:15:48 +01:00
if s:tex_fold_enabled && has("folding")
2012-04-25 19:07:41 +02:00
syn region texPreamble transparent fold start='\zs\\documentclass\>' end='\ze\\begin{document}' contains=texStyle,@texPreambleMatchGroup
2006-03-14 23:04:27 +00:00
endif
2004-06-13 20:20:40 +00:00
" TeX input: {{{1
syn match texInput "\\input\s\+[a-zA-Z/.0-9_^]\+"hs=s+7 contains=texStatement
2010-01-06 20:54:52 +01:00
syn match texInputFile "\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
2004-06-13 20:20:40 +00:00
syn match texInputFile "\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
syn match texInputCurlies "[{}]" contained
2016-02-25 00:00:01 +01:00
if s:tex_fast =~# 'm'
2022-04-27 15:25:03 +01:00
syn region texInputFileOpt matchgroup=texDelimiter start="\[" end="\]" contained contains=texComment
2013-03-19 11:35:58 +01:00
endif
2004-06-13 20:20:40 +00:00
" Type Styles (LaTeX 2.09): {{{1
syn match texTypeStyle "\\rm\>"
syn match texTypeStyle "\\em\>"
syn match texTypeStyle "\\bf\>"
syn match texTypeStyle "\\it\>"
syn match texTypeStyle "\\sl\>"
syn match texTypeStyle "\\sf\>"
syn match texTypeStyle "\\sc\>"
syn match texTypeStyle "\\tt\>"
" Type Styles: attributes, commands, families, etc (LaTeX2E): {{{1
2016-03-29 23:12:46 +02:00
if s:tex_conceal !~# 'b'
2012-04-25 19:07:41 +02:00
syn match texTypeStyle "\\textbf\>"
syn match texTypeStyle "\\textit\>"
2019-04-04 13:11:03 +02:00
syn match texTypeStyle "\\emph\>"
2012-04-25 19:07:41 +02:00
endif
2004-06-13 20:20:40 +00:00
syn match texTypeStyle "\\textmd\>"
syn match texTypeStyle "\\textrm\>"
syn match texTypeStyle "\\mathbf\>"
syn match texTypeStyle "\\mathcal\>"
syn match texTypeStyle "\\mathit\>"
syn match texTypeStyle "\\mathnormal\>"
syn match texTypeStyle "\\mathrm\>"
syn match texTypeStyle "\\mathsf\>"
syn match texTypeStyle "\\mathtt\>"
syn match texTypeStyle "\\rmfamily\>"
syn match texTypeStyle "\\sffamily\>"
syn match texTypeStyle "\\ttfamily\>"
syn match texTypeStyle "\\itshape\>"
syn match texTypeStyle "\\scshape\>"
syn match texTypeStyle "\\slshape\>"
syn match texTypeStyle "\\upshape\>"
syn match texTypeStyle "\\bfseries\>"
syn match texTypeStyle "\\mdseries\>"
" Some type sizes: {{{1
syn match texTypeSize "\\tiny\>"
syn match texTypeSize "\\scriptsize\>"
syn match texTypeSize "\\footnotesize\>"
syn match texTypeSize "\\small\>"
syn match texTypeSize "\\normalsize\>"
syn match texTypeSize "\\large\>"
syn match texTypeSize "\\Large\>"
syn match texTypeSize "\\LARGE\>"
syn match texTypeSize "\\huge\>"
syn match texTypeSize "\\Huge\>"
" Spacecodes (TeX'isms): {{{1
" \mathcode`\^^@="2201 \delcode`\(="028300 \sfcode`\)=0 \uccode`X=`X \lccode`x=`x
syn match texSpaceCode "\\\(math\|cat\|del\|lc\|sf\|uc\)code`"me=e-1 nextgroup=texSpaceCodeChar
syn match texSpaceCodeChar "`\\\=.\(\^.\)\==\(\d\|\"\x\{1,6}\|`.\)" contained
" Sections, subsections, etc: {{{1
2016-02-25 00:00:01 +01:00
if s:tex_fast =~# 'p'
2015-11-10 21:15:48 +01:00
if !s:tex_nospell
TexFold syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup,@Spell
TexFold syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup,@Spell
TexFold syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup,@Spell
TexFold syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup,@Spell
TexFold syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup,@Spell
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
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
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
TexFold syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup,@Spell
TexFold syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup,@Spell
else
TexFold syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup
TexFold syn region texPartZone matchgroup=texSection start='\\part\>' end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texPartGroup
TexFold syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texChapterGroup
TexFold syn region texSectionZone matchgroup=texSection start='\\section\>' end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSectionGroup
TexFold syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSectionGroup
TexFold syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texSubSubSectionGroup
TexFold syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup,@texParaGroup
TexFold syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)' contains=@texFoldGroup
TexFold syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup
TexFold syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup
2013-03-19 11:35:58 +01:00
endif
2004-12-09 21:34:53 +00:00
endif
2004-06-13 20:20:40 +00:00
2012-04-25 19:07:41 +02:00
" particular support for bold and italic {{{1
2016-02-25 00:00:01 +01:00
if s:tex_fast =~# 'b'
if s:tex_conceal =~# 'b'
2015-04-13 14:22:40 +02:00
if !exists("g:tex_nospell") || !g:tex_nospell
2015-06-19 13:27:23 +02:00
syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell
syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell
syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
2019-04-04 13:11:03 +02:00
syn region texEmphStyle matchgroup=texTypeStyle start="\\emph\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup,@Spell
2020-01-25 13:27:42 +01:00
syn region texEmphStyle matchgroup=texTypeStyle start="\\texts[cfl]\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
syn region texEmphStyle matchgroup=texTypeStyle start="\\textup\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
syn region texEmphStyle matchgroup=texTypeStyle start="\\texttt\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup,@Spell
else
2015-06-19 13:27:23 +02:00
syn region texBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup
syn region texBoldItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup
syn region texItalStyle matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup
syn region texItalBoldStyle matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texBoldGroup
2019-04-04 13:11:03 +02:00
syn region texEmphStyle matchgroup=texTypeStyle start="\\emph\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texItalGroup
2020-01-25 13:27:42 +01:00
syn region texEmphStyle matchgroup=texTypeStyle start="\\texts[cfl]\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup
syn region texEmphStyle matchgroup=texTypeStyle start="\\textup\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup
syn region texEmphStyle matchgroup=texTypeStyle start="\\texttt\s*{" matchgroup=texTypeStyle end="}" concealends contains=@texEmphGroup
2015-04-13 14:22:40 +02:00
endif
2013-03-19 11:35:58 +01:00
endif
2012-04-25 19:07:41 +02:00
endif
2004-06-13 20:20:40 +00:00
" Bad Math (mismatched): {{{1
2015-10-30 14:37:44 +01:00
if !exists("g:tex_no_math") && !s:tex_no_error
2018-04-06 11:14:11 +02:00
syn match texBadMath "\\end\s*{\s*\(array\|[bBpvV]matrix\|split\|smallmatrix\)\s*}"
2017-12-17 17:17:07 +01:00
syn match texBadMath "\\end\s*{\s*\(displaymath\|equation\|eqnarray\|math\)\*\=\s*}"
2004-06-13 20:20:40 +00:00
syn match texBadMath "\\[\])]"
2022-04-27 15:25:03 +01:00
syn match texBadPar contained "\%(\\par\>\|^\s*\n.\)"
2004-06-13 20:20:40 +00:00
endif
" Math Zones: {{{1
2015-01-10 15:09:25 +01:00
if !exists("g:tex_no_math")
2005-08-11 20:09:58 +00:00
" TexNewMathZone: function creates a mathzone with the given suffix and mathzone name. {{{2
2004-06-13 20:20:40 +00:00
" Starred forms are created if starform is true. Starred
" forms have syntax group and synchronization groups with a
2016-10-27 17:00:16 +02:00
" "S" appended. Handles: cluster, syntax, sync, and highlighting.
2004-06-13 20:20:40 +00:00
fun! TexNewMathZone(sfx,mathzone,starform)
let grpname = "texMathZone".a:sfx
let syncname = "texSyncMathZone".a:sfx
2015-11-10 21:15:48 +01:00
if s:tex_fold_enabled
2008-06-24 21:16:56 +00:00
let foldcmd= " fold"
else
let foldcmd= ""
endif
2004-06-13 20:20:40 +00:00
exe "syn cluster texMathZones add=".grpname
2016-02-25 00:00:01 +01:00
if s:tex_fast =~# 'M'
2013-03-19 11:35:58 +01:00
exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
endif
2010-01-06 20:54:52 +01:00
exe 'hi def link '.grpname.' texMath'
2004-06-13 20:20:40 +00:00
if a:starform
let grpname = "texMathZone".a:sfx.'S'
let syncname = "texSyncMathZone".a:sfx.'S'
exe "syn cluster texMathZones add=".grpname
2016-02-25 00:00:01 +01:00
if s:tex_fast =~# 'M'
2013-03-19 11:35:58 +01:00
exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
endif
2010-01-06 20:54:52 +01:00
exe 'hi def link '.grpname.' texMath'
2004-06-13 20:20:40 +00:00
endif
endfun
" Standard Math Zones: {{{2
2017-12-17 17:17:07 +01:00
call TexNewMathZone("A","displaymath",1)
call TexNewMathZone("B","eqnarray",1)
call TexNewMathZone("C","equation",1)
call TexNewMathZone("D","math",1)
2004-06-13 20:20:40 +00:00
" Inline Math Zones: {{{2
2016-02-25 00:00:01 +01:00
if s:tex_fast =~# 'M'
if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~# 'd'
2022-04-27 15:25:03 +01:00
syn region texMathZoneV matchgroup=texDelimiter start="\\(" matchgroup=texDelimiter end="\\)\|%stopzone\>" keepend concealends contains=@texMathZoneGroup
syn region texMathZoneW matchgroup=texDelimiter start="\\\[" matchgroup=texDelimiter end="\\]\|%stopzone\>" keepend concealends contains=@texMathZoneGroup
syn region texMathZoneX matchgroup=texDelimiter start="\$" skip="\\\\\|\\\$" matchgroup=texDelimiter end="\$" end="%stopzone\>" concealends contains=@texMathZoneGroup
syn region texMathZoneY matchgroup=texDelimiter start="\$\$" matchgroup=texDelimiter end="\$\$" end="%stopzone\>" keepend concealends contains=@texMathZoneGroup
2013-03-19 11:35:58 +01:00
else
2022-04-27 15:25:03 +01:00
syn region texMathZoneV matchgroup=texDelimiter start="\\(" matchgroup=texDelimiter end="\\)\|%stopzone\>" keepend contains=@texMathZoneGroup
syn region texMathZoneW matchgroup=texDelimiter start="\\\[" matchgroup=texDelimiter end="\\]\|%stopzone\>" keepend contains=@texMathZoneGroup
syn region texMathZoneX matchgroup=texDelimiter start="\$" skip="\%(\\\\\)*\\\$" matchgroup=texDelimiter end="\$" end="%stopzone\>" contains=@texMathZoneGroup
syn region texMathZoneY matchgroup=texDelimiter start="\$\$" matchgroup=texDelimiter end="\$\$" end="%stopzone\>" keepend contains=@texMathZoneGroup
2013-03-19 11:35:58 +01:00
endif
2015-06-19 13:27:23 +02:00
syn region texMathZoneZ matchgroup=texStatement start="\\ensuremath\s*{" matchgroup=texStatement end="}" end="%stopzone\>" contains=@texMathZoneGroup
endif
2004-06-13 20:20:40 +00:00
syn match texMathOper "[_^=]" contained
" Text Inside Math Zones: {{{2
2016-02-25 00:00:01 +01:00
if s:tex_fast =~# 'M'
2013-03-19 11:35:58 +01:00
if !exists("g:tex_nospell") || !g:tex_nospell
syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{' end='}' contains=@texFoldGroup,@Spell
else
syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{' end='}' contains=@texFoldGroup
endif
2011-09-21 19:22:10 +02:00
endif
2004-06-13 20:20:40 +00:00
" \left..something.. and \right..something.. support: {{{2
syn match texMathDelimBad contained "\S"
2016-02-25 00:00:01 +01:00
if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~# 'm'
2016-08-02 21:04:33 +02:00
syn match texMathDelim contained "\\left\["
syn match texMathDelim contained "\\left\\{" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar={
syn match texMathDelim contained "\\right\\}" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar=}
2011-04-01 18:03:16 +02:00
let s:texMathDelimList=[
\ ['<' , '<'] ,
\ ['>' , '>'] ,
\ ['(' , '('] ,
\ [')' , ')'] ,
\ ['\[' , '['] ,
\ [']' , ']'] ,
\ ['\\{' , '{'] ,
\ ['\\}' , '}'] ,
\ ['|' , '|'] ,
\ ['\\|' , '‖'] ,
\ ['\\backslash' , '\'] ,
\ ['\\downarrow' , '↓'] ,
\ ['\\Downarrow' , '⇓'] ,
\ ['\\lbrace' , '['] ,
\ ['\\lceil' , '⌈'] ,
\ ['\\lfloor' , '⌊'] ,
\ ['\\lgroup' , '⌊'] ,
\ ['\\lmoustache' , '⎛'] ,
\ ['\\rbrace' , ']'] ,
\ ['\\rceil' , '⌉'] ,
\ ['\\rfloor' , '⌋'] ,
\ ['\\rgroup' , '⌋'] ,
\ ['\\rmoustache' , '⎞'] ,
\ ['\\uparrow' , '↑'] ,
\ ['\\Uparrow' , '↑'] ,
\ ['\\updownarrow', '↕'] ,
\ ['\\Updownarrow', '⇕']]
2017-01-28 18:34:47 +01:00
if &ambw == "double" || exists("g:tex_usedblwidth")
let s:texMathDelimList= s:texMathDelimList + [
\ ['\\langle' , '〈'] ,
2017-11-11 20:58:53 +01:00
\ ['\\rangle' , '〉']]
2017-01-28 18:34:47 +01:00
else
let s:texMathDelimList= s:texMathDelimList + [
\ ['\\langle' , '<'] ,
\ ['\\rangle' , '>']]
endif
2011-04-01 18:03:16 +02:00
syn match texMathDelim '\\[bB]igg\=[lr]' contained nextgroup=texMathDelimBad
for texmath in s:texMathDelimList
exe "syn match texMathDelim '\\\\[bB]igg\\=[lr]\\=".texmath[0]."' contained conceal cchar=".texmath[1]
endfor
else
syn match texMathDelim contained "\\\(left\|right\)\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad
2011-04-01 18:03:16 +02:00
syn match texMathDelim contained "\\[bB]igg\=[lr]\=\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad
syn match texMathDelimSet2 contained "\\" nextgroup=texMathDelimKey,texMathDelimBad
syn match texMathDelimSet1 contained "[<>()[\]|/.]\|\\[{}|]"
syn keyword texMathDelimKey contained backslash lceil lVert rgroup uparrow
syn keyword texMathDelimKey contained downarrow lfloor rangle rmoustache Uparrow
syn keyword texMathDelimKey contained Downarrow lgroup rbrace rvert updownarrow
syn keyword texMathDelimKey contained langle lmoustache rceil rVert Updownarrow
syn keyword texMathDelimKey contained lbrace lvert rfloor
endif
2004-06-13 20:20:40 +00:00
syn match texMathDelim contained "\\\(left\|right\)arrow\>\|\<\([aA]rrow\|brace\)\=vert\>"
syn match texMathDelim contained "\\lefteqn\>"
endif
" Special TeX characters ( \$ \& \% \# \{ \} \_ \S \P ) : {{{1
syn match texSpecialChar "\\[$&%#{}_]"
if b:tex_stylish
syn match texSpecialChar "\\[SP@][^a-zA-Z@]"me=e-1
else
syn match texSpecialChar "\\[SP@]\A"me=e-1
endif
syn match texSpecialChar "\\\\"
2015-01-10 15:09:25 +01:00
if !exists("g:tex_no_math")
2004-06-13 20:20:40 +00:00
syn match texOnlyMath "[_^]"
endif
syn match texSpecialChar "\^\^[0-9a-f]\{2}\|\^\^\S"
2016-03-29 23:12:46 +02:00
if s:tex_conceal !~# 'S'
2013-07-05 21:01:22 +02:00
syn match texSpecialChar '\\glq\>' contained conceal cchar=
syn match texSpecialChar '\\grq\>' contained conceal cchar=
syn match texSpecialChar '\\glqq\>' contained conceal cchar=
syn match texSpecialChar '\\grqq\>' contained conceal cchar=
syn match texSpecialChar '\\hyp\>' contained conceal cchar=-
endif
2004-06-13 20:20:40 +00:00
" Comments: {{{1
" Normal TeX LaTeX : %....
" Documented TeX Format: ^^A... -and- leading %s (only)
2015-11-10 21:15:48 +01:00
if !s:tex_comment_nospell
2008-06-24 21:16:56 +00:00
syn cluster texCommentGroup contains=texTodo,@Spell
else
syn cluster texCommentGroup contains=texTodo,@NoSpell
endif
2004-06-13 20:20:40 +00:00
syn case ignore
2006-04-12 21:52:12 +00:00
syn keyword texTodo contained combak fixme todo xxx
2004-06-13 20:20:40 +00:00
syn case match
2010-12-10 20:35:50 +01:00
if s:extfname == "dtx"
2015-10-30 14:37:44 +01:00
syn match texComment "\^\^A.*$" contains=@texCommentGroup
syn match texComment "^%\+" contains=@texCommentGroup
2004-06-13 20:20:40 +00:00
else
2015-11-10 21:15:48 +01:00
if s:tex_fold_enabled
2015-10-30 14:37:44 +01:00
" allows syntax-folding of 2 or more contiguous comment lines
" single-line comments are not folded
2015-11-10 21:15:48 +01:00
syn match texComment "%.*$" contains=@texCommentGroup
2016-02-25 00:00:01 +01:00
if s:tex_fast =~# 'c'
2015-11-10 21:15:48 +01:00
TexFold syn region texComment start="^\zs\s*%.*\_s*%" skip="^\s*%" end='^\ze\s*[^%]' contains=@texCommentGroup
TexFold syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell
2006-03-01 22:09:21 +00:00
endif
2015-10-30 14:37:44 +01:00
else
syn match texComment "%.*$" contains=@texCommentGroup
2016-02-25 00:00:01 +01:00
if s:tex_fast =~# 'c'
2015-11-10 21:15:48 +01:00
syn region texNoSpell contained matchgroup=texComment start="%\s*nospell\s*{" end="%\s*nospell\s*}" contains=@texFoldGroup,@NoSpell
2015-10-30 14:37:44 +01:00
endif
endif
2004-06-13 20:20:40 +00:00
endif
2017-11-05 18:19:24 +01:00
" %begin-include ... %end-include acts like a texDocZone for \include'd files. Permits spell checking, for example, in such files.
if !s:tex_nospell
TexFold syn region texDocZone matchgroup=texSection start='^\s*%begin-include\>' end='^\s*%end-include\>' contains=@texFoldGroup,@texDocGroup,@Spell
else
TexFold syn region texDocZone matchgroup=texSection start='^\s*%begin-include\>' end='^\s*%end-include\>' contains=@texFoldGroup,@texDocGroup
endif
2004-06-13 20:20:40 +00:00
" Separate lines used for verb` and verb# so that the end conditions {{{1
" will appropriately terminate.
" If g:tex_verbspell exists, then verbatim texZones will permit spellchecking there.
2016-02-25 00:00:01 +01:00
if s:tex_fast =~# 'v'
2013-03-19 11:35:58 +01:00
if exists("g:tex_verbspell") && g:tex_verbspell
syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>" contains=@Spell
2017-11-05 18:19:24 +01:00
" listings package:
if b:tex_stylish
syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>" contains=@Spell
else
syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>" contains=@Spell
endif
2013-03-19 11:35:58 +01:00
else
syn region texZone start="\\begin{[vV]erbatim}" end="\\end{[vV]erbatim}\|%stopzone\>"
if b:tex_stylish
syn region texZone start="\\verb\*\=\z([^\ta-zA-Z@]\)" end="\z1\|%stopzone\>"
else
syn region texZone start="\\verb\*\=\z([^\ta-zA-Z]\)" end="\z1\|%stopzone\>"
endif
2013-03-19 11:35:58 +01:00
endif
2004-06-13 20:20:40 +00:00
endif
" Tex Reference Zones: {{{1
2016-02-25 00:00:01 +01:00
if s:tex_fast =~# 'r'
2013-03-19 11:35:58 +01:00
syn region texZone matchgroup=texStatement start="@samp{" end="}\|%stopzone\>" contains=@texRefGroup
syn region texRefZone matchgroup=texStatement start="\\nocite{" end="}\|%stopzone\>" contains=@texRefGroup
syn region texRefZone matchgroup=texStatement start="\\bibliography{" end="}\|%stopzone\>" contains=@texRefGroup
syn region texRefZone matchgroup=texStatement start="\\label{" end="}\|%stopzone\>" contains=@texRefGroup
syn region texRefZone matchgroup=texStatement start="\\\(page\|eq\)ref{" end="}\|%stopzone\>" contains=@texRefGroup
syn region texRefZone matchgroup=texStatement start="\\v\=ref{" end="}\|%stopzone\>" contains=@texRefGroup
2022-04-27 15:25:03 +01:00
syn region texRefOption contained matchgroup=texDelimiter start='\[' end=']' contains=@texRefGroup,texRefZone nextgroup=texRefOption,texCite
syn region texCite contained matchgroup=texDelimiter start='{' end='}' contains=@texRefGroup,texRefZone,texCite
2013-03-19 11:35:58 +01:00
endif
2020-01-25 13:27:42 +01:00
syn match texRefZone '\\cite\%([tp]\*\=\)\=\>' nextgroup=texRefOption,texCite
2004-06-13 20:20:40 +00:00
2022-04-27 15:25:03 +01:00
" Handle (re)newcommand, (re)newenvironment : {{{1
syn match texNewCmd "\\\%(re\)\=newcommand\>" nextgroup=texCmdName skipwhite skipnl
2016-02-25 00:00:01 +01:00
if s:tex_fast =~# 'V'
2022-04-27 15:25:03 +01:00
syn region texCmdName contained matchgroup=texDelimiter start="{"rs=s+1 end="}" nextgroup=texCmdArgs,texCmdBody skipwhite skipnl
syn region texCmdArgs contained matchgroup=texDelimiter start="\["rs=s+1 end="]" nextgroup=texCmdBody skipwhite skipnl
syn region texCmdBody contained matchgroup=texDelimiter start="{"rs=s+1 skip="\\\\\|\\[{}]" matchgroup=texDelimiter end="}" contains=@texCmdGroup
2013-03-19 11:35:58 +01:00
endif
2022-04-27 15:25:03 +01:00
syn match texNewEnv "\\\%(re\)\=newenvironment\>" nextgroup=texEnvName skipwhite skipnl
2016-02-25 00:00:01 +01:00
if s:tex_fast =~# 'V'
2022-04-27 15:25:03 +01:00
syn region texEnvName contained matchgroup=texDelimiter start="{"rs=s+1 end="}" nextgroup=texEnvBgn skipwhite skipnl
syn region texEnvBgn contained matchgroup=texDelimiter start="{"rs=s+1 end="}" nextgroup=texEnvEnd skipwhite skipnl contains=@texEnvGroup
syn region texEnvEnd contained matchgroup=texDelimiter start="{"rs=s+1 end="}" skipwhite skipnl contains=@texEnvGroup
2013-03-19 11:35:58 +01:00
endif
2004-06-13 20:20:40 +00:00
" Definitions/Commands: {{{1
syn match texDefCmd "\\def\>" nextgroup=texDefName skipwhite skipnl
if b:tex_stylish
syn match texDefName contained "\\[a-zA-Z@]\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl
syn match texDefName contained "\\[^a-zA-Z@]" nextgroup=texDefParms,texCmdBody skipwhite skipnl
else
syn match texDefName contained "\\\a\+" nextgroup=texDefParms,texCmdBody skipwhite skipnl
syn match texDefName contained "\\\A" nextgroup=texDefParms,texCmdBody skipwhite skipnl
endif
syn match texDefParms contained "#[^{]*" contains=texDefParm nextgroup=texCmdBody skipwhite skipnl
syn match texDefParm contained "#\d\+"
" TeX Lengths: {{{1
2007-05-05 17:54:07 +00:00
syn match texLength "\<\d\+\([.,]\d\+\)\=\s*\(true\)\=\s*\(bp\|cc\|cm\|dd\|em\|ex\|in\|mm\|pc\|pt\|sp\)\>"
2004-06-13 20:20:40 +00:00
" TeX String Delimiters: {{{1
syn match texString "\(``\|''\|,,\)"
2010-01-06 20:54:52 +01:00
" makeatletter -- makeatother sections
2015-10-30 14:37:44 +01:00
if !s:tex_no_error
2016-02-25 00:00:01 +01:00
if s:tex_fast =~# 'S'
2013-03-19 11:35:58 +01:00
syn region texStyle matchgroup=texStatement start='\\makeatletter' end='\\makeatother' contains=@texStyleGroup contained
endif
2010-01-06 20:54:52 +01:00
syn match texStyleStatement "\\[a-zA-Z@]\+" contained
2016-02-25 00:00:01 +01:00
if s:tex_fast =~# 'S'
2022-04-27 15:25:03 +01:00
syn region texStyleMatcher matchgroup=texDelimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texStyleGroup,texError contained
syn region texStyleMatcher matchgroup=texDelimiter start="\[" end="]" contains=@texStyleGroup,texError contained
2013-03-19 11:35:58 +01:00
endif
2010-01-06 20:54:52 +01:00
endif
" Conceal mode support (supports set cole=2) {{{1
if has("conceal") && &enc == 'utf-8'
2010-07-26 22:51:56 +02:00
" Math Symbols {{{2
" (many of these symbols were contributed by Björn Winckler)
2016-02-25 00:00:01 +01:00
if s:tex_conceal =~# 'm'
let s:texMathList=[
2011-04-01 18:03:16 +02:00
\ ['|' , '‖'],
2011-09-21 19:22:10 +02:00
\ ['aleph' , 'ℵ'],
2012-01-20 21:08:56 +01:00
\ ['amalg' , '∐'],
\ ['angle' , '∠'],
\ ['approx' , '≈'],
\ ['ast' , ''],
\ ['asymp' , '≍'],
2011-09-21 19:22:10 +02:00
\ ['backslash' , ''],
\ ['bigcap' , '∩'],
2012-01-20 21:08:56 +01:00
\ ['bigcirc' , '○'],
\ ['bigcup' , ''],
\ ['bigodot' , '⊙'],
\ ['bigoplus' , '⊕'],
\ ['bigotimes' , '⊗'],
\ ['bigsqcup' , '⊔'],
\ ['bigtriangledown', '∇'],
2012-01-20 21:08:56 +01:00
\ ['bigtriangleup' , '∆'],
\ ['bigvee' , ''],
\ ['bigwedge' , '⋀'],
\ ['bot' , '⊥'],
2012-01-20 21:08:56 +01:00
\ ['bowtie' , '⋈'],
\ ['bullet' , '•'],
\ ['cap' , '∩'],
\ ['cdot' , '·'],
\ ['cdots' , '⋯'],
\ ['circ' , '∘'],
2011-09-21 19:22:10 +02:00
\ ['clubsuit' , '♣'],
\ ['cong' , '≅'],
\ ['coprod' , '∐'],
2011-09-21 19:22:10 +02:00
\ ['copyright' , '©'],
\ ['cup' , ''],
2012-01-20 21:08:56 +01:00
\ ['dagger' , '†'],
\ ['dashv' , '⊣'],
2012-01-20 21:08:56 +01:00
\ ['ddagger' , '‡'],
\ ['ddots' , '⋱'],
\ ['diamond' , '⋄'],
2011-09-21 19:22:10 +02:00
\ ['diamondsuit' , '♢'],
\ ['div' , '÷'],
\ ['doteq' , '≐'],
2012-01-20 21:08:56 +01:00
\ ['dots' , '…'],
\ ['downarrow' , '↓'],
\ ['Downarrow' , '⇓'],
2012-01-20 21:08:56 +01:00
\ ['ell' , ''],
\ ['emptyset' , '∅'],
\ ['equiv' , '≡'],
\ ['exists' , '∃'],
2011-09-21 19:22:10 +02:00
\ ['flat' , '♭'],
\ ['forall' , '∀'],
2012-01-20 21:08:56 +01:00
\ ['frown' , '⁔'],
\ ['ge' , '≥'],
\ ['geq' , '≥'],
\ ['gets' , '←'],
2012-01-20 21:08:56 +01:00
\ ['gg' , '⟫'],
2011-09-21 19:22:10 +02:00
\ ['hbar' , 'ℏ'],
\ ['heartsuit' , '♡'],
\ ['hookleftarrow' , '↩'],
\ ['hookrightarrow' , '↪'],
2017-01-28 18:34:47 +01:00
\ ['iff' , '⇔'],
\ ['Im' , ''],
2011-09-21 19:22:10 +02:00
\ ['imath' , 'ɩ'],
\ ['in' , '∈'],
\ ['infty' , '∞'],
\ ['int' , '∫'],
2017-01-28 18:34:47 +01:00
\ ['jmath' , '𝚥'],
\ ['land' , '∧'],
\ ['lceil' , '⌈'],
\ ['ldots' , '…'],
\ ['le' , '≤'],
2020-06-14 17:29:55 +02:00
\ ['left|' , '|'],
2020-07-26 17:00:44 +02:00
\ ['left\\|' , '‖'],
\ ['left(' , '('],
\ ['left\[' , '['],
\ ['left\\{' , '{'],
2015-01-10 15:09:25 +01:00
\ ['leftarrow' , '←'],
\ ['Leftarrow' , '⇐'],
2012-01-20 21:08:56 +01:00
\ ['leftharpoondown', '↽'],
\ ['leftharpoonup' , '↼'],
2012-11-15 21:28:22 +01:00
\ ['leftrightarrow' , '↔'],
2012-01-20 21:08:56 +01:00
\ ['Leftrightarrow' , '⇔'],
\ ['leq' , '≤'],
2012-01-20 21:08:56 +01:00
\ ['leq' , '≤'],
\ ['lfloor' , '⌊'],
2012-01-20 21:08:56 +01:00
\ ['ll' , '≪'],
2011-04-01 18:03:16 +02:00
\ ['lmoustache' , '╭'],
2017-01-28 18:34:47 +01:00
\ ['lor' , ''],
\ ['mapsto' , '↦'],
\ ['mid' , ''],
2012-01-20 21:08:56 +01:00
\ ['models' , '╞'],
\ ['mp' , '∓'],
\ ['nabla' , '∇'],
2011-09-21 19:22:10 +02:00
\ ['natural' , '♮'],
\ ['ne' , '≠'],
2012-01-20 21:08:56 +01:00
\ ['nearrow' , '↗'],
\ ['neg' , '¬'],
\ ['neq' , '≠'],
\ ['ni' , '∋'],
\ ['notin' , '∉'],
\ ['nwarrow' , '↖'],
\ ['odot' , '⊙'],
\ ['oint' , '∮'],
\ ['ominus' , '⊖'],
\ ['oplus' , '⊕'],
\ ['oslash' , '⊘'],
\ ['otimes' , '⊗'],
\ ['owns' , '∋'],
2011-09-21 19:22:10 +02:00
\ ['P' , '¶'],
2012-01-20 21:08:56 +01:00
\ ['parallel' , '║'],
\ ['partial' , '∂'],
\ ['perp' , '⊥'],
\ ['pm' , '±'],
\ ['prec' , '≺'],
\ ['preceq' , '⪯'],
2011-09-21 19:22:10 +02:00
\ ['prime' , ''],
\ ['prod' , '∏'],
\ ['propto' , '∝'],
\ ['rceil' , '⌉'],
\ ['Re' , ''],
2019-04-04 13:11:03 +02:00
\ ['quad' , ' '],
\ ['qquad' , ''],
\ ['rfloor' , '⌋'],
2020-06-14 17:29:55 +02:00
\ ['right|' , '|'],
\ ['right\\|' , '‖'],
\ ['right)' , ')'],
\ ['right]' , ']'],
\ ['right\\}' , '}'],
2015-01-10 15:09:25 +01:00
\ ['rightarrow' , '→'],
\ ['Rightarrow' , '⇒'],
2012-01-20 21:08:56 +01:00
\ ['rightleftharpoons', '⇌'],
2011-04-01 18:03:16 +02:00
\ ['rmoustache' , '╮'],
2011-09-21 19:22:10 +02:00
\ ['S' , '§'],
\ ['searrow' , '↘'],
\ ['setminus' , ''],
2011-09-21 19:22:10 +02:00
\ ['sharp' , '♯'],
\ ['sim' , ''],
2012-01-20 21:08:56 +01:00
\ ['simeq' , '⋍'],
\ ['smile' , '‿'],
2011-09-21 19:22:10 +02:00
\ ['spadesuit' , '♠'],
\ ['sqcap' , '⊓'],
\ ['sqcup' , '⊔'],
\ ['sqsubset' , '⊏'],
\ ['sqsubseteq' , '⊑'],
\ ['sqsupset' , '⊐'],
\ ['sqsupseteq' , '⊒'],
2012-01-20 21:08:56 +01:00
\ ['star' , '✫'],
\ ['subset' , '⊂'],
\ ['subseteq' , '⊆'],
\ ['succ' , '≻'],
\ ['succeq' , '⪰'],
\ ['sum' , '∑'],
2012-01-20 21:08:56 +01:00
\ ['supset' , '⊃'],
\ ['supseteq' , '⊇'],
\ ['surd' , '√'],
\ ['swarrow' , '↙'],
\ ['times' , '×'],
\ ['to' , '→'],
\ ['top' , ''],
2011-09-21 19:22:10 +02:00
\ ['triangle' , '∆'],
\ ['triangleleft' , '⊲'],
\ ['triangleright' , '⊳'],
\ ['uparrow' , '↑'],
\ ['Uparrow' , '⇑'],
\ ['updownarrow' , '↕'],
\ ['Updownarrow' , '⇕'],
\ ['vdash' , '⊢'],
\ ['vdots' , '⋮'],
\ ['vee' , ''],
\ ['wedge' , '∧'],
2011-09-21 19:22:10 +02:00
\ ['wp' , '℘'],
\ ['wr' , '≀']]
2017-01-28 18:34:47 +01:00
if &ambw == "double" || exists("g:tex_usedblwidth")
let s:texMathList= s:texMathList + [
\ ['right\\rangle' , '〉'],
\ ['left\\langle' , '〈']]
else
let s:texMathList= s:texMathList + [
\ ['right\\rangle' , '>'],
\ ['left\\langle' , '<']]
endif
for texmath in s:texMathList
2016-02-25 00:00:01 +01:00
if texmath[0] =~# '\w$'
2010-12-10 20:35:50 +01:00
exe "syn match texMathSymbol '\\\\".texmath[0]."\\>' contained conceal cchar=".texmath[1]
else
exe "syn match texMathSymbol '\\\\".texmath[0]."' contained conceal cchar=".texmath[1]
endif
endfor
if &ambw == "double"
syn match texMathSymbol '\\gg\>' contained conceal cchar=
syn match texMathSymbol '\\ll\>' contained conceal cchar=
else
syn match texMathSymbol '\\gg\>' contained conceal cchar=
syn match texMathSymbol '\\ll\>' contained conceal cchar=
endif
2011-09-21 19:22:10 +02:00
syn match texMathSymbol '\\hat{a}' contained conceal cchar=â
syn match texMathSymbol '\\hat{A}' contained conceal cchar=Â
syn match texMathSymbol '\\hat{c}' contained conceal cchar=ĉ
syn match texMathSymbol '\\hat{C}' contained conceal cchar=Ĉ
syn match texMathSymbol '\\hat{e}' contained conceal cchar=ê
syn match texMathSymbol '\\hat{E}' contained conceal cchar=Ê
syn match texMathSymbol '\\hat{g}' contained conceal cchar=ĝ
syn match texMathSymbol '\\hat{G}' contained conceal cchar=Ĝ
syn match texMathSymbol '\\hat{i}' contained conceal cchar=î
syn match texMathSymbol '\\hat{I}' contained conceal cchar=Î
syn match texMathSymbol '\\hat{o}' contained conceal cchar=ô
syn match texMathSymbol '\\hat{O}' contained conceal cchar=Ô
syn match texMathSymbol '\\hat{s}' contained conceal cchar=ŝ
syn match texMathSymbol '\\hat{S}' contained conceal cchar=Ŝ
syn match texMathSymbol '\\hat{u}' contained conceal cchar=û
syn match texMathSymbol '\\hat{U}' contained conceal cchar=Û
syn match texMathSymbol '\\hat{w}' contained conceal cchar=ŵ
syn match texMathSymbol '\\hat{W}' contained conceal cchar=Ŵ
syn match texMathSymbol '\\hat{y}' contained conceal cchar=ŷ
syn match texMathSymbol '\\hat{Y}' contained conceal cchar=Ŷ
2015-01-10 15:09:25 +01:00
" syn match texMathSymbol '\\bar{a}' contained conceal cchar=a̅
2018-04-06 11:14:11 +02:00
syn match texMathSymbol '\\dot{B}' contained conceal cchar=
syn match texMathSymbol '\\dot{b}' contained conceal cchar=
syn match texMathSymbol '\\dot{D}' contained conceal cchar=
syn match texMathSymbol '\\dot{d}' contained conceal cchar=
syn match texMathSymbol '\\dot{F}' contained conceal cchar=
syn match texMathSymbol '\\dot{f}' contained conceal cchar=
syn match texMathSymbol '\\dot{H}' contained conceal cchar=
syn match texMathSymbol '\\dot{h}' contained conceal cchar=
syn match texMathSymbol '\\dot{M}' contained conceal cchar=
syn match texMathSymbol '\\dot{m}' contained conceal cchar=
syn match texMathSymbol '\\dot{N}' contained conceal cchar=
syn match texMathSymbol '\\dot{n}' contained conceal cchar=
syn match texMathSymbol '\\dot{P}' contained conceal cchar=
syn match texMathSymbol '\\dot{p}' contained conceal cchar=
syn match texMathSymbol '\\dot{R}' contained conceal cchar=
syn match texMathSymbol '\\dot{r}' contained conceal cchar=
syn match texMathSymbol '\\dot{S}' contained conceal cchar=
syn match texMathSymbol '\\dot{s}' contained conceal cchar=
syn match texMathSymbol '\\dot{T}' contained conceal cchar=
syn match texMathSymbol '\\dot{t}' contained conceal cchar=
syn match texMathSymbol '\\dot{W}' contained conceal cchar=
syn match texMathSymbol '\\dot{w}' contained conceal cchar=
syn match texMathSymbol '\\dot{X}' contained conceal cchar=
syn match texMathSymbol '\\dot{x}' contained conceal cchar=
syn match texMathSymbol '\\dot{Y}' contained conceal cchar=
syn match texMathSymbol '\\dot{y}' contained conceal cchar=
syn match texMathSymbol '\\dot{Z}' contained conceal cchar=Ż
syn match texMathSymbol '\\dot{z}' contained conceal cchar=ż
syn match texMathSymbol '\\dot{C}' contained conceal cchar=Ċ
syn match texMathSymbol '\\dot{c}' contained conceal cchar=ċ
syn match texMathSymbol '\\dot{E}' contained conceal cchar=Ė
syn match texMathSymbol '\\dot{e}' contained conceal cchar=ė
syn match texMathSymbol '\\dot{G}' contained conceal cchar=Ġ
syn match texMathSymbol '\\dot{g}' contained conceal cchar=ġ
syn match texMathSymbol '\\dot{I}' contained conceal cchar=İ
syn match texMathSymbol '\\dot{A}' contained conceal cchar=Ȧ
syn match texMathSymbol '\\dot{a}' contained conceal cchar=ȧ
syn match texMathSymbol '\\dot{O}' contained conceal cchar=Ȯ
syn match texMathSymbol '\\dot{o}' contained conceal cchar=ȯ
endif
2010-07-26 22:51:56 +02:00
" Greek {{{2
2016-02-25 00:00:01 +01:00
if s:tex_conceal =~# 'g'
fun! s:Greek(group,pat,cchar)
exe 'syn match '.a:group." '".a:pat."' contained conceal cchar=".a:cchar
endfun
call s:Greek('texGreek','\\alpha\>' ,'α')
call s:Greek('texGreek','\\beta\>' ,'β')
call s:Greek('texGreek','\\gamma\>' ,'γ')
call s:Greek('texGreek','\\delta\>' ,'δ')
call s:Greek('texGreek','\\epsilon\>' ,'ϵ')
call s:Greek('texGreek','\\varepsilon\>' ,'ε')
call s:Greek('texGreek','\\zeta\>' ,'ζ')
call s:Greek('texGreek','\\eta\>' ,'η')
call s:Greek('texGreek','\\theta\>' ,'θ')
2015-01-10 15:09:25 +01:00
call s:Greek('texGreek','\\vartheta\>' ,'ϑ')
2019-06-22 02:13:00 +02:00
call s:Greek('texGreek','\\iota\>' ,'ι')
call s:Greek('texGreek','\\kappa\>' ,'κ')
call s:Greek('texGreek','\\lambda\>' ,'λ')
call s:Greek('texGreek','\\mu\>' ,'μ')
call s:Greek('texGreek','\\nu\>' ,'ν')
call s:Greek('texGreek','\\xi\>' ,'ξ')
call s:Greek('texGreek','\\pi\>' ,'π')
call s:Greek('texGreek','\\varpi\>' ,'ϖ')
call s:Greek('texGreek','\\rho\>' ,'ρ')
call s:Greek('texGreek','\\varrho\>' ,'ϱ')
call s:Greek('texGreek','\\sigma\>' ,'σ')
2015-01-10 15:09:25 +01:00
call s:Greek('texGreek','\\varsigma\>' ,'ς')
call s:Greek('texGreek','\\tau\>' ,'τ')
call s:Greek('texGreek','\\upsilon\>' ,'υ')
2015-01-10 15:09:25 +01:00
call s:Greek('texGreek','\\phi\>' ,'ϕ')
call s:Greek('texGreek','\\varphi\>' ,'φ')
call s:Greek('texGreek','\\chi\>' ,'χ')
call s:Greek('texGreek','\\psi\>' ,'ψ')
call s:Greek('texGreek','\\omega\>' ,'ω')
call s:Greek('texGreek','\\Gamma\>' ,'Γ')
call s:Greek('texGreek','\\Delta\>' ,'Δ')
call s:Greek('texGreek','\\Theta\>' ,'Θ')
call s:Greek('texGreek','\\Lambda\>' ,'Λ')
2019-06-22 02:13:00 +02:00
call s:Greek('texGreek','\\Xi\>' ,'Ξ')
call s:Greek('texGreek','\\Pi\>' ,'Π')
call s:Greek('texGreek','\\Sigma\>' ,'Σ')
call s:Greek('texGreek','\\Upsilon\>' ,'Υ')
call s:Greek('texGreek','\\Phi\>' ,'Φ')
2019-06-22 02:13:00 +02:00
call s:Greek('texGreek','\\Chi\>' ,'Χ')
call s:Greek('texGreek','\\Psi\>' ,'Ψ')
call s:Greek('texGreek','\\Omega\>' ,'Ω')
delfun s:Greek
endif
2010-07-26 22:51:56 +02:00
" Superscripts/Subscripts {{{2
2016-02-25 00:00:01 +01:00
if s:tex_conceal =~# 's'
if s:tex_fast =~# 's'
2022-04-27 15:25:03 +01:00
syn region texSuperscript matchgroup=texDelimiter start='\^{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSuperscripts,texStatement,texSubscript,texSuperscript,texMathMatcher
syn region texSubscript matchgroup=texDelimiter start='_{' skip="\\\\\|\\[{}]" end='}' contained concealends contains=texSpecialChar,texSubscripts,texStatement,texSubscript,texSuperscript,texMathMatcher
2013-03-19 11:35:58 +01:00
endif
2015-06-19 13:27:23 +02:00
" s:SuperSub:
fun! s:SuperSub(group,leader,pat,cchar)
2016-04-12 21:07:15 +02:00
if a:pat =~# '^\\' || (a:leader == '\^' && a:pat =~# s:tex_superscripts) || (a:leader == '_' && a:pat =~# s:tex_subscripts)
2014-09-09 18:48:09 +02:00
" call Decho("SuperSub: group<".a:group."> leader<".a:leader."> pat<".a:pat."> cchar<".a:cchar.">")
exe 'syn match '.a:group." '".a:leader.a:pat."' contained conceal cchar=".a:cchar
2015-06-19 13:27:23 +02:00
exe 'syn match '.a:group."s '".a:pat ."' contained conceal cchar=".a:cchar.' nextgroup='.a:group.'s'
2014-09-09 18:48:09 +02:00
endif
endfun
call s:SuperSub('texSuperscript','\^','0','⁰')
call s:SuperSub('texSuperscript','\^','1','¹')
call s:SuperSub('texSuperscript','\^','2','²')
call s:SuperSub('texSuperscript','\^','3','³')
call s:SuperSub('texSuperscript','\^','4','⁴')
call s:SuperSub('texSuperscript','\^','5','⁵')
call s:SuperSub('texSuperscript','\^','6','⁶')
call s:SuperSub('texSuperscript','\^','7','⁷')
call s:SuperSub('texSuperscript','\^','8','⁸')
call s:SuperSub('texSuperscript','\^','9','⁹')
call s:SuperSub('texSuperscript','\^','a','ᵃ')
call s:SuperSub('texSuperscript','\^','b','ᵇ')
call s:SuperSub('texSuperscript','\^','c','ᶜ')
call s:SuperSub('texSuperscript','\^','d','ᵈ')
call s:SuperSub('texSuperscript','\^','e','ᵉ')
call s:SuperSub('texSuperscript','\^','f','ᶠ')
call s:SuperSub('texSuperscript','\^','g','ᵍ')
call s:SuperSub('texSuperscript','\^','h','ʰ')
call s:SuperSub('texSuperscript','\^','i','ⁱ')
call s:SuperSub('texSuperscript','\^','j','ʲ')
call s:SuperSub('texSuperscript','\^','k','ᵏ')
call s:SuperSub('texSuperscript','\^','l','ˡ')
call s:SuperSub('texSuperscript','\^','m','ᵐ')
call s:SuperSub('texSuperscript','\^','n','ⁿ')
call s:SuperSub('texSuperscript','\^','o','ᵒ')
call s:SuperSub('texSuperscript','\^','p','ᵖ')
call s:SuperSub('texSuperscript','\^','r','ʳ')
call s:SuperSub('texSuperscript','\^','s','ˢ')
call s:SuperSub('texSuperscript','\^','t','ᵗ')
call s:SuperSub('texSuperscript','\^','u','ᵘ')
call s:SuperSub('texSuperscript','\^','v','ᵛ')
call s:SuperSub('texSuperscript','\^','w','ʷ')
call s:SuperSub('texSuperscript','\^','x','ˣ')
call s:SuperSub('texSuperscript','\^','y','ʸ')
call s:SuperSub('texSuperscript','\^','z','ᶻ')
call s:SuperSub('texSuperscript','\^','A','ᴬ')
call s:SuperSub('texSuperscript','\^','B','ᴮ')
call s:SuperSub('texSuperscript','\^','D','ᴰ')
call s:SuperSub('texSuperscript','\^','E','ᴱ')
call s:SuperSub('texSuperscript','\^','G','ᴳ')
call s:SuperSub('texSuperscript','\^','H','ᴴ')
call s:SuperSub('texSuperscript','\^','I','ᴵ')
call s:SuperSub('texSuperscript','\^','J','ᴶ')
call s:SuperSub('texSuperscript','\^','K','ᴷ')
call s:SuperSub('texSuperscript','\^','L','ᴸ')
call s:SuperSub('texSuperscript','\^','M','ᴹ')
call s:SuperSub('texSuperscript','\^','N','ᴺ')
call s:SuperSub('texSuperscript','\^','O','ᴼ')
call s:SuperSub('texSuperscript','\^','P','ᴾ')
call s:SuperSub('texSuperscript','\^','R','ᴿ')
call s:SuperSub('texSuperscript','\^','T','ᵀ')
call s:SuperSub('texSuperscript','\^','U','ᵁ')
2020-05-26 21:20:45 +02:00
call s:SuperSub('texSuperscript','\^','V','ⱽ')
call s:SuperSub('texSuperscript','\^','W','ᵂ')
2012-01-20 21:08:56 +01:00
call s:SuperSub('texSuperscript','\^',',','︐')
call s:SuperSub('texSuperscript','\^',':','︓')
call s:SuperSub('texSuperscript','\^',';','︔')
call s:SuperSub('texSuperscript','\^','+','⁺')
call s:SuperSub('texSuperscript','\^','-','⁻')
call s:SuperSub('texSuperscript','\^','<','˂')
call s:SuperSub('texSuperscript','\^','>','˃')
call s:SuperSub('texSuperscript','\^','/','ˊ')
call s:SuperSub('texSuperscript','\^','(','⁽')
call s:SuperSub('texSuperscript','\^',')','⁾')
call s:SuperSub('texSuperscript','\^','\.','˙')
call s:SuperSub('texSuperscript','\^','=','˭')
call s:SuperSub('texSubscript','_','0','₀')
call s:SuperSub('texSubscript','_','1','₁')
call s:SuperSub('texSubscript','_','2','₂')
call s:SuperSub('texSubscript','_','3','₃')
call s:SuperSub('texSubscript','_','4','₄')
call s:SuperSub('texSubscript','_','5','₅')
call s:SuperSub('texSubscript','_','6','₆')
call s:SuperSub('texSubscript','_','7','₇')
call s:SuperSub('texSubscript','_','8','₈')
call s:SuperSub('texSubscript','_','9','₉')
call s:SuperSub('texSubscript','_','a','ₐ')
call s:SuperSub('texSubscript','_','e','ₑ')
2016-06-26 16:17:58 +02:00
call s:SuperSub('texSubscript','_','h','ₕ')
call s:SuperSub('texSubscript','_','i','ᵢ')
2016-06-26 16:17:58 +02:00
call s:SuperSub('texSubscript','_','j','ⱼ')
call s:SuperSub('texSubscript','_','k','ₖ')
call s:SuperSub('texSubscript','_','l','ₗ')
call s:SuperSub('texSubscript','_','m','ₘ')
call s:SuperSub('texSubscript','_','n','ₙ')
call s:SuperSub('texSubscript','_','o','ₒ')
2016-06-26 16:17:58 +02:00
call s:SuperSub('texSubscript','_','p','ₚ')
call s:SuperSub('texSubscript','_','r','ᵣ')
call s:SuperSub('texSubscript','_','s','ₛ')
call s:SuperSub('texSubscript','_','t','ₜ')
call s:SuperSub('texSubscript','_','u','ᵤ')
2016-06-26 16:17:58 +02:00
call s:SuperSub('texSubscript','_','v','ᵥ')
call s:SuperSub('texSubscript','_','x','ₓ')
2012-01-20 21:08:56 +01:00
call s:SuperSub('texSubscript','_',',','︐')
call s:SuperSub('texSubscript','_','+','₊')
call s:SuperSub('texSubscript','_','-','₋')
call s:SuperSub('texSubscript','_','/','ˏ')
call s:SuperSub('texSubscript','_','(','₍')
call s:SuperSub('texSubscript','_',')','₎')
call s:SuperSub('texSubscript','_','\.','‸')
call s:SuperSub('texSubscript','_','r','ᵣ')
call s:SuperSub('texSubscript','_','v','ᵥ')
call s:SuperSub('texSubscript','_','x','ₓ')
call s:SuperSub('texSubscript','_','\\beta\>' ,'ᵦ')
call s:SuperSub('texSubscript','_','\\delta\>','ᵨ')
call s:SuperSub('texSubscript','_','\\phi\>' ,'ᵩ')
call s:SuperSub('texSubscript','_','\\gamma\>','ᵧ')
call s:SuperSub('texSubscript','_','\\chi\>' ,'ᵪ')
2016-06-26 16:17:58 +02:00
delfun s:SuperSub
endif
2010-07-26 22:51:56 +02:00
2017-11-05 18:19:24 +01:00
" Accented characters and Ligatures: {{{2
2016-02-25 00:00:01 +01:00
if s:tex_conceal =~# 'a'
if b:tex_stylish
syn match texAccent "\\[bcdvuH][^a-zA-Z@]"me=e-1
2017-11-05 18:19:24 +01:00
syn match texLigature "\\\([ijolL]\|ae\|oe\|ss\|AA\|AE\|OE\)[^a-zA-Z@]"me=e-1
syn match texLigature '--'
syn match texLigature '---'
else
fun! s:Accents(chr,...)
let i= 1
2014-03-22 21:02:50 +01:00
for accent in ["`","\\'","^",'"','\~','\.','=',"c","H","k","r","u","v"]
if i > a:0
break
endif
if strlen(a:{i}) == 0 || a:{i} == ' ' || a:{i} == '?'
let i= i + 1
continue
endif
2016-02-25 00:00:01 +01:00
if accent =~# '\a'
exe "syn match texAccent '".'\\'.accent.'\(\s*{'.a:chr.'}\|\s\+'.a:chr.'\)'."' conceal cchar=".a:{i}
else
exe "syn match texAccent '".'\\'.accent.'\s*\({'.a:chr.'}\|'.a:chr.'\)'."' conceal cchar=".a:{i}
endif
let i= i + 1
endfor
endfun
2014-09-09 18:48:09 +02:00
" \` \' \^ \" \~ \. \= \c \H \k \r \u \v
call s:Accents('a','à','á','â','ä','ã','ȧ','ā',' ',' ','ą','å','ă','ǎ')
call s:Accents('A','À','Á','Â','Ä','Ã','Ȧ','Ā',' ',' ','Ą','Å','Ă','Ǎ')
call s:Accents('c',' ','ć','ĉ',' ',' ','ċ',' ','ç',' ',' ',' ',' ','č')
call s:Accents('C',' ','Ć','Ĉ',' ',' ','Ċ',' ','Ç',' ',' ',' ',' ','Č')
call s:Accents('d',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ď')
call s:Accents('D',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Ď')
call s:Accents('e','è','é','ê','ë','ẽ','ė','ē','ȩ',' ','ę',' ','ĕ','ě')
call s:Accents('E','È','É','Ê','Ë','Ẽ','Ė','Ē','Ȩ',' ','Ę',' ','Ĕ','Ě')
call s:Accents('g',' ','ǵ','ĝ',' ',' ','ġ',' ','ģ',' ',' ',' ','ğ','ǧ')
call s:Accents('G',' ','Ǵ','Ĝ',' ',' ','Ġ',' ','Ģ',' ',' ',' ','Ğ','Ǧ')
call s:Accents('h',' ',' ','ĥ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ȟ')
call s:Accents('H',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Ȟ')
call s:Accents('i','ì','í','î','ï','ĩ','į','ī',' ',' ','į',' ','ĭ','ǐ')
call s:Accents('I','Ì','Í','Î','Ï','Ĩ','İ','Ī',' ',' ','Į',' ','Ĭ','Ǐ')
call s:Accents('J',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ǰ')
call s:Accents('k',' ',' ',' ',' ',' ',' ',' ','ķ',' ',' ',' ',' ','ǩ')
call s:Accents('K',' ',' ',' ',' ',' ',' ',' ','Ķ',' ',' ',' ',' ','Ǩ')
call s:Accents('l',' ','ĺ','ľ',' ',' ',' ',' ','ļ',' ',' ',' ',' ','ľ')
call s:Accents('L',' ','Ĺ','Ľ',' ',' ',' ',' ','Ļ',' ',' ',' ',' ','Ľ')
call s:Accents('n',' ','ń',' ',' ','ñ',' ',' ','ņ',' ',' ',' ',' ','ň')
call s:Accents('N',' ','Ń',' ',' ','Ñ',' ',' ','Ņ',' ',' ',' ',' ','Ň')
call s:Accents('o','ò','ó','ô','ö','õ','ȯ','ō',' ','ő','ǫ',' ','ŏ','ǒ')
call s:Accents('O','Ò','Ó','Ô','Ö','Õ','Ȯ','Ō',' ','Ő','Ǫ',' ','Ŏ','Ǒ')
call s:Accents('r',' ','ŕ',' ',' ',' ',' ',' ','ŗ',' ',' ',' ',' ','ř')
call s:Accents('R',' ','Ŕ',' ',' ',' ',' ',' ','Ŗ',' ',' ',' ',' ','Ř')
call s:Accents('s',' ','ś','ŝ',' ',' ',' ',' ','ş',' ','ȿ',' ',' ','š')
call s:Accents('S',' ','Ś','Ŝ',' ',' ',' ',' ','Ş',' ',' ',' ',' ','Š')
call s:Accents('t',' ',' ',' ',' ',' ',' ',' ','ţ',' ',' ',' ',' ','ť')
call s:Accents('T',' ',' ',' ',' ',' ',' ',' ','Ţ',' ',' ',' ',' ','Ť')
call s:Accents('u','ù','ú','û','ü','ũ',' ','ū',' ','ű','ų','ů','ŭ','ǔ')
call s:Accents('U','Ù','Ú','Û','Ü','Ũ',' ','Ū',' ','Ű','Ų','Ů','Ŭ','Ǔ')
call s:Accents('w',' ',' ','ŵ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ')
call s:Accents('W',' ',' ','Ŵ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ')
call s:Accents('y','ỳ','ý','ŷ','ÿ','ỹ',' ',' ',' ',' ',' ',' ',' ',' ')
call s:Accents('Y','Ỳ','Ý','Ŷ','Ÿ','Ỹ',' ',' ',' ',' ',' ',' ',' ',' ')
call s:Accents('z',' ','ź',' ',' ',' ','ż',' ',' ',' ',' ',' ',' ','ž')
call s:Accents('Z',' ','Ź',' ',' ',' ','Ż',' ',' ',' ',' ',' ',' ','Ž')
2014-03-22 21:02:50 +01:00
call s:Accents('\\i','ì','í','î','ï','ĩ','į',' ',' ',' ',' ',' ','ĭ',' ')
" \` \' \^ \" \~ \. \= \c \H \k \r \u \v
delfun s:Accents
2017-11-05 18:19:24 +01:00
syn match texAccent '\\aa\>' conceal cchar=å
syn match texAccent '\\AA\>' conceal cchar=Å
syn match texAccent '\\o\>' conceal cchar=ø
syn match texAccent '\\O\>' conceal cchar=Ø
syn match texLigature '\\AE\>' conceal cchar=Æ
syn match texLigature '\\ae\>' conceal cchar=æ
syn match texLigature '\\oe\>' conceal cchar=œ
syn match texLigature '\\OE\>' conceal cchar=Œ
syn match texLigature '\\ss\>' conceal cchar=ß
2017-11-05 18:19:24 +01:00
syn match texLigature '--' conceal cchar=
syn match texLigature '---' conceal cchar=
endif
2010-07-26 22:51:56 +02:00
endif
endif
" ---------------------------------------------------------------------
2004-06-13 20:20:40 +00:00
" LaTeX synchronization: {{{1
syn sync maxlines=200
syn sync minlines=50
syn sync match texSyncStop groupthere NONE "%stopzone\>"
" Synchronization: {{{1
" The $..$ and $$..$$ make for impossible sync patterns
" (one can't tell if a "$$" starts or stops a math zone by itself)
" The following grouptheres coupled with minlines above
" help improve the odds of good syncing.
2015-01-10 15:09:25 +01:00
if !exists("g:tex_no_math")
2004-06-13 20:20:40 +00:00
syn sync match texSyncMathZoneA groupthere NONE "\\end{abstract}"
syn sync match texSyncMathZoneA groupthere NONE "\\end{center}"
syn sync match texSyncMathZoneA groupthere NONE "\\end{description}"
syn sync match texSyncMathZoneA groupthere NONE "\\end{enumerate}"
syn sync match texSyncMathZoneA groupthere NONE "\\end{itemize}"
syn sync match texSyncMathZoneA groupthere NONE "\\end{table}"
syn sync match texSyncMathZoneA groupthere NONE "\\end{tabular}"
syn sync match texSyncMathZoneA groupthere NONE "\\\(sub\)*section\>"
endif
" ---------------------------------------------------------------------
2004-06-13 20:20:40 +00:00
" Highlighting: {{{1
" Define the default highlighting. {{{1
if !exists("skip_tex_syntax_inits")
2004-06-13 20:20:40 +00:00
" TeX highlighting groups which should share similar highlighting
2014-09-09 18:48:09 +02:00
if !exists("g:tex_no_error")
if !exists("g:tex_no_math")
hi def link texBadMath texError
2022-04-27 15:25:03 +01:00
hi def link texBadPar texBadMath
2016-10-27 17:00:16 +02:00
hi def link texMathDelimBad texError
hi def link texMathError texError
2004-06-13 20:20:40 +00:00
if !b:tex_stylish
2016-10-27 17:00:16 +02:00
hi def link texOnlyMath texError
2004-06-13 20:20:40 +00:00
endif
endif
2016-10-27 17:00:16 +02:00
hi def link texError Error
2004-06-13 20:20:40 +00:00
endif
2012-04-25 19:07:41 +02:00
hi texBoldStyle gui=bold cterm=bold
hi texItalStyle gui=italic cterm=italic
hi texBoldItalStyle gui=bold,italic cterm=bold,italic
hi texItalBoldStyle gui=bold,italic cterm=bold,italic
2019-04-04 13:11:03 +02:00
hi def link texEmphStyle texItalStyle
hi def link texCite texRefZone
hi def link texDefCmd texDef
2016-10-27 17:00:16 +02:00
hi def link texDefName texDef
hi def link texDocType texCmdName
hi def link texDocTypeArgs texCmdArgs
hi def link texInputFileOpt texCmdArgs
hi def link texInputCurlies texDelimiter
2016-10-27 17:00:16 +02:00
hi def link texLigature texSpecialChar
2015-01-10 15:09:25 +01:00
if !exists("g:tex_no_math")
hi def link texMathDelimSet1 texMathDelim
hi def link texMathDelimSet2 texMathDelim
hi def link texMathDelimKey texMathDelim
hi def link texMathMatcher texMath
2016-10-27 17:00:16 +02:00
hi def link texAccent texStatement
hi def link texGreek texStatement
hi def link texSuperscript texStatement
2016-10-27 17:00:16 +02:00
hi def link texSubscript texStatement
hi def link texSuperscripts texSuperscript
hi def link texSubscripts texSubscript
2016-10-27 17:00:16 +02:00
hi def link texMathSymbol texStatement
hi def link texMathZoneV texMath
hi def link texMathZoneW texMath
hi def link texMathZoneX texMath
hi def link texMathZoneY texMath
hi def link texMathZoneV texMath
hi def link texMathZoneZ texMath
2004-06-13 20:20:40 +00:00
endif
2016-10-27 17:00:16 +02:00
hi def link texBeginEnd texCmdName
hi def link texBeginEndName texSection
2016-10-27 17:00:16 +02:00
hi def link texSpaceCode texStatement
hi def link texStyleStatement texStatement
2016-10-27 17:00:16 +02:00
hi def link texTypeSize texType
hi def link texTypeStyle texType
2004-06-13 20:20:40 +00:00
" Basic TeX highlighting groups
2016-10-27 17:00:16 +02:00
hi def link texCmdArgs Number
hi def link texCmdName Statement
hi def link texComment Comment
hi def link texDef Statement
hi def link texDefParm Special
hi def link texDelimiter Delimiter
hi def link texInput Special
2016-10-27 17:00:16 +02:00
hi def link texInputFile Special
hi def link texLength Number
hi def link texMath Special
2016-10-27 17:00:16 +02:00
hi def link texMathDelim Statement
hi def link texMathOper Operator
hi def link texNewCmd Statement
hi def link texNewEnv Statement
hi def link texOption Number
2016-10-27 17:00:16 +02:00
hi def link texRefZone Special
hi def link texSection PreCondit
hi def link texSpaceCodeChar Special
2016-10-27 17:00:16 +02:00
hi def link texSpecialChar SpecialChar
hi def link texStatement Statement
hi def link texString String
hi def link texTodo Todo
hi def link texType Type
hi def link texZone PreCondit
2004-06-13 20:20:40 +00:00
endif
2011-10-20 22:22:38 +02:00
" Cleanup: {{{1
2015-10-30 14:37:44 +01:00
delc TexFold
2010-12-10 20:35:50 +01:00
unlet s:extfname
2004-06-13 20:20:40 +00:00
let b:current_syntax = "tex"
2011-10-20 22:22:38 +02:00
let &cpo = s:keepcpo
unlet s:keepcpo
2010-08-05 22:08:47 +02:00
" vim: ts=8 fdm=marker