Vim + LaTeX and YOU!

Author’s note: I think I can make this one short.

Let’s start with a preview sure to make a reader envious with desire to to actually read forward.

Notice how we’re still in insert mode and that this file hasn’t been saved yet. For some, this is all they want, the ability to have a live preview rendering of their drawing. To receive that WYSIWYG culture intersected with the WYSIWYM dogma which is life. That’s what  the kids want these days. I didn’t write this, it’s simply yet another plug-in for vim. What I will go over, is how this tool in combination with a few little hacks helps to streamline report making.

Okay, the secret sauce is in the makefile.

TARGET=filename                                                                  
PDFVIEWER=evince                                                                

all: $(TARGET).pdf                                                              

## Generalized rule: how to build a .pdf from each .tex                         
LATEXPDFS=$(patsubst %.tex,%.pdf,$(wildcard *.tex))                             
$(LATEXPDFS): %.pdf: %.tex                                                      
     pdflatex -interaction nonstopmode $(patsubst %.pdf,%.tex,$@)                

# removes intermediate files                                                    
clean:                                                                          
     rm *.aux *.log || true                                                      

# removes intermediate files AND the .pdf you made                             
veryclean: clean                                                                
     rm $(TARGET).pdf                                                            

# compiles file and uses evince to view document, or use your favorite viewer!  
view: $(TARGET).pdf                                                             
      $(PDFVIEWER) $(TARGET).pdf                                                  

# in case you're working in a sub-folder and need to send elsewhere             
submit: $(TARGET).pdf                                                           
    cp $(TARGET).pdf ../                                                        
                                                                                 
# lpr will use default printer and default printer settings                     
print: $(TARGET).pdf                                                            
     lpr $(TARGET).pdf                                                           

 .PHONY: all clean veryclean view print

For yourself, the “filename” variable should be changed to your filename without the extension. So if your filename is “myFinalReport002.tex” the first line should read “TARGET=myFinalReport002”. PDFVIEWER should be set to whichever pdfviewer you prefer on your machine. Evince is the one used here.

mkdir a  folder for your latex report. In this folder, you’ll want both this makefile and the myFinalReport002.tex that you’re working on. The sample *.tex file in the screen shot above is simply this

% This is a sample input file
% & $ # % _ { } ^ ~ \ are all special characters

\documentclass{article}
\begin{document}

\section{Simple Text}

Words are separated by one or more spaces.  Paragraphs are separated by
one or more blank lines.  The output is not affected by adding extra
spaces or extra blank lines to the input file.

Double quotes are typed like this: ``quoted text''.
Single quotes are typed like this: `single-quoted text'.

Long dashes are typed as three dash characters---like this.

Emphasized text is typed like this: \emph{this is emphasized}.

Bold       text is typed like this: \textbf{this is bold}

\subsection{A warning or Two}
If you get more space after a mid-sentence period---abbreviations
like etc.\ are common culprits---then type a backslash followed by
a space after the period, as in this sentence.

Remember, don't type the 10 special characters (such as dollar sign and
backslash) except as directed!  The following seven are printed by
typing a backslash in front of them: \$ \& \# \% \_ \{ \}.
The manual tells how to make other symbols.

Greetings people who read my blog! o/

\end{document}

With these two files in your working directory you can simply call make, make clean, make veryclean, make submit, make view, and finally makelpr (for when you want to print and are on the go). A person can pretty much put whatever commands they want to inside the makefile, but here’s something neat about using vim with the makefile.

:make view

Just as you normally would :w or :wq,  vim has an inbuilt function where it runs commands inside of a makefile that’s in the same directory. There’s no need to open up a 2nd terminal screen or to exit vim to check you work (or submit the report). If typing in :make view is too much for you, you can always remap the commands in your .vimrc like so

155 " LaTeX fun - in lou of :make view                                              
156 command MV w | make view                                                                                                                                                                    
157                                                                                 
158 " LivePreview                                                                   
159 let LLPSTartPreview = "VLP"

If typing :mv becomes too much for you, and constantly checking and rechecking your work puts a strain on your body, mind, and soul; then there’s a way to make this viewing thing a bit more automated. Aforementioned, there’s a plugin.

cd into your ~/.vim/bundle and simply

git clone https://github.com/xuhdev/vim-latex-live-preview

To begin, all you need to do is invoke :LLPSTartPreview in your vim terminal, but adjust that .vimrc for a more pleasant experience. The READ.md instructions for this plugin does not explicitly mention pathogen(), but /bundle is the defacto /plugin folder. These quick instructions should get most people started, but for this plugin to work you’ll need to make sure that your vim has been compiled with a specific configuration, e.g. python. Most vim installs on a new system are meant to be light weight, and quick to load. If you’re having issues while compiling your own heavy duty vim installation you might find this post helpful.