diff runtime/syntax/tex.vim @ 7:3fc0f57ecb91 v7.0001

updated for version 7.0001
author vimboss
date Sun, 13 Jun 2004 20:20:40 +0000
parents
children bdeee1504ac1
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/runtime/syntax/tex.vim
@@ -0,0 +1,480 @@
+" Vim syntax file
+" Language:	TeX
+" Maintainer:	Dr. Charles E. Campbell, Jr. <NdrOchipS@PcampbellAfamily.Mbiz>
+" Last Change:	Jun 01, 2004
+" Version:	24
+" URL:		http://www.erols.com/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
+" 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
+
+" (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
+if !exists("g:tex_no_error")
+ syn cluster texCmdGroup	add=texMathError
+endif
+syn cluster texEnvGroup		contains=texMatcher,texMathDelim,texSpecialChar,texStatement
+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
+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
+endif
+
+" 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
+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
+
+" 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
+syn match texSection		"\\\(sub\)*section\*\=\>"
+syn match texSection		"\\\(title\|author\|part\|chapter\|paragraph\|subparagraph\)\>"
+syn match texSection		"\\begin\s*{\s*abstract\s*}\|\\end\s*{\s*abstract\s*}"
+
+" 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: 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,@Spell
+syn case ignore
+syn keyword texTodo		contained		combak	fixme	todo
+syn case match
+if b:extfname == "dtx"
+  syn match texComment		"\^\^A.*$"	contains=@texCommentGroup
+  syn match texComment		"^%\+"		contains=@texCommentGroup
+else
+  syn match texComment		"%.*$"		contains=@texCommentGroup
+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\>"
+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		start="@samp{"				end="}\|%stopzone\>"
+syn region texRefZone		matchgroup=texStatement start="\\nocite{"		keepend end="}\|%stopzone\>"  contains=texComment,texDelimiter
+syn region texRefZone		matchgroup=texStatement start="\\bibliography{"		keepend end="}\|%stopzone\>"  contains=texComment,texDelimiter
+syn region texRefZone		matchgroup=texStatement start="\\cite\([tp]\*\=\)\={"	keepend end="}\|%stopzone\>"  contains=texComment,texDelimiter
+syn region texRefZone		matchgroup=texStatement start="\\label{"		keepend end="}\|%stopzone\>"  contains=texComment,texDelimiter
+syn region texRefZone		matchgroup=texStatement start="\\\(page\|eq\)ref{"	keepend end="}\|%stopzone\>"  contains=texComment,texDelimiter
+syn region texRefZone		matchgroup=texStatement start="\\v\=ref{"		keepend end="}\|%stopzone\>"  contains=texComment,texDelimiter
+
+" 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 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 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 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 texZone		PreCondit
+
+  delcommand HiLink
+endif
+
+" Current Syntax: {{{1
+unlet b:extfname
+let   b:current_syntax = "tex"
+" vim: ts=8 fdm=marker