Syntax highlighting of code within a LaTeX document in Vim
TweetAbstract
I describe the steps necessary to enable syntax highlighting of code snippets within a LaTeX document when editing in Vim. As an example, I show how to enable syntax highlighting for Chapel code. This is useful for developing Chapel code with the seamless framework.
Why enable syntax highlighting of code snippets within a LaTeX document in Vim?
If you are using Vim to edit a LaTeX document that contains code snippets,
then you will find it useful
to turn on syntax highlighting of both the LaTeX code and the other code.
For example, if you are developing Chapel code with the
seamless framework, then you will
have Chapel source code and test code inside ‘chapel’ environments within your
seamless LaTeX document. These ‘chapel’ environments will occur within ‘chapelexample’, ‘chapelsource’,
and ‘chapelhelper’ environments and are delimited by an opening \begin{chapel}
tag and a
closing \end{chapel}
tag. The following steps will make it so that everything inside
those tags in your LaTeX documents will be highlighted with the rules defined in your
Vim install for files with a ‘chpl’ extension.
The steps
-
Enable syntax highlighting of the non-LaTeX code in Vim using the appropriate plugin. For example, a plugin for syntax highlighting of Chapel source can be found in the
etc/vim
directory of the Chapel source. Syntax highlighting of other common languages (e.g. C++) is enabled by simply puttingsyntax on
in your~/.vimrc
file. -
Install the ingo-library plugin for Vim
-
Install the SyntaxRange plugin for Vim
-
Put the following code in
~/.vim/after/syntax/tex/Syntax.Include.vim
:
call SyntaxRange#Include('\\begin{lang-env}', '\\end{lang-env}', 'lang-ext')
Where lang-env
is the argument that you will use for the \begin
and \end
LaTeX keywords to
specify that you are including your non-LaTeX code. For example, for Chapel code, the line in
~/.vim/after/syntax/tex/Syntax.Include.vim
would be:
call SyntaxRange#Include('\\begin{chapel}', '\\end{chapel}', 'chpl')
To properly format the code snippet in the output of your LaTeX document, you will need to include
the ‘listings’ package in your LaTeX document with \usepackage{listings}
and define the language syntax
by inputting the appropriate ‘language_listing.tex’ file (e.g. \input{chapel-listing.tex}
). Download an
example listings file for Chapel: chapel-listing.tex.