Spade

Mini Shell

Directory:~$ /proc/self/root/usr/share/vim/vim74/syntax/
Upload File

[Home] [System Details] [Kill Me]
Current File:~$ //proc/self/root/usr/share/vim/vim74/syntax/tex.vim

" Vim syntax file
" Language:	TeX
" Maintainer:	Charles E. Campbell
<NdrchipO@ScampbellPfamily.AbizM>
" Last Change:	Jun 24, 2013
" Version:	79
" 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

" 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
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
 let s:tex_no_error= 1
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

" 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")
 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
syn cluster texRefGroup		contains=texMatcher,texComment,texDelimiter
if !exists("tex_no_math")
 syn cluster
texMathZones	contains=texMathZoneV,texMathZoneW,texMathZoneX,texMathZoneY,texMathZoneZ
 syn cluster texMatchGroup	add=@texMathZones
 syn cluster
texMathDelimGroup	contains=texMathDelimBad,texMathDelimKey,texMathDelimSet1,texMathDelimSet2
 syn cluster
texMathMatchGroup	contains=@texMathZones,texComment,texDefCmd,texDelimiter,texDocType,texInput,texLength,texLigature,texMathDelim,texMathMatcher,texMathOper,texNewCmd,texNewEnv,texRefZone,texSection,texSpecialChar,texStatement,texString,texTypeSize,texTypeStyle,texZone
 syn cluster
texMathZoneGroup	contains=texComment,texDelimiter,texLength,texMathDelim,texMathMatcher,texMathOper,texMathSymbol,texMathText,texRefZone,texSpecialChar,texStatement,texTypeSize,texTypeStyle
 if !exists("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")
   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")
 syn match  texError		"[}\])]"
endif
if s:tex_fast =~ 'M'
  if !exists("tex_no_math")
   if !exists("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")
   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
   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'
   syn region texBoldStyle	matchgroup=texTypeStyle
start="\\textbf\s*{" end="}" concealends
contains=@texBoldGroup
   syn region texBoldItalStyle	matchgroup=texTypeStyle
start="\\textit\s*{" end="}" concealends
contains=@texItalGroup
   syn region texItalStyle	matchgroup=texTypeStyle
start="\\textit\s*{" end="}" concealends
contains=@texItalGroup
   syn region texItalBoldStyle	matchgroup=texTypeStyle
start="\\textbf\s*{" end="}" concealends
contains=@texBoldGroup
  endif
endif

" Bad Math (mismatched): {{{1
if !exists("g:tex_no_math") &&
!exists("s:tex_no_error")
 syn match
texBadMath		"\\end\s*{\s*\(array\|gathered\|bBpvV]matrix\|split\|subequations\|smallmatrix\|xxalignat\)\s*}"
 syn match
texBadMath		"\\end\s*{\s*\(align\|alignat\|displaymath\|displaymath\|eqnarray\|equation\|flalign\|gather\|math\|multline\|xalignat\)\*\=\s*}"
 syn match texBadMath		"\\[\])]"
endif

" Math Zones: {{{1
if !exists("tex_no_math")
 " TexNewMathZone: function creates a mathzone with the given suffix
and mathzone name. {{{2
 "                 Starred forms are created if starform is true. 
Starred
 "                 forms have syntax group and synchronization groups
with a
 "                 "S" appended.  Handles: cluster, syntax,
sync, and HiLink.
 fun! TexNewMathZone(sfx,mathzone,starform)
   let grpname  = "texMathZone".a:sfx
   let syncname = "texSyncMathZone".a:sfx
   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","subequations",0)
 call TexNewMathZone("K","xalignat",1)
 call TexNewMathZone("L","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\>"	concealends
keepend		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("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 fold		matchgroup=texComment
start="%\s*nospell\s*{"	end="%\s*nospell\s*}"	contains=@texFoldGroup,@NoSpell
   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
   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")
 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=Ŷ
 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
  fun! s:SuperSub(group,leader,pat,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'
  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("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("s: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("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