Highlighting Source Code
Highlighting source code is easy in LaTeX. There are a number of addon packages available for highlighting source code in LaTeX. We will be looking at some of them
Verbatim
This is the most basic thing one use for listing source code. It is as simple as putting source code in between
\begin{verbatim}
--------------
\end{verbatim}
We don't even need to use any package at all. Here is a sample code and output
\documentclass[]{article}
\begin{document}
This is an example of a C code with $verbatim$ \\
\begin{verbatim}
#include <stdio.h>
int main()
{
printf("Hello world!\n");
return 0;
}
\end{verbatim}
\end{document}
Listings
Listings is the next simple step for a LaTeX user. Listings comes with allmost all LaTeX distrbutions. So you can use it straight away.
\documentclass[]{article}
\usepackage{listings}
\begin{document}
This is an example of a C code with $listings$ package
\lstset{language=C}
\begin{lstlisting}
#include <stdio.h>
int main()
{
printf("Hello world!\n");
return 0;
}
\end{lstlisting}
\end{document}
Minted
Users who want more sophisticated output will go for minted package. Though using minted is easy, its installation is not that easy. Minted depends on pygment, which is a python based generic syntax highlighter. Sample usage and output is:
\documentclass[]{article}
\usepackage{minted}
\begin{document}
This is an example of a C code with $mented$ \\
\begin{minted}{c}
#include <stdio.h>
int main()
{
printf("Hello world!\n");
return 0;
}
\end{minted}
\end{document}
When minted is in use its safe to invoke LaTeX from commandline rather than from IDE since LaTeX is invoked with a special option. (--shell-escape )
# pdflatex --shell-escape test.tex
Installation
We need pygments to run the minted package for Latex. To get pygments, the best way is to use easy_install. For that go to this link to download it.
Now install it with
# sh setuptools-0.6c11-py2.6.egg
This will install easy_install
Then use easy_install to install pygments
# easy_install pygments
Now download minted from here
When I compiled document using minted, it said it needs the following sty files. Download them and put in the source folder itself
ifplatform.sty
pdftexcmds.sty
infwarerr.sty
ifluatex.sty
ltxcmds.sty
catchfile.sty
etexcmds.sty
After that another error popped up though I have pygment installed: Package minted Error: You must have `pygmentize' installed to use this package
Its because it cant find the package location effectively ( the option to which shell command is not given properly). For that change
\immediate\write18{which -s #1 && touch \jobname.aex}
in minted.sty to
\immediate\write18{which #1 && touch \jobname.aex}
Now done!!!!!!!!!!
Everything is ok. Use minted in LaTeX file and compile with the --shell-escape option. Another thing to note that all the sty files are in proper place. I usually put them in the same folder as my .tex file folder itself as an easy method.