| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | " Vim syntax file | 
					
						
							|  |  |  | " Language:	TeX | 
					
						
							| 
									
										
										
										
											2005-08-11 20:09:58 +00:00
										 |  |  | " Maintainer:	Dr. Charles E. Campbell, Jr. <NdrchipO@ScampbellPfamily.AbizM> | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | " Last Change:	Dec 28, 2009 | 
					
						
							|  |  |  | " Version:	46 | 
					
						
							| 
									
										
										
										
											2005-08-11 20:09:58 +00:00
										 |  |  | " URL:		http://mysite.verizon.net/astronaut/vim/index.html#vimlinks_syntax | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | " 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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  | 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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-03-07 23:20:08 +00:00
										 |  |  | " handle folding {{{1 | 
					
						
							|  |  |  | if !exists("g:tex_fold_enabled") | 
					
						
							|  |  |  |  let g:tex_fold_enabled= 0 | 
					
						
							|  |  |  | elseif g:tex_fold_enabled && !has("folding") | 
					
						
							| 
									
										
										
										
											2005-09-14 21:40:12 +00:00
										 |  |  |  let g: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" | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | if g:tex_fold_enabled && &fdm == "manual" | 
					
						
							|  |  |  |  set fdm=syntax | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | " (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 | 
					
						
							| 
									
										
										
										
											2005-08-11 20:09:58 +00: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,texSectionMarker,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract | 
					
						
							| 
									
										
										
										
											2005-08-16 23:01:50 +00:00
										 |  |  | 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,@Spell | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | 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,@Spell,texStyleMatcher | 
					
						
							| 
									
										
										
										
											2004-07-02 15:38:35 +00:00
										 |  |  | syn cluster texRefGroup		contains=texMatcher,texComment,texDelimiter | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2005-08-16 23:01:50 +00:00
										 |  |  |  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 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2004-12-09 21:34:53 +00:00
										 |  |  | syn region texParen		start="("						end=")"		contains=@texMatchGroup,@Spell | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | syn region texSectionName	matchgroup=Delimiter start="{" end="}"  contained	nextgroup=texSectionModifier	contains=texComment | 
					
						
							|  |  |  | syn region texSectionModifier	matchgroup=Delimiter start="\[" end="]" contained	contains=texComment | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " \documentclass, \documentstyle, \usepackage: {{{1 | 
					
						
							|  |  |  | syn match  texDocType		"\\documentclass\>\|\\documentstyle\>\|\\usepackage\>"	nextgroup=texSectionName,texDocTypeArgs | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | syn region texDocTypeArgs	matchgroup=Delimiter start="\[" end="]"			contained	nextgroup=texSectionName	contains=texComment | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-14 23:04:27 +00:00
										 |  |  | " Preamble syntax-based folding support: {{{1 | 
					
						
							|  |  |  | if g:tex_fold_enabled && has("folding") | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |  syn region texPreamble	transparent fold	start='\zs\\documentclass\>' end='\ze\\begin{document}'	contains=texStyle,@texMatchGroup | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | syn region texInputFileOpt	matchgroup=Delimiter start="\[" end="\]"			contained	contains=texComment | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  | 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 | 
					
						
							| 
									
										
										
										
											2005-03-07 23:20:08 +00:00
										 |  |  | if g:tex_fold_enabled && has("folding") | 
					
						
							| 
									
										
										
										
											2008-06-24 21:16:56 +00:00
										 |  |  |  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='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)'								fold contains=@texFoldGroup,@texPartGroup,@Spell | 
					
						
							|  |  |  |  syn region texChapterZone		matchgroup=texSection start='\\chapter\>'		 end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)'							fold contains=@texFoldGroup,@texChapterGroup,@Spell | 
					
						
							|  |  |  |  syn region texSectionZone		matchgroup=texSection start='\\section\>'		 end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'					fold contains=@texFoldGroup,@texSectionGroup,@Spell | 
					
						
							|  |  |  |  syn region texSubSectionZone		matchgroup=texSection start='\\subsection\>'		 end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'				fold contains=@texFoldGroup,@texSubSectionGroup,@Spell | 
					
						
							|  |  |  |  syn region texSubSubSectionZone	matchgroup=texSection start='\\subsubsection\>'		 end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'				fold contains=@texFoldGroup,@texSubSubSectionGroup,@Spell | 
					
						
							|  |  |  |  syn region texParaZone			matchgroup=texSection start='\\paragraph\>'		 end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'			fold contains=@texFoldGroup,@texParaGroup,@Spell | 
					
						
							|  |  |  |  syn region texSubParaZone		matchgroup=texSection start='\\subparagraph\>'		 end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'	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 | 
					
						
							| 
									
										
										
										
											2004-12-09 21:34:53 +00:00
										 |  |  | else | 
					
						
							| 
									
										
										
										
											2008-06-24 21:16:56 +00:00
										 |  |  |  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='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)'								contains=@texFoldGroup,@texPartGroup,@Spell | 
					
						
							|  |  |  |  syn region texChapterZone		matchgroup=texSection start='\\chapter\>'		 end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)'							contains=@texFoldGroup,@texChapterGroup,@Spell | 
					
						
							|  |  |  |  syn region texSectionZone		matchgroup=texSection start='\\section\>'		 end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'					contains=@texFoldGroup,@texSectionGroup,@Spell | 
					
						
							|  |  |  |  syn region texSubSectionZone		matchgroup=texSection start='\\subsection\>'		 end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'				contains=@texFoldGroup,@texSubSectionGroup,@Spell | 
					
						
							|  |  |  |  syn region texSubSubSectionZone	matchgroup=texSection start='\\subsubsection\>'		 end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'				contains=@texFoldGroup,@texSubSubSectionGroup,@Spell | 
					
						
							|  |  |  |  syn region texParaZone			matchgroup=texSection start='\\paragraph\>'		 end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'			contains=@texFoldGroup,@texParaGroup,@Spell | 
					
						
							|  |  |  |  syn region texSubParaZone		matchgroup=texSection start='\\subparagraph\>'		 end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'	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 | 
					
						
							| 
									
										
										
										
											2004-12-09 21:34:53 +00:00
										 |  |  | endif | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " 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") | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  |  "                 "S" appended.  Handles: cluster, syntax, sync, and HiLink. | 
					
						
							|  |  |  |  fun! TexNewMathZone(sfx,mathzone,starform) | 
					
						
							|  |  |  |    let grpname  = "texMathZone".a:sfx | 
					
						
							|  |  |  |    let syncname = "texSyncMathZone".a:sfx | 
					
						
							| 
									
										
										
										
											2008-06-24 21:16:56 +00:00
										 |  |  |    if g:tex_fold_enabled | 
					
						
							|  |  |  |     let foldcmd= " fold" | 
					
						
							|  |  |  |    else | 
					
						
							|  |  |  |     let foldcmd= "" | 
					
						
							|  |  |  |    endif | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  |    exe "syn cluster texMathZones add=".grpname | 
					
						
							| 
									
										
										
										
											2008-06-24 21:16:56 +00:00
										 |  |  |    exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  |    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*}"' | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2008-06-24 21:16:56 +00:00
										 |  |  |     exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  |     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*}"' | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  |  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) | 
					
						
							| 
									
										
										
										
											2008-06-24 21:16:56 +00:00
										 |  |  | if !exists("g:tex_comment_nospell") || !g:tex_comment_nospell | 
					
						
							|  |  |  |  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 | 
					
						
							|  |  |  | if b:extfname == "dtx" | 
					
						
							|  |  |  |   syn match texComment		"\^\^A.*$"	contains=@texCommentGroup | 
					
						
							|  |  |  |   syn match texComment		"^%\+"		contains=@texCommentGroup | 
					
						
							|  |  |  | else | 
					
						
							| 
									
										
										
										
											2006-03-01 22:09:21 +00:00
										 |  |  |   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 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 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. | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  | syn region texZone		start="\\begin{[vV]erbatim}"		end="\\end{[vV]erbatim}\|%stopzone\>"	contains=@Spell | 
					
						
							| 
									
										
										
										
											2006-04-18 21:55:01 +00:00
										 |  |  | " 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 | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2004-07-02 15:38:35 +00: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 | 
					
						
							| 
									
										
										
										
											2005-12-10 20:23:46 +00:00
										 |  |  | syn match  texRefZone		'\\cite\%([tp]\*\=\)\=' nextgroup=texRefOption,texCite | 
					
						
							|  |  |  | syn region texRefOption	contained	matchgroup=Delimiter start='\[' end=']'		contains=@texRefGroup	nextgroup=texRefOption,texCite | 
					
						
							|  |  |  | syn region texCite	contained	matchgroup=Delimiter start='{' end='}'		contains=@texRefGroup | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | " 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 | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							|  |  |  | if !exists("g:tex_no_error") | 
					
						
							|  |  |  |  syn region texStyle			matchgroup=texStatement start='\\makeatletter' end='\\makeatother'	contains=@texStyleGroup contained | 
					
						
							|  |  |  |  syn match  texStyleStatement		"\\[a-zA-Z@]\+"	contained | 
					
						
							|  |  |  |  syn region texStyleMatcher		matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]"	end="}"		contains=@texStyleGroup,texError	contained | 
					
						
							|  |  |  |  syn region texStyleMatcher		matchgroup=Delimiter start="\["				end="]"		contains=@texStyleGroup,texError	contained | 
					
						
							|  |  |  | 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. | 
					
						
							|  |  |  | 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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-12-10 20:23:46 +00:00
										 |  |  |   HiLink texCite		texRefZone | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  |   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 | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |    HiLink texMathZoneV		texMath | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  |    HiLink texMathZoneW		texMath | 
					
						
							|  |  |  |    HiLink texMathZoneX		texMath | 
					
						
							|  |  |  |    HiLink texMathZoneY		texMath | 
					
						
							| 
									
										
										
										
											2008-06-24 21:16:56 +00:00
										 |  |  |    HiLink texMathZoneV		texMath | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  |    HiLink texMathZoneZ		texMath | 
					
						
							|  |  |  |   endif | 
					
						
							|  |  |  |   HiLink texSectionMarker	texCmdName | 
					
						
							|  |  |  |   HiLink texSectionName		texSection | 
					
						
							|  |  |  |   HiLink texSpaceCode		texStatement | 
					
						
							| 
									
										
										
										
											2010-01-06 20:54:52 +01:00
										 |  |  |   HiLink texStyleStatement	texStatement | 
					
						
							| 
									
										
										
										
											2004-06-13 20:20:40 +00:00
										 |  |  |   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 |