mirror of
				https://github.com/amix/vimrc
				synced 2025-10-30 21:43:35 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			206 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			206 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| priority -50
 | |
| 
 | |
| extends texmath
 | |
| 
 | |
| global !p
 | |
| 
 | |
| def create_table(snip):
 | |
| 	rows = snip.buffer[snip.line].split('x')[0]
 | |
| 	cols = snip.buffer[snip.line].split('x')[1]
 | |
| 
 | |
| 	int_val = lambda string: int(''.join(s for s in string if s.isdigit()))
 | |
| 	
 | |
| 	rows = int_val(rows)
 | |
| 	cols = int_val(cols)
 | |
| 
 | |
| 	offset = cols + 1
 | |
| 	old_spacing = snip.buffer[snip.line][:snip.buffer[snip.line].rfind('\t') + 1]
 | |
| 	
 | |
| 	snip.buffer[snip.line] = ''
 | |
| 	
 | |
| 	final_str = old_spacing + "\\begin{tabular}{|" + "|".join(['$' + str(i + 1) for i in range(cols)]) + "|}\n"
 | |
| 
 | |
| 	for i in range(rows):
 | |
| 		final_str += old_spacing + '\t'
 | |
| 		final_str += " & ".join(['$' + str(i * cols + j + offset) for j in range(cols)])
 | |
| 
 | |
| 		final_str += " \\\\\\\n"
 | |
| 
 | |
| 	final_str += old_spacing + "\\end{tabular}\n$0"
 | |
| 
 | |
| 	snip.expand_anon(final_str)
 | |
| 
 | |
| def add_row(snip):
 | |
| 	row_len = int(''.join(s for s in snip.buffer[snip.line] if s.isdigit()))
 | |
| 	old_spacing = snip.buffer[snip.line][:snip.buffer[snip.line].rfind('\t') + 1]
 | |
| 
 | |
| 	snip.buffer[snip.line] = ''
 | |
| 	
 | |
| 	final_str = old_spacing
 | |
| 	final_str += " & ".join(['$' + str(j + 1) for j in range(row_len)])
 | |
| 	final_str += " \\\\\\"
 | |
| 
 | |
| 	snip.expand_anon(final_str)
 | |
| 
 | |
| endglobal
 | |
| 
 | |
| snippet "b(egin)?" "begin{} / end{}" br
 | |
| \begin{${1:something}}
 | |
| 	${0:${VISUAL}}
 | |
| \end{$1}
 | |
| endsnippet
 | |
| 
 | |
| snippet abs "abstract environment" b
 | |
| \begin{abstract}
 | |
| 	$0
 | |
| \end{abstract}
 | |
| endsnippet
 | |
| 
 | |
| snippet tab "tabular / array environment" b
 | |
| \begin{${1:t}${1/(t)$|(a)$|(.*)/(?1:abular)(?2:rray)/}}{${2:c}}
 | |
| $0${2/(?<=.)(c|l|r)|./(?1: & )/g}
 | |
| \end{$1${1/(t)$|(a)$|(.*)/(?1:abular)(?2:rray)/}}
 | |
| endsnippet
 | |
| 
 | |
| pre_expand "create_table(snip)"
 | |
| snippet "gentbl(\d+)x(\d+)" "Generate table of *width* by *height*" r  
 | |
| endsnippet
 | |
| 
 | |
| pre_expand "add_row(snip)"
 | |
| snippet "tr(\d+)" "Add table row of dimension ..." r
 | |
| endsnippet
 | |
| 
 | |
| snippet table "Table environment" b
 | |
| \begin{table}[${1:htpb}]
 | |
| 	\centering
 | |
| 	\caption{${2:caption}}
 | |
| 	\label{tab:${3:label}}
 | |
| 	\begin{${4:t}${4/(t)$|(a)$|(.*)/(?1:abular)(?2:rray)/}}{${5:c}}
 | |
| 	$0${5/(?<=.)(c|l|r)|./(?1: & )/g}
 | |
| 	\end{$4${4/(t)$|(a)$|(.*)/(?1:abular)(?2:rray)/}}
 | |
| \end{table}
 | |
| endsnippet
 | |
| 
 | |
| snippet fig "Figure environment" b
 | |
| \begin{figure}[${2:htpb}]
 | |
| 	\centering
 | |
| 	\includegraphics[width=${3:0.8}\linewidth]{${4:name.ext}}
 | |
| 	\caption{${4/(\w+)\.\w+/\u$1/}$0}
 | |
| 	\label{fig:${4/(\w+)\.\w+/$1/}}
 | |
| \end{figure}
 | |
| endsnippet
 | |
| 
 | |
| snippet enum "Enumerate" b
 | |
| \begin{enumerate}
 | |
| 	\item $0
 | |
| \end{enumerate}
 | |
| endsnippet
 | |
| 
 | |
| snippet item "Itemize" b
 | |
| \begin{itemize}
 | |
| 	\item $0
 | |
| \end{itemize}
 | |
| endsnippet
 | |
| 
 | |
| snippet desc "Description" b
 | |
| \begin{description}
 | |
| 	\item[$1] $0
 | |
| \end{description}
 | |
| endsnippet
 | |
| 
 | |
| snippet it "Individual item" b
 | |
| \item $0
 | |
| endsnippet
 | |
| 
 | |
| snippet part "Part" b
 | |
| \part{${1:part name}}%
 | |
| \label{prt:${2:${1/(\w+)|\W+/(?1:\L$0\E:_)/ga}}}
 | |
| 
 | |
| $0
 | |
| endsnippet
 | |
| 
 | |
| snippet cha "Chapter" b
 | |
| \chapter{${1:chapter name}}%
 | |
| \label{cha:${2:${1/\\\w+\{(.*?)\}|\\(.)|(\w+)|([^\w\\]+)/(?4:_:\L$1$2$3\E)/ga}}}
 | |
| 
 | |
| $0
 | |
| endsnippet
 | |
| 
 | |
| snippet sec "Section" b
 | |
| \section{${1:section name}}%
 | |
| \label{sec:${2:${1/\\\w+\{(.*?)\}|\\(.)|(\w+)|([^\w\\]+)/(?4:_:\L$1$2$3\E)/ga}}}
 | |
| 
 | |
| $0
 | |
| endsnippet
 | |
| 
 | |
| snippet sec* "Section" b
 | |
| \section*{${1:section name}}%
 | |
| \label{sec:${2:${1/\\\w+\{(.*?)\}|\\(.)|(\w+)|([^\w\\]+)/(?4:_:\L$1$2$3\E)/ga}}}
 | |
| 
 | |
| ${0}
 | |
| endsnippet
 | |
| 
 | |
| 
 | |
| snippet sub "Subsection" b
 | |
| \subsection{${1:subsection name}}%
 | |
| \label{sub:${2:${1/\\\w+\{(.*?)\}|\\(.)|(\w+)|([^\w\\]+)/(?4:_:\L$1$2$3\E)/ga}}}
 | |
| 
 | |
| $0
 | |
| endsnippet
 | |
| 
 | |
| snippet sub* "Subsection" b
 | |
| \subsection*{${1:subsection name}}%
 | |
| \label{sub:${2:${1/\\\w+\{(.*?)\}|\\(.)|(\w+)|([^\w\\]+)/(?4:_:\L$1$2$3\E)/ga}}}
 | |
| 
 | |
| ${0}
 | |
| endsnippet
 | |
| 
 | |
| snippet ssub "Subsubsection" b
 | |
| \subsubsection{${1:subsubsection name}}%
 | |
| \label{ssub:${2:${1/\\\w+\{(.*?)\}|\\(.)|(\w+)|([^\w\\]+)/(?4:_:\L$1$2$3\E)/ga}}}
 | |
| 
 | |
| $0
 | |
| endsnippet
 | |
| 
 | |
| snippet ssub* "Subsubsection" b
 | |
| \subsubsection*{${1:subsubsection name}}%
 | |
| \label{ssub:${2:${1/\\\w+\{(.*?)\}|\\(.)|(\w+)|([^\w\\]+)/(?4:_:\L$1$2$3\E)/ga}}}
 | |
| 
 | |
| ${0}
 | |
| endsnippet
 | |
| 
 | |
| snippet par "Paragraph" b
 | |
| \paragraph{${1:paragraph name}}%
 | |
| \label{par:${2:${1/\\\w+\{(.*?)\}|\\(.)|(\w+)|([^\w\\]+)/(?4:_:\L$1$2$3\E)/ga}}}
 | |
| 
 | |
| $0
 | |
| endsnippet
 | |
| 
 | |
| snippet subp "Subparagraph" b
 | |
| \subparagraph{${1:subparagraph name}}%
 | |
| \label{par:${2:${1/\\\w+\{(.*?)\}|\\(.)|(\w+)|([^\w\\]+)/(?4:_:\L$1$2$3\E)/ga}}}
 | |
| 
 | |
| $0
 | |
| endsnippet
 | |
| 
 | |
| snippet ni "Non-indented paragraph" b
 | |
| \noindent
 | |
| $0
 | |
| endsnippet
 | |
| 
 | |
| snippet pac "Package" b
 | |
| \usepackage`!p snip.rv='[' if t[1] else ""`${1:options}`!p snip.rv = ']' if t[1] else ""`{${2:package}}$0
 | |
| endsnippet
 | |
| 
 | |
| snippet lp "Long parenthesis"
 | |
| \left(${1:${VISUAL:contents}}\right)$0
 | |
| endsnippet
 | |
| 
 | |
| snippet "mint(ed)?( (\S+))?" "Minted code typeset" br
 | |
| \begin{minted}{${1:`!p
 | |
| snip.rv = match.group(3) if match.group(2) is not None else "language"`}}
 | |
| ${2:${VISUAL:code}}
 | |
| \end{minted}$0
 | |
| endsnippet
 | |
| # vim:ft=snippets:
 | 
