function! TexFolds() let thisline = getline(v:lnum) if match(thisline,'^\\chapter') >= 0 return ">1" elseif match(thisline,'^\\section') >= 0 return ">1" elseif match(thisline,'^\\subsection') >=0 return ">1" elseif match(thisline,'^\\subsubsection') >=0 return ">1" else return "=" endif endfunction function! TexFoldText() let startline = getline(v:foldstart) let title = substitute(startline,'^.*{\(.*\)}.*$','\1',"") if match(startline,'^\\chapter') >= 0 return '*' . title . '' elseif match(startline,'^\\section') >= 0 return ' # ' . title elseif match(startline,'^\\subsection') >=0 return ' ## ' . title elseif match(startline,'^\\subsubsection') >=0 return ' ### ' . title else echom "Error, fold not recognized" endif endfunction setlocal foldmethod=expr setlocal foldexpr=TexFolds() setlocal foldtext=TexFoldText()