mirror of
				https://github.com/neovim/neovim.git
				synced 2025-10-26 12:27:24 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			1361 lines
		
	
	
		
			64 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			1361 lines
		
	
	
		
			64 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | ||
| " Language:	TeX
 | ||
| " Maintainer:	Charles E. Campbell <NdrchipO@ScampbellPfamily.AbizM>
 | ||
| " Last Change:	Jun 11, 2015
 | ||
| " Version:	87
 | ||
| " URL:		http://www.drchip.org/astronaut/vim/index.html#SYNTAX_TEX
 | ||
| "
 | ||
| " 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
 | ||
| "
 | ||
| " 6. Please see  :help latex-syntax  for information on
 | ||
| "      syntax folding           :help tex-folding
 | ||
| "      spell checking           :help tex-nospell
 | ||
| "      commands and mathzones   :help tex-runon
 | ||
| "      new command highlighting :help tex-morecommands
 | ||
| "      error highlighting       :help tex-error
 | ||
| "      new math groups          :help tex-math
 | ||
| "      new styles               :help tex-style
 | ||
| "      using conceal mode       :help tex-conceal
 | ||
| 
 | ||
| " 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
 | ||
| let s:keepcpo= &cpo
 | ||
| set cpo&vim
 | ||
| scriptencoding utf-8
 | ||
| 
 | ||
| " 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_no_error") && g:tex_no_error
 | ||
|  let s:tex_no_error= 1
 | ||
| else
 | ||
|  let s:tex_no_error= 0
 | ||
| endif
 | ||
| 
 | ||
| " by default, enable all region-based highlighting
 | ||
| let s:tex_fast= "bcmMprsSvV"
 | ||
| if exists("g:tex_fast")
 | ||
|  if type(g:tex_fast) != 1
 | ||
|   " g:tex_fast exists and is not a string, so
 | ||
|   " turn off all optional region-based highighting
 | ||
|   let s:tex_fast= ""
 | ||
|  else
 | ||
|   let s:tex_fast= g:tex_fast
 | ||
|  endif
 | ||
| else
 | ||
|  let s:tex_fast= "bcmMprsSvV"
 | ||
| endif
 | ||
| 
 | ||
| " let user determine which classes of concealment will be supported
 | ||
| "   a=accents/ligatures d=delimiters m=math symbols  g=Greek  s=superscripts/subscripts
 | ||
| if !exists("g:tex_conceal")
 | ||
|  let s:tex_conceal= 'abdmgsS'
 | ||
| else
 | ||
|  let s:tex_conceal= g:tex_conceal
 | ||
| endif
 | ||
| if !exists("g:tex_superscripts")
 | ||
|  let g:tex_superscripts= "[0-9a-zA-W.,:;+-<>/()=]"
 | ||
| endif
 | ||
| if !exists("g:tex_subscripts")
 | ||
|  let g:tex_subscripts= "[0-9aehijklmnoprstuvx,+-/().]"
 | ||
| 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 s:extfname=expand("%:e")
 | ||
| if exists("g:tex_stylish")
 | ||
|  let b:tex_stylish= g:tex_stylish
 | ||
| elseif !exists("b:tex_stylish")
 | ||
|  if s:extfname == "sty" || s:extfname == "cls" || s:extfname == "clo" || s:extfname == "dtx" || s: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"
 | ||
|  setl fdm=syntax
 | ||
| endif
 | ||
| 
 | ||
| " (La)TeX keywords: uses the characters 0-9,a-z,A-Z,192-255 only... {{{1
 | ||
| " but _ is the only one that causes problems.
 | ||
| " One may override this iskeyword setting by providing
 | ||
| " g:tex_isk
 | ||
| if exists("g:tex_isk")
 | ||
|  exe "setlocal isk=".g:tex_isk
 | ||
| else
 | ||
|  setlocal isk=48-57,a-z,A-Z,192-255
 | ||
| endif
 | ||
| if b:tex_stylish
 | ||
|   setlocal isk+=@-@
 | ||
| endif
 | ||
| if exists("g:tex_nospell") && g:tex_nospell && !exists("g:tex_comment_nospell")
 | ||
|  let g:tex_comment_nospell= 1
 | ||
| endif
 | ||
| 
 | ||
| " Clusters: {{{1
 | ||
| " --------
 | ||
| syn cluster texCmdGroup		contains=texCmdBody,texComment,texDefParm,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texBeginEnd,texBeginEndName,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle
 | ||
| if !exists("s:tex_no_error") || !s: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,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texBoldStyle,texItalStyle,texNoSpell
 | ||
| syn cluster texBoldGroup	contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texBoldStyle,texBoldItalStyle,texNoSpell
 | ||
| syn cluster texItalGroup	contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texInputFile,texLength,texLigature,texMatcher,texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ,texNewCmd,texNewEnv,texOnlyMath,texOption,texParen,texRefZone,texSection,texBeginEnd,texSectionZone,texSpaceCode,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,@texMathZones,texTitle,texAbstract,texItalStyle,texItalBoldStyle,texNoSpell
 | ||
| if !exists("g:tex_nospell") || !g:tex_nospell
 | ||
|  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
 | ||
|  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
 | ||
| else
 | ||
|  syn cluster texMatchGroup	contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMatcher,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption
 | ||
|  syn cluster texStyleGroup	contains=texAccent,texBadMath,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texNewCmd,texNewEnv,texOnlyMath,texParen,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone,texInputFile,texOption,texStyleStatement,texStyleMatcher
 | ||
| endif
 | ||
| syn cluster texPreambleMatchGroup	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,texMathZoneZ
 | ||
| syn cluster texRefGroup		contains=texMatcher,texComment,texDelimiter
 | ||
| if !exists("g: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,texMathSymbol,texMathText,texRefZone,texSpecialChar,texStatement,texTypeSize,texTypeStyle
 | ||
|  if !exists("s:tex_no_error") || !s: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
 | ||
|  if has("conceal") && &enc == 'utf-8'
 | ||
|   syn cluster texMathZoneGroup	add=texGreek,texSuperscript,texSubscript,texMathSymbol
 | ||
|   syn cluster texMathMatchGroup	add=texGreek,texSuperscript,texSubscript,texMathSymbol
 | ||
|  endif
 | ||
| endif
 | ||
| 
 | ||
| " Try to flag {} and () mismatches: {{{1
 | ||
| if s:tex_fast =~ 'm'
 | ||
|   if !exists("s:tex_no_error") || !s:tex_no_error
 | ||
|    syn region texMatcher		matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]"	end="}"		contains=@texMatchGroup,texError
 | ||
|    syn region texMatcher		matchgroup=Delimiter start="\["				end="]"		contains=@texMatchGroup,texError,@NoSpell
 | ||
|   else
 | ||
|    syn region texMatcher		matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]"	end="}"		contains=@texMatchGroup
 | ||
|    syn region texMatcher		matchgroup=Delimiter start="\["				end="]"		contains=@texMatchGroup
 | ||
|   endif
 | ||
|   if !exists("g:tex_nospell") || !g:tex_nospell
 | ||
|    syn region texParen		start="("						end=")"		contains=@texMatchGroup,@Spell
 | ||
|   else
 | ||
|    syn region texParen		start="("						end=")"		contains=@texMatchGroup
 | ||
|   endif
 | ||
| endif
 | ||
| if !exists("s:tex_no_error") || !s:tex_no_error
 | ||
|  syn match  texError		"[}\])]"
 | ||
| endif
 | ||
| if s:tex_fast =~ 'M'
 | ||
|   if !exists("g:tex_no_math")
 | ||
|    if !exists("s:tex_no_error") || !s:tex_no_error
 | ||
|     syn match  texMathError	"}"	contained
 | ||
|    endif
 | ||
|    syn region texMathMatcher	matchgroup=Delimiter	start="{"          skip="\(\\\\\)*\\}"     end="}" end="%stopzone\>"	contained contains=@texMathMatchGroup
 | ||
|   endif
 | ||
| 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("s:tex_no_error") || !s:tex_no_error
 | ||
|    syn match texError		"\\\a*@[a-zA-Z@]*"
 | ||
|   endif
 | ||
| endif
 | ||
| 
 | ||
| " TeX/LaTeX delimiters: {{{1
 | ||
| syn match texDelimiter		"&"
 | ||
| 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  texBeginEnd		"\\begin\>\|\\end\>" nextgroup=texBeginEndName
 | ||
| if s:tex_fast =~ 'm'
 | ||
|   syn region texBeginEndName		matchgroup=Delimiter	start="{"		end="}"	contained	nextgroup=texBeginEndModifier	contains=texComment
 | ||
|   syn region texBeginEndModifier	matchgroup=Delimiter	start="\["		end="]"	contained	contains=texComment,@NoSpell
 | ||
| endif
 | ||
| 
 | ||
| " \documentclass, \documentstyle, \usepackage: {{{1
 | ||
| syn match  texDocType		"\\documentclass\>\|\\documentstyle\>\|\\usepackage\>"	nextgroup=texBeginEndName,texDocTypeArgs
 | ||
| if s:tex_fast =~ 'm'
 | ||
|   syn region texDocTypeArgs	matchgroup=Delimiter start="\[" end="]"			contained	nextgroup=texBeginEndName	contains=texComment,@NoSpell
 | ||
| endif
 | ||
| 
 | ||
| " 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=texStyle,@texPreambleMatchGroup
 | ||
| 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,texInputFileOpt
 | ||
| syn match texInputFile		"\\\(epsfig\|input\|usepackage\)\s*\(\[.*\]\)\={.\{-}}"		contains=texStatement,texInputCurlies,texInputFileOpt
 | ||
| syn match texInputCurlies	"[{}]"								contained
 | ||
| if s:tex_fast =~ 'm'
 | ||
|  syn region texInputFileOpt	matchgroup=Delimiter start="\[" end="\]"			contained	contains=texComment
 | ||
| endif
 | ||
| 
 | ||
| " 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
 | ||
| if s:tex_conceal !~ 'b'
 | ||
|  syn match texTypeStyle		"\\textbf\>"
 | ||
|  syn match texTypeStyle		"\\textit\>"
 | ||
| endif
 | ||
| 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 s:tex_fast =~ 'p'
 | ||
|   if !exists("g:tex_nospell") || !g:tex_nospell
 | ||
|    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='\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
 | ||
|    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='\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
 | ||
|     syn region texSpellZone		matchgroup=texSpellZone start="%spellzone_start"	 end="%spellzone_end"												contains=@Spell
 | ||
|    endif
 | ||
|   else
 | ||
|    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
 | ||
|     syn region texPartZone		matchgroup=texSection start='\\part\>'			 end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)'								fold contains=@texFoldGroup,@texPartGroup
 | ||
|     syn region texChapterZone		matchgroup=texSection start='\\chapter\>'		 end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)'							fold contains=@texFoldGroup,@texChapterGroup
 | ||
|     syn region texSectionZone		matchgroup=texSection start='\\section\>'		 end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'					fold contains=@texFoldGroup,@texSectionGroup
 | ||
|     syn region texSubSectionZone	matchgroup=texSection start='\\subsection\>'		 end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'				fold contains=@texFoldGroup,@texSubSectionGroup
 | ||
|     syn region texSubSubSectionZone	matchgroup=texSection start='\\subsubsection\>'		 end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'				fold contains=@texFoldGroup,@texSubSubSectionGroup
 | ||
|     syn region texParaZone		matchgroup=texSection start='\\paragraph\>'		 end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'			fold contains=@texFoldGroup,@texParaGroup
 | ||
|     syn region texSubParaZone		matchgroup=texSection start='\\subparagraph\>'		 end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'	fold contains=@texFoldGroup
 | ||
|     syn region texTitle			matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}'													fold contains=@texFoldGroup
 | ||
|     syn region texAbstract		matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}'											fold contains=@texFoldGroup
 | ||
|    else
 | ||
|     syn region texDocZone		matchgroup=texSection start='\\begin\s*{\s*document\s*}' end='\\end\s*{\s*document\s*}'											contains=@texFoldGroup,@texDocGroup
 | ||
|     syn region texPartZone		matchgroup=texSection start='\\part\>'			 end='\ze\s*\\\%(part\>\|end\s*{\s*document\s*}\)'								contains=@texFoldGroup,@texPartGroup
 | ||
|     syn region texChapterZone		matchgroup=texSection start='\\chapter\>'		 end='\ze\s*\\\%(chapter\>\|part\>\|end\s*{\s*document\s*}\)'							contains=@texFoldGroup,@texChapterGroup
 | ||
|     syn region texSectionZone		matchgroup=texSection start='\\section\>'		 end='\ze\s*\\\%(section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'					contains=@texFoldGroup,@texSectionGroup
 | ||
|     syn region texSubSectionZone	matchgroup=texSection start='\\subsection\>'		 end='\ze\s*\\\%(\%(sub\)\=section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'				contains=@texFoldGroup,@texSubSectionGroup
 | ||
|     syn region texSubSubSectionZone	matchgroup=texSection start='\\subsubsection\>'		 end='\ze\s*\\\%(\%(sub\)\{,2}section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'				contains=@texFoldGroup,@texSubSubSectionGroup
 | ||
|     syn region texParaZone		matchgroup=texSection start='\\paragraph\>'		 end='\ze\s*\\\%(paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'			contains=@texFoldGroup,@texParaGroup
 | ||
|     syn region texSubParaZone		matchgroup=texSection start='\\subparagraph\>'		 end='\ze\s*\\\%(\%(sub\)\=paragraph\>\|\%(sub\)*section\>\|chapter\>\|part\>\|end\s*{\s*document\s*}\)'	contains=@texFoldGroup
 | ||
|     syn region texTitle			matchgroup=texSection start='\\\%(author\|title\)\>\s*{' end='}'													contains=@texFoldGroup
 | ||
|     syn region texAbstract		matchgroup=texSection start='\\begin\s*{\s*abstract\s*}' end='\\end\s*{\s*abstract\s*}'											contains=@texFoldGroup
 | ||
|    endif
 | ||
|   endif
 | ||
| endif
 | ||
| 
 | ||
| " particular support for bold and italic {{{1
 | ||
| if s:tex_fast =~ 'b'
 | ||
|   if s:tex_conceal =~ 'b'
 | ||
|    if !exists("g:tex_nospell") || !g:tex_nospell
 | ||
|     syn region texBoldStyle	matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle  end="}" concealends contains=@texBoldGroup,@Spell
 | ||
|     syn region texBoldItalStyle	matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle  end="}" concealends contains=@texItalGroup,@Spell
 | ||
|     syn region texItalStyle	matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle  end="}" concealends contains=@texItalGroup,@Spell
 | ||
|     syn region texItalBoldStyle	matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle  end="}" concealends contains=@texBoldGroup,@Spell
 | ||
|    else                                                                                              
 | ||
|     syn region texBoldStyle	matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle  end="}" concealends contains=@texBoldGroup
 | ||
|     syn region texBoldItalStyle	matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle  end="}" concealends contains=@texItalGroup
 | ||
|     syn region texItalStyle	matchgroup=texTypeStyle start="\\textit\s*{" matchgroup=texTypeStyle  end="}" concealends contains=@texItalGroup
 | ||
|     syn region texItalBoldStyle	matchgroup=texTypeStyle start="\\textbf\s*{" matchgroup=texTypeStyle  end="}" concealends contains=@texBoldGroup
 | ||
|    endif
 | ||
|   endif
 | ||
| endif
 | ||
| 
 | ||
| " Bad Math (mismatched): {{{1
 | ||
| if !exists("g:tex_no_math") && (!exists("s:tex_no_error") || !s:tex_no_error)
 | ||
|  syn match texBadMath		"\\end\s*{\s*\(array\|gathered\|bBpvV]matrix\|split\|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("g: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
 | ||
|    if g:tex_fold_enabled
 | ||
|     let foldcmd= " fold"
 | ||
|    else
 | ||
|     let foldcmd= ""
 | ||
|    endif
 | ||
|    exe "syn cluster texMathZones add=".grpname
 | ||
|    if s:tex_fast =~ 'M'
 | ||
|     exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
 | ||
|     exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
 | ||
|     exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
 | ||
|    endif
 | ||
|    exe 'hi def link '.grpname.' texMath'
 | ||
|    if a:starform
 | ||
|     let grpname  = "texMathZone".a:sfx.'S'
 | ||
|     let syncname = "texSyncMathZone".a:sfx.'S'
 | ||
|     exe "syn cluster texMathZones add=".grpname
 | ||
|     if s:tex_fast =~ 'M'
 | ||
|      exe 'syn region '.grpname.' start='."'".'\\begin\s*{\s*'.a:mathzone.'\*\s*}'."'".' end='."'".'\\end\s*{\s*'.a:mathzone.'\*\s*}'."'".' keepend contains=@texMathZoneGroup'.foldcmd
 | ||
|      exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
 | ||
|      exe 'syn sync match '.syncname.' grouphere '.grpname.' "\\begin\s*{\s*'.a:mathzone.'\*\s*}"'
 | ||
|     endif
 | ||
|     exe 'hi def link '.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","xalignat",1)
 | ||
|  call TexNewMathZone("K","xxalignat",0)
 | ||
| 
 | ||
|  " Inline Math Zones: {{{2
 | ||
|  if s:tex_fast =~ 'M'
 | ||
|   if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~ 'd'
 | ||
|    syn region texMathZoneV	matchgroup=Delimiter start="\\("			matchgroup=Delimiter	end="\\)\|%stopzone\>"			keepend concealends contains=@texMathZoneGroup
 | ||
|    syn region texMathZoneW	matchgroup=Delimiter start="\\\["			matchgroup=Delimiter	end="\\]\|%stopzone\>"			keepend concealends contains=@texMathZoneGroup
 | ||
|    syn region texMathZoneX	matchgroup=Delimiter start="\$" skip="\\\\\|\\\$"	matchgroup=Delimiter	end="\$"	end="%stopzone\>"		concealends contains=@texMathZoneGroup
 | ||
|    syn region texMathZoneY	matchgroup=Delimiter start="\$\$" 			matchgroup=Delimiter	end="\$\$"	end="%stopzone\>"	keepend concealends contains=@texMathZoneGroup
 | ||
|   else
 | ||
|    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
 | ||
|   endif
 | ||
|   syn region texMathZoneZ	matchgroup=texStatement start="\\ensuremath\s*{"	matchgroup=texStatement	end="}"		end="%stopzone\>"	contains=@texMathZoneGroup
 | ||
|  endif
 | ||
| 
 | ||
|  syn match texMathOper		"[_^=]" contained
 | ||
| 
 | ||
|  " Text Inside Math Zones: {{{2
 | ||
|  if s:tex_fast =~ 'M'
 | ||
|   if !exists("g:tex_nospell") || !g:tex_nospell
 | ||
|    syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{'	end='}'	contains=@texFoldGroup,@Spell
 | ||
|   else
 | ||
|    syn region texMathText matchgroup=texStatement start='\\\(\(inter\)\=text\|mbox\)\s*{'	end='}'	contains=@texFoldGroup
 | ||
|   endif
 | ||
|  endif
 | ||
| 
 | ||
|  " \left..something.. and \right..something.. support: {{{2
 | ||
|  syn match   texMathDelimBad	contained		"\S"
 | ||
|  if has("conceal") && &enc == 'utf-8' && s:tex_conceal =~ 'm'
 | ||
|   syn match   texMathDelim	contained		"\\left\\{\>"	skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar={
 | ||
|   syn match   texMathDelim	contained		"\\right\\}\>"	skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad contains=texMathSymbol cchar=}
 | ||
|   let s:texMathDelimList=[
 | ||
|      \ ['<'            , '<'] ,
 | ||
|      \ ['>'            , '>'] ,
 | ||
|      \ ['('            , '('] ,
 | ||
|      \ [')'            , ')'] ,
 | ||
|      \ ['\['           , '['] ,
 | ||
|      \ [']'            , ']'] ,
 | ||
|      \ ['\\{'          , '{'] ,
 | ||
|      \ ['\\}'          , '}'] ,
 | ||
|      \ ['|'            , '|'] ,
 | ||
|      \ ['\\|'          , '‖'] ,
 | ||
|      \ ['\\backslash'  , '\'] ,
 | ||
|      \ ['\\downarrow'  , '↓'] ,
 | ||
|      \ ['\\Downarrow'  , '⇓'] ,
 | ||
|      \ ['\\langle'     , '<'] ,
 | ||
|      \ ['\\lbrace'     , '['] ,
 | ||
|      \ ['\\lceil'      , '⌈'] ,
 | ||
|      \ ['\\lfloor'     , '⌊'] ,
 | ||
|      \ ['\\lgroup'     , '⌊'] ,
 | ||
|      \ ['\\lmoustache' , '⎛'] ,
 | ||
|      \ ['\\rangle'     , '>'] ,
 | ||
|      \ ['\\rbrace'     , ']'] ,
 | ||
|      \ ['\\rceil'      , '⌉'] ,
 | ||
|      \ ['\\rfloor'     , '⌋'] ,
 | ||
|      \ ['\\rgroup'     , '⌋'] ,
 | ||
|      \ ['\\rmoustache' , '⎞'] ,
 | ||
|      \ ['\\uparrow'    , '↑'] ,
 | ||
|      \ ['\\Uparrow'    , '↑'] ,
 | ||
|      \ ['\\updownarrow', '↕'] ,
 | ||
|      \ ['\\Updownarrow', '⇕']]
 | ||
|   syn match texMathDelim	'\\[bB]igg\=[lr]' contained nextgroup=texMathDelimBad
 | ||
|   for texmath in s:texMathDelimList
 | ||
|    exe "syn match texMathDelim	'\\\\[bB]igg\\=[lr]\\=".texmath[0]."'	contained conceal cchar=".texmath[1]
 | ||
|   endfor
 | ||
| 
 | ||
|  else
 | ||
|   syn match   texMathDelim	contained		"\\\(left\|right\)\>"	skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad
 | ||
|   syn match   texMathDelim	contained		"\\[bB]igg\=[lr]\=\>"	skipwhite nextgroup=texMathDelimSet1,texMathDelimSet2,texMathDelimBad
 | ||
|   syn match   texMathDelimSet2	contained	"\\"		nextgroup=texMathDelimKey,texMathDelimBad
 | ||
|   syn match   texMathDelimSet1	contained	"[<>()[\]|/.]\|\\[{}|]"
 | ||
|   syn keyword texMathDelimKey	contained	backslash       lceil           lVert           rgroup          uparrow
 | ||
|   syn keyword texMathDelimKey	contained	downarrow       lfloor          rangle          rmoustache      Uparrow
 | ||
|   syn keyword texMathDelimKey	contained	Downarrow       lgroup          rbrace          rvert           updownarrow
 | ||
|   syn keyword texMathDelimKey	contained	langle          lmoustache      rceil           rVert           Updownarrow
 | ||
|   syn keyword texMathDelimKey	contained	lbrace          lvert           rfloor
 | ||
|  endif
 | ||
|  syn match   texMathDelim	contained		"\\\(left\|right\)arrow\>\|\<\([aA]rrow\|brace\)\=vert\>"
 | ||
|  syn match   texMathDelim	contained		"\\lefteqn\>"
 | ||
| endif
 | ||
| 
 | ||
| " Special TeX characters  ( \$ \& \% \# \{ \} \_ \S \P ) : {{{1
 | ||
| syn match texSpecialChar	"\\[$&%#{}_]"
 | ||
| if b:tex_stylish
 | ||
|   syn match texSpecialChar	"\\[SP@][^a-zA-Z@]"me=e-1
 | ||
| else
 | ||
|   syn match texSpecialChar	"\\[SP@]\A"me=e-1
 | ||
| endif
 | ||
| syn match texSpecialChar	"\\\\"
 | ||
| if !exists("g:tex_no_math")
 | ||
|  syn match texOnlyMath		"[_^]"
 | ||
| endif
 | ||
| syn match texSpecialChar	"\^\^[0-9a-f]\{2}\|\^\^\S"
 | ||
| if s:tex_conceal !~ 'S'
 | ||
|  syn match texSpecialChar	'\\glq\>'	contained conceal cchar=‚
 | ||
|  syn match texSpecialChar	'\\grq\>'	contained conceal cchar=‘
 | ||
|  syn match texSpecialChar	'\\glqq\>'	contained conceal cchar=„
 | ||
|  syn match texSpecialChar	'\\grqq\>'	contained conceal cchar=“
 | ||
|  syn match texSpecialChar	'\\hyp\>'	contained conceal cchar=-
 | ||
| endif
 | ||
| 
 | ||
| " Comments: {{{1
 | ||
| "    Normal TeX LaTeX     :   %....
 | ||
| "    Documented TeX Format:  ^^A...	-and-	leading %s (only)
 | ||
| if !exists("g:tex_comment_nospell") || !g:tex_comment_nospell
 | ||
|  syn cluster texCommentGroup	contains=texTodo,@Spell
 | ||
| else
 | ||
|  syn cluster texCommentGroup	contains=texTodo,@NoSpell
 | ||
| endif
 | ||
| syn case ignore
 | ||
| syn keyword texTodo		contained		combak	fixme	todo	xxx
 | ||
| syn case match
 | ||
| if s: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
 | ||
|    if s:tex_fast =~ 'c'
 | ||
|     syn region texComment	start="^\zs\s*%.*\_s*%"	skip="^\s*%"	end='^\ze\s*[^%]' fold
 | ||
|     syn region texNoSpell	contained		matchgroup=texComment start="%\s*nospell\s*{"		end="%\s*nospell\s*}"	fold contains=@texFoldGroup,@NoSpell
 | ||
|     syn region texSpellZone		 		matchgroup=texComment start="%\s*spellzone_start"	end="%\s*spellzone_end"	fold contains=@Spell,@texFoldGroup
 | ||
|    endif
 | ||
|   else
 | ||
|    syn match texComment		"%.*$"			contains=@texCommentGroup
 | ||
|    if s:tex_fast =~ 'c'
 | ||
|     syn region texNoSpell	contained		matchgroup=texComment start="%\s*nospell\s*{"		end="%\s*nospell\s*}"	contains=@texFoldGroup,@NoSpell
 | ||
|     syn region  texSpellZone		 		matchgroup=texComment start="%\s*spellzone_start"	end="%\s*spellzone_end"	contains=@Spell,@texFoldGroup
 | ||
|    endif
 | ||
|   endif
 | ||
| endif
 | ||
| 
 | ||
| " Separate lines used for verb` and verb# so that the end conditions {{{1
 | ||
| " will appropriately terminate.
 | ||
| " If g:tex_verbspell exists, then verbatim texZones will permit spellchecking there.
 | ||
| if s:tex_fast =~ 'v'
 | ||
|   if exists("g:tex_verbspell") && g:tex_verbspell
 | ||
|    syn region texZone		start="\\begin{[vV]erbatim}"		end="\\end{[vV]erbatim}\|%stopzone\>"	contains=@Spell
 | ||
|    " listings package:
 | ||
|    syn region texZone		start="\\begin{lstlisting}"		end="\\end{lstlisting}\|%stopzone\>"	contains=@Spell
 | ||
|    if version < 600
 | ||
|     syn region texZone		start="\\verb\*\=`"			end="`\|%stopzone\>"			contains=@Spell
 | ||
|     syn region texZone		start="\\verb\*\=#"			end="#\|%stopzone\>"			contains=@Spell
 | ||
|    else
 | ||
|      if b:tex_stylish
 | ||
|       syn region texZone		start="\\verb\*\=\z([^\ta-zA-Z@]\)"	end="\z1\|%stopzone\>"			contains=@Spell
 | ||
|      else
 | ||
|       syn region texZone		start="\\verb\*\=\z([^\ta-zA-Z]\)"	end="\z1\|%stopzone\>"			contains=@Spell
 | ||
|      endif
 | ||
|    endif
 | ||
|   else
 | ||
|    syn region texZone		start="\\begin{[vV]erbatim}"		end="\\end{[vV]erbatim}\|%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
 | ||
|   endif
 | ||
| endif
 | ||
| 
 | ||
| " Tex Reference Zones: {{{1
 | ||
| if s:tex_fast =~ 'r'
 | ||
|   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 region texRefOption	contained	matchgroup=Delimiter start='\[' end=']'		contains=@texRefGroup,texRefZone	nextgroup=texRefOption,texCite
 | ||
|   syn region texCite		contained	matchgroup=Delimiter start='{' end='}'		contains=@texRefGroup,texRefZone,texCite
 | ||
| endif
 | ||
| syn match  texRefZone		'\\cite\%([tp]\*\=\)\=' nextgroup=texRefOption,texCite
 | ||
| 
 | ||
| " Handle newcommand, newenvironment : {{{1
 | ||
| syn match  texNewCmd				"\\newcommand\>"			nextgroup=texCmdName skipwhite skipnl
 | ||
| if s:tex_fast =~ 'V'
 | ||
|   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
 | ||
| endif
 | ||
| syn match  texNewEnv				"\\newenvironment\>"			nextgroup=texEnvName skipwhite skipnl
 | ||
| if s:tex_fast =~ 'V'
 | ||
|   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
 | ||
| endif
 | ||
| 
 | ||
| " 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		"\(``\|''\|,,\)"
 | ||
| 
 | ||
| " makeatletter -- makeatother sections
 | ||
| if !exists("s:tex_no_error") || !s:tex_no_error
 | ||
|  if s:tex_fast =~ 'S'
 | ||
|   syn region texStyle			matchgroup=texStatement start='\\makeatletter' end='\\makeatother'	contains=@texStyleGroup contained
 | ||
|  endif
 | ||
|  syn match  texStyleStatement		"\\[a-zA-Z@]\+"	contained
 | ||
|  if s:tex_fast =~ 'S'
 | ||
|   syn region texStyleMatcher		matchgroup=Delimiter start="{" skip="\\\\\|\\[{}]"	end="}"		contains=@texStyleGroup,texError	contained
 | ||
|   syn region texStyleMatcher		matchgroup=Delimiter start="\["				end="]"		contains=@texStyleGroup,texError	contained
 | ||
|  endif
 | ||
| endif
 | ||
| 
 | ||
| " Conceal mode support (supports set cole=2) {{{1
 | ||
| if has("conceal") && &enc == 'utf-8'
 | ||
| 
 | ||
|  " Math Symbols {{{2
 | ||
|  " (many of these symbols were contributed by Björn Winckler)
 | ||
|  if s:tex_conceal =~ 'm'
 | ||
|   let s:texMathList=[
 | ||
|     \ ['|'		, '‖'],
 | ||
|     \ ['aleph'		, 'ℵ'],
 | ||
|     \ ['amalg'		, '∐'],
 | ||
|     \ ['angle'		, '∠'],
 | ||
|     \ ['approx'		, '≈'],
 | ||
|     \ ['ast'		, '∗'],
 | ||
|     \ ['asymp'		, '≍'],
 | ||
|     \ ['backepsilon'	, '∍'],
 | ||
|     \ ['backsimeq'	, '≃'],
 | ||
|     \ ['backslash'	, '∖'],
 | ||
|     \ ['barwedge'	, '⊼'],
 | ||
|     \ ['because'	, '∵'],
 | ||
|     \ ['between'	, '≬'],
 | ||
|     \ ['bigcap'		, '∩'],
 | ||
|     \ ['bigcirc'	, '○'],
 | ||
|     \ ['bigcup'		, '∪'],
 | ||
|     \ ['bigodot'	, '⊙'],
 | ||
|     \ ['bigoplus'	, '⊕'],
 | ||
|     \ ['bigotimes'	, '⊗'],
 | ||
|     \ ['bigsqcup'	, '⊔'],
 | ||
|     \ ['bigtriangledown', '∇'],
 | ||
|     \ ['bigtriangleup'	, '∆'],
 | ||
|     \ ['bigvee'		, '⋁'],
 | ||
|     \ ['bigwedge'	, '⋀'],
 | ||
|     \ ['blacksquare'	, '∎'],
 | ||
|     \ ['bot'		, '⊥'],
 | ||
|     \ ['bowtie'	        , '⋈'],
 | ||
|     \ ['boxdot'		, '⊡'],
 | ||
|     \ ['boxminus'	, '⊟'],
 | ||
|     \ ['boxplus'	, '⊞'],
 | ||
|     \ ['boxtimes'	, '⊠'],
 | ||
|     \ ['bullet'	        , '•'],
 | ||
|     \ ['bumpeq'		, '≏'],
 | ||
|     \ ['Bumpeq'		, '≎'],
 | ||
|     \ ['cap'		, '∩'],
 | ||
|     \ ['Cap'		, '⋒'],
 | ||
|     \ ['cdot'		, '·'],
 | ||
|     \ ['cdots'		, '⋯'],
 | ||
|     \ ['circ'		, '∘'],
 | ||
|     \ ['circeq'		, '≗'],
 | ||
|     \ ['circlearrowleft', '↺'],
 | ||
|     \ ['circlearrowright', '↻'],
 | ||
|     \ ['circledast'	, '⊛'],
 | ||
|     \ ['circledcirc'	, '⊚'],
 | ||
|     \ ['clubsuit'	, '♣'],
 | ||
|     \ ['complement'	, '∁'],
 | ||
|     \ ['cong'		, '≅'],
 | ||
|     \ ['coprod'		, '∐'],
 | ||
|     \ ['copyright'	, '©'],
 | ||
|     \ ['cup'		, '∪'],
 | ||
|     \ ['Cup'		, '⋓'],
 | ||
|     \ ['curlyeqprec'	, '⋞'],
 | ||
|     \ ['curlyeqsucc'	, '⋟'],
 | ||
|     \ ['curlyvee'	, '⋎'],
 | ||
|     \ ['curlywedge'	, '⋏'],
 | ||
|     \ ['dagger'	        , '†'],
 | ||
|     \ ['dashv'		, '⊣'],
 | ||
|     \ ['ddagger'	, '‡'],
 | ||
|     \ ['ddots'	        , '⋱'],
 | ||
|     \ ['diamond'	, '⋄'],
 | ||
|     \ ['diamondsuit'	, '♢'],
 | ||
|     \ ['div'		, '÷'],
 | ||
|     \ ['doteq'		, '≐'],
 | ||
|     \ ['doteqdot'	, '≑'],
 | ||
|     \ ['dotplus'	, '∔'],
 | ||
|     \ ['dots'		, '…'],
 | ||
|     \ ['dotsb'		, '⋯'],
 | ||
|     \ ['dotsc'		, '…'],
 | ||
|     \ ['dotsi'		, '⋯'],
 | ||
|     \ ['dotso'		, '…'],
 | ||
|     \ ['doublebarwedge'	, '⩞'],
 | ||
|     \ ['downarrow'	, '↓'],
 | ||
|     \ ['Downarrow'	, '⇓'],
 | ||
|     \ ['ell'		, 'ℓ'],
 | ||
|     \ ['emptyset'	, '∅'],
 | ||
|     \ ['eqcirc'		, '≖'],
 | ||
|     \ ['eqsim'		, '≂'],
 | ||
|     \ ['eqslantgtr'	, '⪖'],
 | ||
|     \ ['eqslantless'	, '⪕'],
 | ||
|     \ ['equiv'		, '≡'],
 | ||
|     \ ['exists'		, '∃'],
 | ||
|     \ ['fallingdotseq'	, '≒'],
 | ||
|     \ ['flat'		, '♭'],
 | ||
|     \ ['forall'		, '∀'],
 | ||
|     \ ['frown'		, '⁔'],
 | ||
|     \ ['ge'		, '≥'],
 | ||
|     \ ['geq'		, '≥'],
 | ||
|     \ ['geqq'		, '≧'],
 | ||
|     \ ['gets'		, '←'],
 | ||
|     \ ['gg'		, '⟫'],
 | ||
|     \ ['gneqq'		, '≩'],
 | ||
|     \ ['gtrdot'		, '⋗'],
 | ||
|     \ ['gtreqless'	, '⋛'],
 | ||
|     \ ['gtrless'	, '≷'],
 | ||
|     \ ['gtrsim'		, '≳'],
 | ||
|     \ ['hbar'		, 'ℏ'],
 | ||
|     \ ['heartsuit'	, '♡'],
 | ||
|     \ ['hookleftarrow'	, '↩'],
 | ||
|     \ ['hookrightarrow'	, '↪'],
 | ||
|     \ ['iiint'		, '∭'],
 | ||
|     \ ['iint'		, '∬'],
 | ||
|     \ ['Im'		, 'ℑ'],
 | ||
|     \ ['imath'		, 'ɩ'],
 | ||
|     \ ['in'		, '∈'],
 | ||
|     \ ['infty'		, '∞'],
 | ||
|     \ ['int'		, '∫'],
 | ||
|     \ ['lceil'		, '⌈'],
 | ||
|     \ ['ldots'		, '…'],
 | ||
|     \ ['le'		, '≤'],
 | ||
|     \ ['leadsto'	, '↝'],
 | ||
|     \ ['left('		, '('],
 | ||
|     \ ['left\['		, '['],
 | ||
|     \ ['left\\{'	, '{'],
 | ||
|     \ ['leftarrow'	, '←'],
 | ||
|     \ ['Leftarrow'	, '⇐'],
 | ||
|     \ ['leftarrowtail'	, '↢'],
 | ||
|     \ ['leftharpoondown', '↽'],
 | ||
|     \ ['leftharpoonup'	, '↼'],
 | ||
|     \ ['leftrightarrow'	, '↔'],
 | ||
|     \ ['Leftrightarrow'	, '⇔'],
 | ||
|     \ ['leftrightsquigarrow', '↭'],
 | ||
|     \ ['leftthreetimes'	, '⋋'],
 | ||
|     \ ['leq'		, '≤'],
 | ||
|     \ ['leq'		, '≤'],
 | ||
|     \ ['leqq'		, '≦'],
 | ||
|     \ ['lessdot'	, '⋖'],
 | ||
|     \ ['lesseqgtr'	, '⋚'],
 | ||
|     \ ['lesssim'	, '≲'],
 | ||
|     \ ['lfloor'		, '⌊'],
 | ||
|     \ ['ll'		, '≪'],
 | ||
|     \ ['lmoustache'     , '╭'],
 | ||
|     \ ['lneqq'		, '≨'],
 | ||
|     \ ['ltimes'		, '⋉'],
 | ||
|     \ ['mapsto'		, '↦'],
 | ||
|     \ ['measuredangle'	, '∡'],
 | ||
|     \ ['mid'		, '∣'],
 | ||
|     \ ['models'		, '╞'],
 | ||
|     \ ['mp'		, '∓'],
 | ||
|     \ ['nabla'		, '∇'],
 | ||
|     \ ['natural'	, '♮'],
 | ||
|     \ ['ncong'		, '≇'],
 | ||
|     \ ['ne'		, '≠'],
 | ||
|     \ ['nearrow'	, '↗'],
 | ||
|     \ ['neg'		, '¬'],
 | ||
|     \ ['neq'		, '≠'],
 | ||
|     \ ['nexists'	, '∄'],
 | ||
|     \ ['ngeq'		, '≱'],
 | ||
|     \ ['ngeqq'		, '≱'],
 | ||
|     \ ['ngtr'		, '≯'],
 | ||
|     \ ['ni'		, '∋'],
 | ||
|     \ ['nleftarrow'	, '↚'],
 | ||
|     \ ['nLeftarrow'	, '⇍'],
 | ||
|     \ ['nLeftrightarrow', '⇎'],
 | ||
|     \ ['nleq'		, '≰'],
 | ||
|     \ ['nleqq'		, '≰'],
 | ||
|     \ ['nless'		, '≮'],
 | ||
|     \ ['nmid'		, '∤'],
 | ||
|     \ ['notin'		, '∉'],
 | ||
|     \ ['nprec'		, '⊀'],
 | ||
|     \ ['nrightarrow'	, '↛'],
 | ||
|     \ ['nRightarrow'	, '⇏'],
 | ||
|     \ ['nsim'		, '≁'],
 | ||
|     \ ['nsucc'		, '⊁'],
 | ||
|     \ ['ntriangleleft'	, '⋪'],
 | ||
|     \ ['ntrianglelefteq', '⋬'],
 | ||
|     \ ['ntriangleright'	, '⋫'],
 | ||
|     \ ['ntrianglerighteq', '⋭'],
 | ||
|     \ ['nvdash'		, '⊬'],
 | ||
|     \ ['nvDash'		, '⊭'],
 | ||
|     \ ['nVdash'		, '⊮'],
 | ||
|     \ ['nwarrow'	, '↖'],
 | ||
|     \ ['odot'		, '⊙'],
 | ||
|     \ ['oint'		, '∮'],
 | ||
|     \ ['ominus'		, '⊖'],
 | ||
|     \ ['oplus'		, '⊕'],
 | ||
|     \ ['oslash'		, '⊘'],
 | ||
|     \ ['otimes'		, '⊗'],
 | ||
|     \ ['owns'		, '∋'],
 | ||
|     \ ['P'	        , '¶'],
 | ||
|     \ ['parallel'	, '║'],
 | ||
|     \ ['partial'	, '∂'],
 | ||
|     \ ['perp'		, '⊥'],
 | ||
|     \ ['pitchfork'	, '⋔'],
 | ||
|     \ ['pm'		, '±'],
 | ||
|     \ ['prec'		, '≺'],
 | ||
|     \ ['precapprox'	, '⪷'],
 | ||
|     \ ['preccurlyeq'	, '≼'],
 | ||
|     \ ['preceq'		, '⪯'],
 | ||
|     \ ['precnapprox'	, '⪹'],
 | ||
|     \ ['precneqq'	, '⪵'],
 | ||
|     \ ['precsim'	, '≾'],
 | ||
|     \ ['prime'		, '′'],
 | ||
|     \ ['prod'		, '∏'],
 | ||
|     \ ['propto'		, '∝'],
 | ||
|     \ ['rceil'		, '⌉'],
 | ||
|     \ ['Re'		, 'ℜ'],
 | ||
|     \ ['rfloor'		, '⌋'],
 | ||
|     \ ['right)'		, ')'],
 | ||
|     \ ['right]'		, ']'],
 | ||
|     \ ['right\\}'	, '}'],
 | ||
|     \ ['rightarrow'	, '→'],
 | ||
|     \ ['Rightarrow'	, '⇒'],
 | ||
|     \ ['rightarrowtail'	, '↣'],
 | ||
|     \ ['rightleftharpoons', '⇌'],
 | ||
|     \ ['rightsquigarrow', '↝'],
 | ||
|     \ ['rightthreetimes', '⋌'],
 | ||
|     \ ['risingdotseq'	, '≓'],
 | ||
|     \ ['rmoustache'     , '╮'],
 | ||
|     \ ['rtimes'		, '⋊'],
 | ||
|     \ ['S'	        , '§'],
 | ||
|     \ ['searrow'	, '↘'],
 | ||
|     \ ['setminus'	, '∖'],
 | ||
|     \ ['sharp'		, '♯'],
 | ||
|     \ ['sim'		, '∼'],
 | ||
|     \ ['simeq'		, '⋍'],
 | ||
|     \ ['smile'		, '‿'],
 | ||
|     \ ['spadesuit'	, '♠'],
 | ||
|     \ ['sphericalangle'	, '∢'],
 | ||
|     \ ['sqcap'		, '⊓'],
 | ||
|     \ ['sqcup'		, '⊔'],
 | ||
|     \ ['sqsubset'	, '⊏'],
 | ||
|     \ ['sqsubseteq'	, '⊑'],
 | ||
|     \ ['sqsupset'	, '⊐'],
 | ||
|     \ ['sqsupseteq'	, '⊒'],
 | ||
|     \ ['star'		, '✫'],
 | ||
|     \ ['subset'		, '⊂'],
 | ||
|     \ ['Subset'		, '⋐'],
 | ||
|     \ ['subseteq'	, '⊆'],
 | ||
|     \ ['subseteqq'	, '⫅'],
 | ||
|     \ ['subsetneq'	, '⊊'],
 | ||
|     \ ['subsetneqq'	, '⫋'],
 | ||
|     \ ['succ'		, '≻'],
 | ||
|     \ ['succapprox'	, '⪸'],
 | ||
|     \ ['succcurlyeq'	, '≽'],
 | ||
|     \ ['succeq'		, '⪰'],
 | ||
|     \ ['succnapprox'	, '⪺'],
 | ||
|     \ ['succneqq'	, '⪶'],
 | ||
|     \ ['succsim'	, '≿'],
 | ||
|     \ ['sum'		, '∑'],
 | ||
|     \ ['supset'		, '⊃'],
 | ||
|     \ ['Supset'		, '⋑'],
 | ||
|     \ ['supseteq'	, '⊇'],
 | ||
|     \ ['supseteqq'	, '⫆'],
 | ||
|     \ ['supsetneq'	, '⊋'],
 | ||
|     \ ['supsetneqq'	, '⫌'],
 | ||
|     \ ['surd'		, '√'],
 | ||
|     \ ['swarrow'	, '↙'],
 | ||
|     \ ['therefore'	, '∴'],
 | ||
|     \ ['times'		, '×'],
 | ||
|     \ ['to'		, '→'],
 | ||
|     \ ['top'		, '⊤'],
 | ||
|     \ ['triangle'	, '∆'],
 | ||
|     \ ['triangleleft'	, '⊲'],
 | ||
|     \ ['trianglelefteq'	, '⊴'],
 | ||
|     \ ['triangleq'	, '≜'],
 | ||
|     \ ['triangleright'	, '⊳'],
 | ||
|     \ ['trianglerighteq', '⊵'],
 | ||
|     \ ['twoheadleftarrow', '↞'],
 | ||
|     \ ['twoheadrightarrow', '↠'],
 | ||
|     \ ['uparrow'	, '↑'],
 | ||
|     \ ['Uparrow'	, '⇑'],
 | ||
|     \ ['updownarrow'	, '↕'],
 | ||
|     \ ['Updownarrow'	, '⇕'],
 | ||
|     \ ['varnothing'	, '∅'],
 | ||
|     \ ['vartriangle'	, '∆'],
 | ||
|     \ ['vdash'		, '⊢'],
 | ||
|     \ ['vDash'		, '⊨'],
 | ||
|     \ ['Vdash'		, '⊩'],
 | ||
|     \ ['vdots'		, '⋮'],
 | ||
|     \ ['vee'		, '∨'],
 | ||
|     \ ['veebar'		, '⊻'],
 | ||
|     \ ['Vvdash'		, '⊪'],
 | ||
|     \ ['wedge'		, '∧'],
 | ||
|     \ ['wp'		, '℘'],
 | ||
|     \ ['wr'		, '≀']]
 | ||
| "    \ ['jmath'		, 'X']
 | ||
| "    \ ['uminus'	, 'X']
 | ||
| "    \ ['uplus'		, 'X']
 | ||
|   for texmath in s:texMathList
 | ||
|    if texmath[0] =~ '\w$'
 | ||
|     exe "syn match texMathSymbol '\\\\".texmath[0]."\\>' contained conceal cchar=".texmath[1]
 | ||
|    else
 | ||
|     exe "syn match texMathSymbol '\\\\".texmath[0]."' contained conceal cchar=".texmath[1]
 | ||
|    endif
 | ||
|   endfor
 | ||
| 
 | ||
|   if &ambw == "double"
 | ||
|    syn match texMathSymbol '\\gg\>'			contained conceal cchar=≫
 | ||
|    syn match texMathSymbol '\\ll\>'			contained conceal cchar=≪
 | ||
|   else
 | ||
|    syn match texMathSymbol '\\gg\>'			contained conceal cchar=⟫
 | ||
|    syn match texMathSymbol '\\ll\>'			contained conceal cchar=⟪
 | ||
|   endif
 | ||
| 
 | ||
|   syn match texMathSymbol '\\hat{a}' contained conceal cchar=â
 | ||
|   syn match texMathSymbol '\\hat{A}' contained conceal cchar=Â
 | ||
|   syn match texMathSymbol '\\hat{c}' contained conceal cchar=ĉ
 | ||
|   syn match texMathSymbol '\\hat{C}' contained conceal cchar=Ĉ
 | ||
|   syn match texMathSymbol '\\hat{e}' contained conceal cchar=ê
 | ||
|   syn match texMathSymbol '\\hat{E}' contained conceal cchar=Ê
 | ||
|   syn match texMathSymbol '\\hat{g}' contained conceal cchar=ĝ
 | ||
|   syn match texMathSymbol '\\hat{G}' contained conceal cchar=Ĝ
 | ||
|   syn match texMathSymbol '\\hat{i}' contained conceal cchar=î
 | ||
|   syn match texMathSymbol '\\hat{I}' contained conceal cchar=Î
 | ||
|   syn match texMathSymbol '\\hat{o}' contained conceal cchar=ô
 | ||
|   syn match texMathSymbol '\\hat{O}' contained conceal cchar=Ô
 | ||
|   syn match texMathSymbol '\\hat{s}' contained conceal cchar=ŝ
 | ||
|   syn match texMathSymbol '\\hat{S}' contained conceal cchar=Ŝ
 | ||
|   syn match texMathSymbol '\\hat{u}' contained conceal cchar=û
 | ||
|   syn match texMathSymbol '\\hat{U}' contained conceal cchar=Û
 | ||
|   syn match texMathSymbol '\\hat{w}' contained conceal cchar=ŵ
 | ||
|   syn match texMathSymbol '\\hat{W}' contained conceal cchar=Ŵ
 | ||
|   syn match texMathSymbol '\\hat{y}' contained conceal cchar=ŷ
 | ||
|   syn match texMathSymbol '\\hat{Y}' contained conceal cchar=Ŷ
 | ||
| "  syn match texMathSymbol '\\bar{a}' contained conceal cchar=a̅
 | ||
|  endif
 | ||
| 
 | ||
|  " Greek {{{2
 | ||
|  if s:tex_conceal =~ 'g'
 | ||
|   fun! s:Greek(group,pat,cchar)
 | ||
|     exe 'syn match '.a:group." '".a:pat."' contained conceal cchar=".a:cchar
 | ||
|   endfun
 | ||
|   call s:Greek('texGreek','\\alpha\>'		,'α')
 | ||
|   call s:Greek('texGreek','\\beta\>'		,'β')
 | ||
|   call s:Greek('texGreek','\\gamma\>'		,'γ')
 | ||
|   call s:Greek('texGreek','\\delta\>'		,'δ')
 | ||
|   call s:Greek('texGreek','\\epsilon\>'		,'ϵ')
 | ||
|   call s:Greek('texGreek','\\varepsilon\>'	,'ε')
 | ||
|   call s:Greek('texGreek','\\zeta\>'		,'ζ')
 | ||
|   call s:Greek('texGreek','\\eta\>'		,'η')
 | ||
|   call s:Greek('texGreek','\\theta\>'		,'θ')
 | ||
|   call s:Greek('texGreek','\\vartheta\>'	,'ϑ')
 | ||
|   call s:Greek('texGreek','\\kappa\>'		,'κ')
 | ||
|   call s:Greek('texGreek','\\lambda\>'		,'λ')
 | ||
|   call s:Greek('texGreek','\\mu\>'		,'μ')
 | ||
|   call s:Greek('texGreek','\\nu\>'		,'ν')
 | ||
|   call s:Greek('texGreek','\\xi\>'		,'ξ')
 | ||
|   call s:Greek('texGreek','\\pi\>'		,'π')
 | ||
|   call s:Greek('texGreek','\\varpi\>'		,'ϖ')
 | ||
|   call s:Greek('texGreek','\\rho\>'		,'ρ')
 | ||
|   call s:Greek('texGreek','\\varrho\>'		,'ϱ')
 | ||
|   call s:Greek('texGreek','\\sigma\>'		,'σ')
 | ||
|   call s:Greek('texGreek','\\varsigma\>'	,'ς')
 | ||
|   call s:Greek('texGreek','\\tau\>'		,'τ')
 | ||
|   call s:Greek('texGreek','\\upsilon\>'		,'υ')
 | ||
|   call s:Greek('texGreek','\\phi\>'		,'ϕ')
 | ||
|   call s:Greek('texGreek','\\varphi\>'		,'φ')
 | ||
|   call s:Greek('texGreek','\\chi\>'		,'χ')
 | ||
|   call s:Greek('texGreek','\\psi\>'		,'ψ')
 | ||
|   call s:Greek('texGreek','\\omega\>'		,'ω')
 | ||
|   call s:Greek('texGreek','\\Gamma\>'		,'Γ')
 | ||
|   call s:Greek('texGreek','\\Delta\>'		,'Δ')
 | ||
|   call s:Greek('texGreek','\\Theta\>'		,'Θ')
 | ||
|   call s:Greek('texGreek','\\Lambda\>'		,'Λ')
 | ||
|   call s:Greek('texGreek','\\Xi\>'		,'Χ')
 | ||
|   call s:Greek('texGreek','\\Pi\>'		,'Π')
 | ||
|   call s:Greek('texGreek','\\Sigma\>'		,'Σ')
 | ||
|   call s:Greek('texGreek','\\Upsilon\>'		,'Υ')
 | ||
|   call s:Greek('texGreek','\\Phi\>'		,'Φ')
 | ||
|   call s:Greek('texGreek','\\Psi\>'		,'Ψ')
 | ||
|   call s:Greek('texGreek','\\Omega\>'		,'Ω')
 | ||
|   delfun s:Greek
 | ||
|  endif
 | ||
| 
 | ||
|  " Superscripts/Subscripts {{{2
 | ||
|  if s:tex_conceal =~ 's'
 | ||
|   if s:tex_fast =~ 's'
 | ||
|    syn region texSuperscript	matchgroup=Delimiter start='\^{'	skip="\\\\\|\\[{}]" end='}'	contained concealends contains=texSpecialChar,texSuperscripts,texStatement,texSubscript,texSuperscript,texMathMatcher
 | ||
|    syn region texSubscript	matchgroup=Delimiter start='_{'		skip="\\\\\|\\[{}]" end='}'	contained concealends contains=texSpecialChar,texSubscripts,texStatement,texSubscript,texSuperscript,texMathMatcher
 | ||
|   endif
 | ||
|   " s:SuperSub:
 | ||
|   fun! s:SuperSub(group,leader,pat,cchar)
 | ||
|     if a:pat =~ '^\\' || (a:leader == '\^' && a:pat =~ g:tex_superscripts) || (a:leader == '_' && a:pat =~ g:tex_subscripts)
 | ||
| "     call Decho("SuperSub: group<".a:group."> leader<".a:leader."> pat<".a:pat."> cchar<".a:cchar.">")
 | ||
|      exe 'syn match '.a:group." '".a:leader.a:pat."' contained conceal cchar=".a:cchar
 | ||
|      exe 'syn match '.a:group."s '".a:pat        ."' contained conceal cchar=".a:cchar.' nextgroup='.a:group.'s'
 | ||
|     endif
 | ||
|   endfun
 | ||
|   call s:SuperSub('texSuperscript','\^','0','⁰')
 | ||
|   call s:SuperSub('texSuperscript','\^','1','¹')
 | ||
|   call s:SuperSub('texSuperscript','\^','2','²')
 | ||
|   call s:SuperSub('texSuperscript','\^','3','³')
 | ||
|   call s:SuperSub('texSuperscript','\^','4','⁴')
 | ||
|   call s:SuperSub('texSuperscript','\^','5','⁵')
 | ||
|   call s:SuperSub('texSuperscript','\^','6','⁶')
 | ||
|   call s:SuperSub('texSuperscript','\^','7','⁷')
 | ||
|   call s:SuperSub('texSuperscript','\^','8','⁸')
 | ||
|   call s:SuperSub('texSuperscript','\^','9','⁹')
 | ||
|   call s:SuperSub('texSuperscript','\^','a','ᵃ')
 | ||
|   call s:SuperSub('texSuperscript','\^','b','ᵇ')
 | ||
|   call s:SuperSub('texSuperscript','\^','c','ᶜ')
 | ||
|   call s:SuperSub('texSuperscript','\^','d','ᵈ')
 | ||
|   call s:SuperSub('texSuperscript','\^','e','ᵉ')
 | ||
|   call s:SuperSub('texSuperscript','\^','f','ᶠ')
 | ||
|   call s:SuperSub('texSuperscript','\^','g','ᵍ')
 | ||
|   call s:SuperSub('texSuperscript','\^','h','ʰ')
 | ||
|   call s:SuperSub('texSuperscript','\^','i','ⁱ')
 | ||
|   call s:SuperSub('texSuperscript','\^','j','ʲ')
 | ||
|   call s:SuperSub('texSuperscript','\^','k','ᵏ')
 | ||
|   call s:SuperSub('texSuperscript','\^','l','ˡ')
 | ||
|   call s:SuperSub('texSuperscript','\^','m','ᵐ')
 | ||
|   call s:SuperSub('texSuperscript','\^','n','ⁿ')
 | ||
|   call s:SuperSub('texSuperscript','\^','o','ᵒ')
 | ||
|   call s:SuperSub('texSuperscript','\^','p','ᵖ')
 | ||
|   call s:SuperSub('texSuperscript','\^','r','ʳ')
 | ||
|   call s:SuperSub('texSuperscript','\^','s','ˢ')
 | ||
|   call s:SuperSub('texSuperscript','\^','t','ᵗ')
 | ||
|   call s:SuperSub('texSuperscript','\^','u','ᵘ')
 | ||
|   call s:SuperSub('texSuperscript','\^','v','ᵛ')
 | ||
|   call s:SuperSub('texSuperscript','\^','w','ʷ')
 | ||
|   call s:SuperSub('texSuperscript','\^','x','ˣ')
 | ||
|   call s:SuperSub('texSuperscript','\^','y','ʸ')
 | ||
|   call s:SuperSub('texSuperscript','\^','z','ᶻ')
 | ||
|   call s:SuperSub('texSuperscript','\^','A','ᴬ')
 | ||
|   call s:SuperSub('texSuperscript','\^','B','ᴮ')
 | ||
|   call s:SuperSub('texSuperscript','\^','D','ᴰ')
 | ||
|   call s:SuperSub('texSuperscript','\^','E','ᴱ')
 | ||
|   call s:SuperSub('texSuperscript','\^','G','ᴳ')
 | ||
|   call s:SuperSub('texSuperscript','\^','H','ᴴ')
 | ||
|   call s:SuperSub('texSuperscript','\^','I','ᴵ')
 | ||
|   call s:SuperSub('texSuperscript','\^','J','ᴶ')
 | ||
|   call s:SuperSub('texSuperscript','\^','K','ᴷ')
 | ||
|   call s:SuperSub('texSuperscript','\^','L','ᴸ')
 | ||
|   call s:SuperSub('texSuperscript','\^','M','ᴹ')
 | ||
|   call s:SuperSub('texSuperscript','\^','N','ᴺ')
 | ||
|   call s:SuperSub('texSuperscript','\^','O','ᴼ')
 | ||
|   call s:SuperSub('texSuperscript','\^','P','ᴾ')
 | ||
|   call s:SuperSub('texSuperscript','\^','R','ᴿ')
 | ||
|   call s:SuperSub('texSuperscript','\^','T','ᵀ')
 | ||
|   call s:SuperSub('texSuperscript','\^','U','ᵁ')
 | ||
|   call s:SuperSub('texSuperscript','\^','W','ᵂ')
 | ||
|   call s:SuperSub('texSuperscript','\^',',','︐')
 | ||
|   call s:SuperSub('texSuperscript','\^',':','︓')
 | ||
|   call s:SuperSub('texSuperscript','\^',';','︔')
 | ||
|   call s:SuperSub('texSuperscript','\^','+','⁺')
 | ||
|   call s:SuperSub('texSuperscript','\^','-','⁻')
 | ||
|   call s:SuperSub('texSuperscript','\^','<','˂')
 | ||
|   call s:SuperSub('texSuperscript','\^','>','˃')
 | ||
|   call s:SuperSub('texSuperscript','\^','/','ˊ')
 | ||
|   call s:SuperSub('texSuperscript','\^','(','⁽')
 | ||
|   call s:SuperSub('texSuperscript','\^',')','⁾')
 | ||
|   call s:SuperSub('texSuperscript','\^','\.','˙')
 | ||
|   call s:SuperSub('texSuperscript','\^','=','˭')
 | ||
|   call s:SuperSub('texSubscript','_','0','₀')
 | ||
|   call s:SuperSub('texSubscript','_','1','₁')
 | ||
|   call s:SuperSub('texSubscript','_','2','₂')
 | ||
|   call s:SuperSub('texSubscript','_','3','₃')
 | ||
|   call s:SuperSub('texSubscript','_','4','₄')
 | ||
|   call s:SuperSub('texSubscript','_','5','₅')
 | ||
|   call s:SuperSub('texSubscript','_','6','₆')
 | ||
|   call s:SuperSub('texSubscript','_','7','₇')
 | ||
|   call s:SuperSub('texSubscript','_','8','₈')
 | ||
|   call s:SuperSub('texSubscript','_','9','₉')
 | ||
|   call s:SuperSub('texSubscript','_','a','ₐ')
 | ||
|   call s:SuperSub('texSubscript','_','e','ₑ')
 | ||
|   call s:SuperSub('texSubscript','_','i','ᵢ')
 | ||
|   call s:SuperSub('texSubscript','_','o','ₒ')
 | ||
|   call s:SuperSub('texSubscript','_','u','ᵤ')
 | ||
|   call s:SuperSub('texSubscript','_',',','︐')
 | ||
|   call s:SuperSub('texSubscript','_','+','₊')
 | ||
|   call s:SuperSub('texSubscript','_','-','₋')
 | ||
|   call s:SuperSub('texSubscript','_','/','ˏ')
 | ||
|   call s:SuperSub('texSubscript','_','(','₍')
 | ||
|   call s:SuperSub('texSubscript','_',')','₎')
 | ||
|   call s:SuperSub('texSubscript','_','\.','‸')
 | ||
|   call s:SuperSub('texSubscript','_','r','ᵣ')
 | ||
|   call s:SuperSub('texSubscript','_','v','ᵥ')
 | ||
|   call s:SuperSub('texSubscript','_','x','ₓ')
 | ||
|   call s:SuperSub('texSubscript','_','\\beta\>' ,'ᵦ')
 | ||
|   call s:SuperSub('texSubscript','_','\\delta\>','ᵨ')
 | ||
|   call s:SuperSub('texSubscript','_','\\phi\>'  ,'ᵩ')
 | ||
|   call s:SuperSub('texSubscript','_','\\gamma\>','ᵧ')
 | ||
|   call s:SuperSub('texSubscript','_','\\chi\>'  ,'ᵪ')
 | ||
|   delfun s:SuperSub
 | ||
|  endif
 | ||
| 
 | ||
|  " Accented characters: {{{2
 | ||
|  if s:tex_conceal =~ 'a'
 | ||
|   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
 | ||
|    fun! s:Accents(chr,...)
 | ||
|      let i= 1
 | ||
|      for accent in ["`","\\'","^",'"','\~','\.','=',"c","H","k","r","u","v"]
 | ||
|       if i > a:0
 | ||
|        break
 | ||
|       endif
 | ||
|       if strlen(a:{i}) == 0 || a:{i} == ' ' || a:{i} == '?'
 | ||
|        let i= i + 1
 | ||
|        continue
 | ||
|       endif
 | ||
|       if accent =~ '\a'
 | ||
|        exe "syn match texAccent '".'\\'.accent.'\(\s*{'.a:chr.'}\|\s\+'.a:chr.'\)'."' conceal cchar=".a:{i}
 | ||
|       else
 | ||
|        exe "syn match texAccent '".'\\'.accent.'\s*\({'.a:chr.'}\|'.a:chr.'\)'."' conceal cchar=".a:{i}
 | ||
|       endif
 | ||
|       let i= i + 1
 | ||
|      endfor
 | ||
|    endfun
 | ||
|    "                  \`  \'  \^  \"  \~  \.  \=  \c  \H  \k  \r  \u  \v
 | ||
|    call s:Accents('a','à','á','â','ä','ã','ȧ','ā',' ',' ','ą','å','ă','ǎ')
 | ||
|    call s:Accents('A','À','Á','Â','Ä','Ã','Ȧ','Ā',' ',' ','Ą','Å','Ă','Ǎ')
 | ||
|    call s:Accents('c',' ','ć','ĉ',' ',' ','ċ',' ','ç',' ',' ',' ',' ','č')
 | ||
|    call s:Accents('C',' ','Ć','Ĉ',' ',' ','Ċ',' ','Ç',' ',' ',' ',' ','Č')
 | ||
|    call s:Accents('d',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ď')
 | ||
|    call s:Accents('D',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Ď')
 | ||
|    call s:Accents('e','è','é','ê','ë','ẽ','ė','ē','ȩ',' ','ę',' ','ĕ','ě')
 | ||
|    call s:Accents('E','È','É','Ê','Ë','Ẽ','Ė','Ē','Ȩ',' ','Ę',' ','Ĕ','Ě')
 | ||
|    call s:Accents('g',' ','ǵ','ĝ',' ',' ','ġ',' ','ģ',' ',' ',' ','ğ','ǧ')
 | ||
|    call s:Accents('G',' ','Ǵ','Ĝ',' ',' ','Ġ',' ','Ģ',' ',' ',' ','Ğ','Ǧ')
 | ||
|    call s:Accents('h',' ',' ','ĥ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ȟ')
 | ||
|    call s:Accents('H',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','Ȟ')
 | ||
|    call s:Accents('i','ì','í','î','ï','ĩ','į','ī',' ',' ','į',' ','ĭ','ǐ')
 | ||
|    call s:Accents('I','Ì','Í','Î','Ï','Ĩ','İ','Ī',' ',' ','Į',' ','Ĭ','Ǐ')
 | ||
|    call s:Accents('J',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','ǰ')
 | ||
|    call s:Accents('k',' ',' ',' ',' ',' ',' ',' ','ķ',' ',' ',' ',' ','ǩ')
 | ||
|    call s:Accents('K',' ',' ',' ',' ',' ',' ',' ','Ķ',' ',' ',' ',' ','Ǩ')
 | ||
|    call s:Accents('l',' ','ĺ','ľ',' ',' ',' ',' ','ļ',' ',' ',' ',' ','ľ')
 | ||
|    call s:Accents('L',' ','Ĺ','Ľ',' ',' ',' ',' ','Ļ',' ',' ',' ',' ','Ľ')
 | ||
|    call s:Accents('n',' ','ń',' ',' ','ñ',' ',' ','ņ',' ',' ',' ',' ','ň')
 | ||
|    call s:Accents('N',' ','Ń',' ',' ','Ñ',' ',' ','Ņ',' ',' ',' ',' ','Ň')
 | ||
|    call s:Accents('o','ò','ó','ô','ö','õ','ȯ','ō',' ','ő','ǫ',' ','ŏ','ǒ')
 | ||
|    call s:Accents('O','Ò','Ó','Ô','Ö','Õ','Ȯ','Ō',' ','Ő','Ǫ',' ','Ŏ','Ǒ')
 | ||
|    call s:Accents('r',' ','ŕ',' ',' ',' ',' ',' ','ŗ',' ',' ',' ',' ','ř')
 | ||
|    call s:Accents('R',' ','Ŕ',' ',' ',' ',' ',' ','Ŗ',' ',' ',' ',' ','Ř')
 | ||
|    call s:Accents('s',' ','ś','ŝ',' ',' ',' ',' ','ş',' ','ȿ',' ',' ','š')
 | ||
|    call s:Accents('S',' ','Ś','Ŝ',' ',' ',' ',' ','Ş',' ',' ',' ',' ','Š')
 | ||
|    call s:Accents('t',' ',' ',' ',' ',' ',' ',' ','ţ',' ',' ',' ',' ','ť')
 | ||
|    call s:Accents('T',' ',' ',' ',' ',' ',' ',' ','Ţ',' ',' ',' ',' ','Ť')
 | ||
|    call s:Accents('u','ù','ú','û','ü','ũ',' ','ū',' ','ű','ų','ů','ŭ','ǔ')
 | ||
|    call s:Accents('U','Ù','Ú','Û','Ü','Ũ',' ','Ū',' ','Ű','Ų','Ů','Ŭ','Ǔ')
 | ||
|    call s:Accents('w',' ',' ','ŵ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ')
 | ||
|    call s:Accents('W',' ',' ','Ŵ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ')
 | ||
|    call s:Accents('y','ỳ','ý','ŷ','ÿ','ỹ',' ',' ',' ',' ',' ',' ',' ',' ')
 | ||
|    call s:Accents('Y','Ỳ','Ý','Ŷ','Ÿ','Ỹ',' ',' ',' ',' ',' ',' ',' ',' ')
 | ||
|    call s:Accents('z',' ','ź',' ',' ',' ','ż',' ',' ',' ',' ',' ',' ','ž')
 | ||
|    call s:Accents('Z',' ','Ź',' ',' ',' ','Ż',' ',' ',' ',' ',' ',' ','Ž')
 | ||
|    call s:Accents('\\i','ì','í','î','ï','ĩ','į',' ',' ',' ',' ',' ','ĭ',' ')
 | ||
|    "                    \`  \'  \^  \"  \~  \.  \=  \c  \H  \k  \r  \u  \v
 | ||
|    delfun s:Accents
 | ||
|    syn match texAccent   '\\aa\>'	conceal cchar=å
 | ||
|    syn match texAccent   '\\AA\>'	conceal cchar=Å
 | ||
|    syn match texAccent	'\\o\>'		conceal cchar=ø
 | ||
|    syn match texAccent	'\\O\>'		conceal cchar=Ø
 | ||
|    syn match texLigature	'\\AE\>'	conceal cchar=Æ
 | ||
|    syn match texLigature	'\\ae\>'	conceal cchar=æ
 | ||
|    syn match texLigature	'\\oe\>'	conceal cchar=œ
 | ||
|    syn match texLigature	'\\OE\>'	conceal cchar=Œ
 | ||
|    syn match texLigature	'\\ss\>'	conceal cchar=ß
 | ||
|   endif
 | ||
|  endif
 | ||
| endif
 | ||
| 
 | ||
| " ---------------------------------------------------------------------
 | ||
| " 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("g: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("g: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
 | ||
| 
 | ||
|   hi texBoldStyle		gui=bold	cterm=bold
 | ||
|   hi texItalStyle		gui=italic	cterm=italic
 | ||
|   hi texBoldItalStyle		gui=bold,italic cterm=bold,italic
 | ||
|   hi texItalBoldStyle		gui=bold,italic cterm=bold,italic
 | ||
|   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("g:tex_no_math")
 | ||
|    HiLink texMathDelimSet1	texMathDelim
 | ||
|    HiLink texMathDelimSet2	texMathDelim
 | ||
|    HiLink texMathDelimKey	texMathDelim
 | ||
|    HiLink texMathMatcher	texMath
 | ||
|    HiLink texAccent		texStatement
 | ||
|    HiLink texGreek		texStatement
 | ||
|    HiLink texSuperscript	texStatement
 | ||
|    HiLink texSubscript		texStatement
 | ||
|    HiLink texSuperscripts 	texSuperscript
 | ||
|    HiLink texSubscripts 	texSubscript
 | ||
|    HiLink texMathSymbol		texStatement
 | ||
|    HiLink texMathZoneV		texMath
 | ||
|    HiLink texMathZoneW		texMath
 | ||
|    HiLink texMathZoneX		texMath
 | ||
|    HiLink texMathZoneY		texMath
 | ||
|    HiLink texMathZoneV		texMath
 | ||
|    HiLink texMathZoneZ		texMath
 | ||
|   endif
 | ||
|   HiLink texBeginEnd		texCmdName
 | ||
|   HiLink texBeginEndName	texSection
 | ||
|   HiLink texSpaceCode		texStatement
 | ||
|   HiLink texStyleStatement	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
 | ||
| 
 | ||
| " Cleanup: {{{1
 | ||
| unlet s:extfname
 | ||
| let   b:current_syntax = "tex"
 | ||
| let &cpo               = s:keepcpo
 | ||
| unlet s:keepcpo
 | ||
| " vim: ts=8 fdm=marker
 | 
