-" Vim syntax file
-" Language: TeX
-" Maintainer: Dr. Charles E. Campbell, Jr. <NdrchipO@ScampbellPfamily.AbizM>
-" Last Change: Feb 27, 2007
-" Version: 37
-" URL: http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax
-"
-" 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
-
-" Version Clears: {{{1
-" For version 5.x: Clear all syntax items
-" For version 6.x: Quit when a syntax file was already loaded
-if version < 600
- syntax clear
-elseif exists("b:current_syntax")
- finish
-endif
-
-" Define the default highlighting. {{{1
-" For version 5.7 and earlier: only when not done already
-" For version 5.8 and later: only when an item doesn't have highlighting yet
-if version >= 508 || !exists("did_tex_syntax_inits")
- let did_tex_syntax_inits = 1
- if version < 508
- command -nargs=+ HiLink hi link <args>
- else
- command -nargs=+ HiLink hi def link <args>
- endif
-endif
-if exists("g:tex_tex") && !exists("g:tex_no_error")
- let g:tex_no_error= 1
-endif
-
-" Determine whether or not to use "*.sty" mode {{{1
-" 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
-let b:extfname=expand("%:e")
-if exists("g:tex_stylish")
- let b:tex_stylish= g:tex_stylish
-elseif !exists("b:tex_stylish")
- if b:extfname == "sty" || b:extfname == "cls" || b:extfname == "clo" || b:extfname == "dtx" || b:extfname == "ltx"
- let b:tex_stylish= 1
- else
- let b:tex_stylish= 0
- endif
-endif
-
-" handle folding {{{1
-if !exists("g:tex_fold_enabled")
- let g:tex_fold_enabled= 0
-elseif g:tex_fold_enabled && !has("folding")
- let g:tex_fold_enabled= 0
- echomsg "Ignoring g:tex_fold_enabled=".g:tex_fold_enabled."; need to re-compile vim for +fold support"
-endif
-if g:tex_fold_enabled && &fdm == "manual"
- set fdm=syntax
-endif
-
-" (La)TeX keywords: only use the letters a-zA-Z {{{1
-" but _ is the only one that causes problems.
-if version < 600
- set isk-=_
- if b:tex_stylish
- set isk+=@
- endif
-else
- setlocal isk-=_
- if b:tex_stylish
- setlocal isk+=@
- endif
-endif
-
-" Clusters: {{{1
-" --------
-syn cluster texCmdGroup contains=texCmdBody,texComment,texDefParm,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texSectionMarker,texSectionName,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texURLZone,texAcroZone
-if !exists("g:tex_no_error")
- syn cluster texCmdGroup add=texMathError
-endif
-syn cluster texEnvGroup contains=texMatcher,texMathDelim,texSpecialChar,texStatement
-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,texSectionMarker,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texURLZone,texAcroZone
-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,texURLZone,texAcroZone,@Spell
-syn cluster texRefGroup contains=texMatcher,texComment,texDelimiter
-if !exists("tex_no_math")
- 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=texComment,texDelimiter,texLength,texMathDelim,texMathMatcher,texMathOper,texRefZone,texSpecialChar,texStatement,texTypeSize,texTypeStyle
- if !exists("g:tex_no_error")
- syn cluster texMathMatchGroup add=texMathError
- syn cluster texMathZoneGroup add=texMathError
- endif
- syn cluster texMathZoneGroup add=@NoSpell
- " 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
-endif
-syn cluster texURLGroup contains=texMatcher,@NoSpell
-syn cluster texAcroGroup contains=texMatcher,@NoSpell
-
-" Try to flag {} and () mismatches: {{{1
-if !exists("g:tex_no_error")
- syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texMatchGroup,texError
- syn region texMatcher matchgroup=Delimiter start="\[" end="]" contains=@texMatchGroup,texError
-else
- syn region texMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]" end="}" contains=@texMatchGroup
- syn region texMatcher matchgroup=Delimiter start="\[" end="]" contains=@texMatchGroup
-endif
-syn region texParen start="(" end=")" contains=@texMatchGroup,@Spell
-if !exists("g:tex_no_error")
- syn match texError "[}\])]"
-endif
-if !exists("tex_no_math")
- if !exists("g:tex_no_error")
- syn match texMathError "}" contained
- endif
- syn region texMathMatcher matchgroup=Delimiter start="{" skip="\\\\\|\\}" end="}" end="%stopzone\>" contained contains=@texMathMatchGroup
-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\+"
- if !exists("g:tex_no_error")
- syn match texError "\\\a*@[a-zA-Z@]*"
- endif
-endif
-
-" TeX/LaTeX delimiters: {{{1
-syn match texDelimiter "&"
-syn match texDelimiter "\\\\"
-
-" Tex/Latex Options: {{{1
-syn match texOption "[^\\]\zs#\d\+\|^#\d\+"
-
-" 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\)$"
-
-" \begin{}/\end{} section markers: {{{1
-syn match texSectionMarker "\\begin\>\|\\end\>" nextgroup=texSectionName
-syn region texSectionName matchgroup=Delimiter start="{" end="}" contained nextgroup=texSectionModifier
-syn region texSectionModifier matchgroup=Delimiter start="\[" end="]" contained
-
-" \documentclass, \documentstyle, \usepackage: {{{1
-syn match texDocType "\\documentclass\>\|\\documentstyle\>\|\\usepackage\>" nextgroup=texSectionName,texDocTypeArgs
-syn region texDocTypeArgs matchgroup=Delimiter start="\[" end="]" contained nextgroup=texSectionName
-
-" Preamble syntax-based folding support: {{{1
-if g:tex_fold_enabled && has("folding")
- syn region texPreamble transparent fold start='\zs\\documentclass\>' end='\ze\\begin{document}' contains=@texMatchGroup
-endif
-
-" TeX input: {{{1
-syn match texInput "\\input\s\+[a-zA-Z/.0-9_^]\+"hs=s+7 contains=texStatement
-syn match texInputFile "\\include\(graphics\|list\)\=\(\[.\{-}\]\)\=\s*{.\{-}}" contains=texStatement,texInputCurlies
-syn match texInputFile "\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}" contains=texStatement,texInputCurlies,texInputFileOpt
-syn match texInputCurlies "[{}]" contained
-syn region texInputFileOpt matchgroup=Delimiter start="\[" end="\]" contained
-
-" 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
-syn match texTypeStyle "\\textbf\>"
-syn match texTypeStyle "\\textit\>"
-syn match texTypeStyle "\\textmd\>"
-syn match texTypeStyle "\\textrm\>"
-syn match texTypeStyle "\\textsc\>"
-syn match texTypeStyle "\\textsf\>"
-syn match texTypeStyle "\\textsl\>"
-syn match texTypeStyle "\\texttt\>"
-syn match texTypeStyle "\\textup\>"
-syn match texTypeStyle "\\emph\>"
-
-syn match texTypeStyle "\\mathbb\>"
-syn match texTypeStyle "\\mathbf\>"
-syn match texTypeStyle "\\mathcal\>"
-syn match texTypeStyle "\\mathfrak\>"
-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
-if g:tex_fold_enabled && has("folding")
- syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' fold contains=@texFoldGroup,@texDocGroup,@Spell
- syn region texPartZone matchgroup=texSection start='\\part\>' end='\n\ze\s*\\part\>' fold contains=@texFoldGroup,@texPartGroup,@Spell
- syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\n\ze\s*\\chapter\>' fold contains=@texFoldGroup,@texChapterGroup,@Spell
- syn region texSectionZone matchgroup=texSection start='\\section\>' end='\n\ze\s*\\section\>' fold contains=@texFoldGroup,@texSectionGroup,@Spell
- syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\n\ze\s*\\subsection\>' fold contains=@texFoldGroup,@texSubSectionGroup,@Spell
- syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\n\ze\s*\\subsubsection\>' fold contains=@texFoldGroup,@texSubSubSectionGroup,@Spell
- syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\n\ze\s*\\paragraph\>' fold contains=@texFoldGroup,@texParaGroup,@Spell
- syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\n\ze\s*\\subparagraph\>' fold contains=@texFoldGroup,@Spell
- syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' fold contains=@texFoldGroup,@Spell
- syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' fold contains=@texFoldGroup,@Spell
-else
- syn region texDocZone matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}' contains=@texFoldGroup,@texDocGroup,@Spell
- syn region texPartZone matchgroup=texSection start='\\part\>' end='\n\ze\s*\\part\>' contains=@texFoldGroup,@texPartGroup,@Spell
- syn region texChapterZone matchgroup=texSection start='\\chapter\>' end='\n\ze\s*\\chapter\>' contains=@texFoldGroup,@texChapterGroup,@Spell
- syn region texSectionZone matchgroup=texSection start='\\section\>' end='\n\ze\s*\\section\>' contains=@texFoldGroup,@texSectionGroup,@Spell
- syn region texSubSectionZone matchgroup=texSection start='\\subsection\>' end='\n\ze\s*\\subsection\>' contains=@texFoldGroup,@texSubSectionGroup,@Spell
- syn region texSubSubSectionZone matchgroup=texSection start='\\subsubsection\>' end='\n\ze\s*\\subsubsection\>' contains=@texFoldGroup,@texSubSubSectionGroup,@Spell
- syn region texParaZone matchgroup=texSection start='\\paragraph\>' end='\n\ze\s*\\paragraph\>' contains=@texFoldGroup,@texParaGroup,@Spell
- syn region texSubParaZone matchgroup=texSection start='\\subparagraph\>' end='\n\ze\s*\\subparagraph\>' contains=@texFoldGroup,@Spell
- syn region texTitle matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}' contains=@texFoldGroup,@Spell
- syn region texAbstract matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}' contains=@texFoldGroup,@Spell
-endif
-
-" Bad Math (mismatched): {{{1
-if !exists("tex_no_math")
- syn match texBadMath "\\end\s*{\s*\(array\|gathered\|bBpvV]matrix\|split\|subequations\|smallmatrix\|xxalignat\)\s*}"
- syn match texBadMath "\\end\s*{\s*\(align\|alignat\|displaymath\|displaymath\|eqnarray\|equation\|flalign\|gather\|math\|multline\|xalignat\)\*\=\s*}"
- syn match texBadMath "\\[\])]"
-endif
-
-" Math Zones: {{{1
-if !exists("tex_no_math")
- " TexNewMathZone: function creates a mathzone with the given suffix and mathzone name. {{{2
- " Starred forms are created if starform is true. Starred
- " forms have syntax group and synchronization groups with a
- " "S" appended. Handles: cluster, syntax, sync, and HiLink.
- fun! TexNewMathZone(sfx,mathzone,starform)
- let grpname = "texMathZone".a:sfx
- let syncname = "texSyncMathZone".a:sfx
- exe "syn cluster texMathZones add=".grpname
- exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'
- 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*}"'
- exe 'HiLink '.grpname.' texMath'
- if a:starform
- let grpname = "texMathZone".a:sfx.'S'
- let syncname = "texSyncMathZone".a:sfx.'S'
- exe "syn cluster texMathZones add=".grpname
- exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'
- 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*}"'
- exe 'HiLink '.grpname.' texMath'
- endif
- endfun
-
- " Standard Math Zones: {{{2
- call TexNewMathZone("A","align",1)
- call TexNewMathZone("B","alignat",1)
- call TexNewMathZone("C","displaymath",1)
- call TexNewMathZone("D","eqnarray",1)
- call TexNewMathZone("E","equation",1)
- call TexNewMathZone("F","flalign",1)
- call TexNewMathZone("G","gather",1)
- call TexNewMathZone("H","math",1)
- call TexNewMathZone("I","multline",1)
- call TexNewMathZone("J","subequations",0)
- call TexNewMathZone("K","xalignat",1)
- call TexNewMathZone("L","xxalignat",0)
-
- " Inline Math Zones: {{{2
- syn region texMathZoneV matchgroup=Delimiter start="\\(" matchgroup=Delimiter end="\\)\|%stopzone\>" keepend contains=@texMathZoneGroup
- syn region texMathZoneW matchgroup=Delimiter start="\\\[" matchgroup=Delimiter end="\\]\|%stopzone\>" keepend contains=@texMathZoneGroup
- syn region texMathZoneX matchgroup=Delimiter start="\$" skip="\\\\\|\\\$" matchgroup=Delimiter end="\$" end="%stopzone\>" contains=@texMathZoneGroup
- syn region texMathZoneY matchgroup=Delimiter start="\$\$" matchgroup=Delimiter end="\$\$" end="%stopzone\>" keepend contains=@texMathZoneGroup
- syn region texMathZoneZ matchgroup=texStatement start="\\ensuremath\s*{" matchgroup=texStatement end="}" end="%stopzone\>" contains=@texMathZoneGroup
-
- syn match texMathOper "[_^=]" contained
-
- " \left..something.. and \right..something.. support: {{{2
- syn match texMathDelimBad contained "\S"
- syn match texMathDelim contained "\\\(left\|right\|[bB]igg\=[lr]\)\>" skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad
- syn match texMathDelim contained "\\\(left\|right\)arrow\>\|\<\([aA]rrow\|brace\)\=vert\>"
- syn match texMathDelim contained "\\lefteqn\>"
- 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
-
-" 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 "\\\\"
-if !exists("tex_no_math")
- syn match texOnlyMath "[_^]"
-endif
-syn match texSpecialChar "\^\^[0-9a-f]\{2}\|\^\^\S"
-
-" Comments: {{{1
-" Normal TeX LaTeX : %....
-" Documented TeX Format: ^^A... -and- leading %s (only)
-syn cluster texCommentGroup contains=texTodo,@NoSpell
-syn case ignore
-syn keyword texTodo contained combak fixme todo xxx
-syn case match
-if b:extfname == "dtx"
- syn match texComment "\^\^A.*$" contains=@texCommentGroup
- syn match texComment "^%\+" contains=@texCommentGroup
-else
- if g:tex_fold_enabled
- " allows syntax-folding of 2 or more contiguous comment lines
- " single-line comments are not folded
- syn match texComment "%.*$" contains=@texCommentGroup
- syn region texComment start="^\zs\s*%.*\_s*%" skip="^\s*%" end='^\ze\s*[^%]' fold
- else
- syn match texComment "%.*$" contains=@texCommentGroup
- endif
-endif
-
-" Separate lines used for verb` and verb# so that the end conditions {{{1
-" will appropriately terminate. Ideally vim would let me save a
-" character from the start pattern and re-use it in the end-pattern.
-syn region texZone start="\\begin{verbatim}" end="\\end{verbatim}\|%stopzone\>" contains=@Spell
-" listings package:
-syn region texZone start="\\begin{lstlisting}" end="\\end{lstlisting}\|%stopzone\>" contains=@Spell
-" moreverb package:
-syn region texZone start="\\begin{verbatimtab}" end="\\end{verbatimtab}\|%stopzone\>" contains=@Spell
-syn region texZone start="\\begin{verbatimwrite}" end="\\end{verbatimwrite}\|%stopzone\>" contains=@Spell
-syn region texZone start="\\begin{boxedverbatim}" end="\\end{boxedverbatim}\|%stopzone\>" contains=@Spell
-if version < 600
- syn region texZone start="\\verb\*\=`" end="`\|%stopzone\>"
- syn region texZone start="\\verb\*\=#" end="#\|%stopzone\>"
-else
- 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
-endif
-
-" Tex Reference Zones: {{{1
-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
-syn match texRefZone '\\[cC]ite\%(\%(al\)\=\%([tp]\*\=\)\|num\|author\|year\|yearpar\|fullauthor\)\=' nextgroup=texRefOption,texCite
-syn match texRefZone '\\[cC]itetext' nextgroup=texRefOption,texFreeCite
-syn region texRefOption contained matchgroup=Delimiter start='\[' end=']' contains=@texRefGroup,texCite nextgroup=texRefOption,texCite
-syn region texCite contained matchgroup=Delimiter start='{' end='}' contains=@texRefGroup
-syn region texFreeCite contained matchgroup=Delimiter start="{"rs=s+1 skip="\\\\\|\\[{}]" matchgroup=Delimiter end="}" contains=@texMatchGroup
-
-" Handle newcommand, newenvironment : {{{1
-syn match texNewCmd "\\newcommand\>" nextgroup=texCmdName skipwhite skipnl
-syn region texCmdName contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texCmdArgs,texCmdBody skipwhite skipnl
-syn region texCmdArgs contained matchgroup=Delimiter start="\["rs=s+1 end="]" nextgroup=texCmdBody skipwhite skipnl
-syn region texCmdBody contained matchgroup=Delimiter start="{"rs=s+1 skip="\\\\\|\\[{}]" matchgroup=Delimiter end="}" contains=@texCmdGroup
-syn match texNewEnv "\\newenvironment\>" nextgroup=texEnvName skipwhite skipnl
-syn region texEnvName contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texEnvBgn skipwhite skipnl
-syn region texEnvBgn contained matchgroup=Delimiter start="{"rs=s+1 end="}" nextgroup=texEnvEnd skipwhite skipnl contains=@texEnvGroup
-syn region texEnvEnd contained matchgroup=Delimiter start="{"rs=s+1 end="}" skipwhite skipnl contains=@texEnvGroup
-
-" 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 URL Zones: {{{1
-syn region texURLZone matchgroup=texURLZone start="\\\%(url\|href\){" end="}\|%stopzone\>" contains=@texURLGroup
-syn region texURLZone matchgroup=texURLZone start="\\burl\%(alt\)\={" end="}\|%stopzone\>" contains=@texURLGroup
-syn region texURLZone matchgroup=texURLZone start="\\\%(link\|email\){" end="}\|%stopzone\>" contains=@texURLGroup
-
-" Tex Acronym Zones: {{{1
-syn region texAcroZone matchgroup=texAcroZone start="\\ac\%(fi\|[fls]\=p\=\)\*\={" end="}\|%stopzone\>" contains=@texAcroGroup
-syn region texAcroZone matchgroup=texAcroZone start="\\ac\%(used\|[ls]u\*\=\){" end="}\|%stopzone\>" contains=@texAcroGroup
-
-" TeX Lengths: {{{1
-syn match texLength "\<\d\+\([.,]\d\+\)\=\s*\(true\)\=\s*\(bp\|cc\|cm\|dd\|em\|ex\|in\|mm\|pc\|pt\|sp\)\>"
-
-" TeX String Delimiters: {{{1
-syn match texString "\(``\|''\|,,\)"
-
-" 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.
-if !exists("tex_no_math")
- 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
-
-" Highlighting: {{{1
-if did_tex_syntax_inits == 1
- let did_tex_syntax_inits= 2
- " TeX highlighting groups which should share similar highlighting
- if !exists("g:tex_no_error")
- if !exists("tex_no_math")
- HiLink texBadMath texError
- HiLink texMathDelimBad texError
- HiLink texMathError texError
- if !b:tex_stylish
- HiLink texOnlyMath texError
- endif
- endif
- HiLink texError Error
- endif
-
- HiLink texCite texRefZone
- HiLink texDefCmd texDef
- HiLink texDefName texDef
- HiLink texDocType texCmdName
- HiLink texDocTypeArgs texCmdArgs
- HiLink texInputFileOpt texCmdArgs
- HiLink texInputCurlies texDelimiter
- HiLink texLigature texSpecialChar
- if !exists("tex_no_math")
- HiLink texMathDelimSet1 texMathDelim
- HiLink texMathDelimSet2 texMathDelim
- HiLink texMathDelimKey texMathDelim
- HiLink texMathMatcher texMath
- HiLink texMathZoneW texMath
- HiLink texMathZoneX texMath
- HiLink texMathZoneY texMath
- HiLink texMathZoneZ texMath
- endif
- HiLink texSectionMarker texCmdName
- HiLink texSectionName texSection
- HiLink texSpaceCode texStatement
- HiLink texTypeSize texType
- HiLink texTypeStyle texType
-
- " Basic TeX highlighting groups
- HiLink texAcroZone Special
- HiLink texCmdArgs Number
- HiLink texCmdName Statement
- HiLink texComment Comment
- HiLink texDef Statement
- HiLink texDefParm Special
- HiLink texDelimiter Delimiter
- HiLink texInput Special
- HiLink texInputFile Special
- HiLink texLength Number
- HiLink texMath Special
- HiLink texMathDelim Statement
- HiLink texMathOper Operator
- HiLink texNewCmd Statement
- HiLink texNewEnv Statement
- HiLink texOption Number
- HiLink texRefZone Special
- HiLink texSection PreCondit
- HiLink texSpaceCodeChar Special
- HiLink texSpecialChar SpecialChar
- HiLink texStatement Statement
- HiLink texString String
- HiLink texTodo Todo
- HiLink texType Type
- HiLink texURLZone Special
- HiLink texZone PreCondit
-
- delcommand HiLink
-endif
-
-" Current Syntax: {{{1
-unlet b:extfname
-let b:current_syntax = "tex"
-" vim: ts=8 fdm=marker