Skip to content

gsobell/ready-set-vimtex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ready-set-vimtex

bootstrap vimtex + ultisnips, with (mostly) sane defaults

But First!

Read Elijan Mastnak's series, and Gilles Castel’s original article.

This is for those who want a starting point that "just works" (and also for those who look over my shoulder and ask "what's that!?")

For the Impatient

First, make sure you have $\LaTeX$ properly installed:

For Arch Linux and its derivatives ( Arch $\frac{dy}{dx}$):

pacman -S texlive-basic texlive-bin texlive-fontsrecommended texlive-mathscience texlive-binextra --needed

Now, the vim plugins. Note that vimtex and delimitmate are in the AUR. You can alternatively use a vim plugin manager, but I don't bother.

yay -S vim-vimtex vim-ultisnips vim-delimitmate

Last, but not least, place the config files in ~/.vim. Here's a handy script to expedite that, and backup your current vimrc:

sh <(curl -s https://raw.githubusercontent.com/gsobell/ready-set-vimtex/main/setup.sh)

Good job! All done! That was quick, right?

Exciting Features!

Generate matrices with ease! pmat3x3 with just a tab becomes:

\begin{pmatrix}
         &  &  \\
         &  &  \\
         &  &  \\
\end{pmatrix}

With tab stops (just like typing a matrix on Wolfram Alpha)!

Idiosyncrasies

Sometimes you just want to write the letters that trigger a snippet, and you end up fighting the auto complete.

Table of Snippets

Note that not all of these may render correctly, since the Github latex rendering doesn't include the amsmath package.

LaTex Structure

Trigger Name LaTeX Flags Context
beg begin{} / end{} \begin{ } \end{ } bA None
\beg begin{} / end{} \begin{ } \end{ } bA None
enum enumerate \begin{enumerate}\item \end{enumerate} bA None
item itemize \begin{itemize}\item \end{itemize} bA None
sec section \section{ } bA None
ssec subsection \subsection{ } bA None
sssec subsubsection \subsubsection{ } bA None
foot footnote \footnote{ } None None
theorem theorem \begin{theorem}[ ] \end{theorem} bA None
pf proof \begin{proof}[ ] \end{proof} bA None
def definition \begin{definition}[ ] \end{definition} bA None
claim claim \begin{claim} \end{claim} bA None
marg margin note \marginpar{ } None None
mm Math $${1}$!pif t[2] and t[2][0] not in [',', '.', '?', '-', ' ']:snip.rv = ' 'else:snip.rv = '' wA None
dm Math [${1:${VISUAL}}] wA None
ali Align \begin{align*}${1:${VISUAL}}\end{align*} bA None

Logic and Operators

Trigger Name LaTeX Flags Context
ff fraction $$\frac{ }{ } $$ Ai "math()"
ceil ceil $$\left\lceil \right\rceil $$ iA "math()"
floor floor $$\left\lfloor \right\rfloor $$ iA "math()"
le <= $$\leqslant$$ A "math()"
ge >= $$\geqslant$$ A "math()"
ne != $$\neq$$ A "math()"
ee βˆƒ $$\exists$$ iiA "math()"
aa βˆ€ $$\forall$$ iA "math()"
in ∈ $$\in$$ A "math()"
nin βˆ‰ $$\notin$$ A "math()"
xx cross $$\times$$ A "math()"
cd cdot \cdot A None
qq spaceing $$\qquad$$ A "math()"
to -> $$\to$$ A "math()"
imp => $$\implies$$ A "math()"
xr => $$\xrightarrow{ } $$ A "math()"
iff iff $$\iff$$ Ai "math()"
f0 f(x_0) $$f(x_0) $$ iA "math()"
fx f(x) $$f(x) $$ iA "math()"
f'x f(x) $$f'(x) $$ iA "math()"
ab (a,b) $$a, b$$ iA "math()"
... ... $$\ldots$$ A "math()"
inf ∞ $$\infty$$ Ai "math()"
x0 x_0 $$x_{0}$$ Ai "math()"
nn ∩ $$\cap$$ A "math()"
uu βˆͺ $$\cup$$ A "math()"
cc βŠ† $$\subseteq$$ A "math()"
st such that $$\text{ such that }$$ A "math()"
st such that such that None None

Math Typesetting

Trigger Name LaTeX Flags Context
N Naturals $$\mathbb{N}$$ A "math()"
Z Integers $$\mathbb{Z}$$ A "math()"
Q Rationals $$\mathbb{Q}$$ A "math()"
R Reals $$\mathbb{R}$$ A "math()"
C Complex $$\mathbb{C}$$ None "math()"
F Field $$\mathbb{F}$$ None "math()"
bb blackboard bold $$\mathbb{ }$$ i "math()"
bb blackboard bold $\mathbb{ }$ i None
tt text, AMS $$\text{ } $$ A "math()"
lr( left( right) \left( ${1:${VISUAL}} \right) i None
lr left right
lr{ left{ right} \left\{ ${1:${VISUAL}} \right\} i None
lr[ left[ right] \left[ ${1:${VISUAL}} \right] i None
{{ { } $${ } $$ iA "math()"
ub underbrace $$\underbrace{ }_{ }$$ A "math()"
sum sum $$\sum_{k=${1:1}}^{${2:\infty}} ${3:a_k}$$ w "math()"
\int integral $$\int_{${1:a}}^{${2:b}} ${3:f(x)}, dx$$ w "math()"
taylor taylor \sum_{${1:k}=${2:0}}^{${3:\infty}} ${4:c_ } (x-a)^ w None
lim limit \lim_{${1:n} \to ${2:\infty}} w None
sr ^2 $$^2$$ iA "math()"
cb ^3 $$^3$$ iA "math()"
__ subscript _{ } iA None
^^ superscript ^{ } iA None
rt n-root $$\sqrt[${1:2}]{ }$$ iA "math()"
log log $$\log$$ A "math()"
cos cos $$\cos$$ A "math()"
sin sin $$\sin$$ A "math()"
cvec column vector \begin{pmatrix} ${1:x}_${2:1}\\\\ \vdots\\\\ _${2:n} \end{pmatrix} iA None
"(small [bBpvV])?mat(rix)?(\d+)x(\d+)" (small [bBpvV])?mat(rix)?(\d+)x(\d+)
plot Plot \begin{figure}[ ]\centering\begin{tikzpicture}\begin{axis}[xmin= ${2:-10}, xmax= ${3:10},ymin= ${4:-10}, ymax = ${5:10},axis lines = middle,]\addplot[domain= : , samples=${6:100}]{ };\end{axis}\end{tikzpicture}\caption{ }\label{${9: }}\end{figure} w None
'(?<!\)(arcsin arccos arctan arccot arccsc
'(?<!\)(sin cos tan cot csc

Greek

Trigger Name LaTeX Flags Context
la Ξ» $$\lambda$$ A "math()"
phi Ο† $$\varphi$$ None "math()"
be Ξ² $$\beta$$ None "math()"
ep Ξ΅ $$\varepsilon$$ A "math()"
de Ξ΄ $$\delta$$ A "math()"
om Ο‰ $$\omega$$ None "math()"
pi Ο€ $$\pi$$ None "math()"
al Ξ± $$\alpha$$ None "math()"

Cooked up with parsnip.py, a tool for parsing snippets into markdown tables.