Fichiers de base

Généralement je crée un fichier highlight.tex qui va contenir les environnements des différents blocs de code utilisés. Voici par exemple ce que j'utilise pour le XML :

\usepackage{listings}
\usepackage{color}
\usepackage{textcomp}
 
\definecolor{gray}{gray}{0.5} 
\lstnewenvironment{code_xml}[1][]{ 
    \lstset
      { 
        language=XML,
        inputencoding=utf8,
        basicstyle=\ttfamily, 
        showspaces=false,
        showstringspaces=false,
        showtabs=false,
        frame=single,
        morecomment=[s]{<!--}{-->},
        commentstyle=\itshape\color{gray},
        stringstyle=\color{blue},
        keywordstyle=\color{red},
        markfirstintag=true,
        upquote=true
      } 
}{}

Il suffit ensuite d'intégrer ce fichier dans un document LaTeX (report.tex pour moi) en incluant ledit fichier. A Noter qu'il n'est pas nécessaire de mettre l'extension .tex !

\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[pdftex]{graphicx}
\usepackage{float}
\usepackage{color}
 
\include{highlight}
 
\title{Sample Project}
\author{Cédric Tabin}
\date{\today}
 
 
\begin{document}
\maketitle
 
\section{First section}
\begin{code_xml}
<xml version="1.0" encoding="utf-8" ?>
<root>
  <node attribute="value" />
  <node>This is the content</node>
  <!-- This is a comment -->
</root>
\end{code_xml}
 
\end{document}

Compilation

Pour compiler le document, il suffit de taper la commande suivante dans une console :

pdflatex report.tex

Dans le cas ou il y a une table des matière (table of content), il faudra lancer cette commande deux fois pour que la table soit à jour !

Une fois compilé, le pdf ressemble à ceci : LaTeX Simple Document

Eviter les sauts de pages au milieu du code

Il arrive des fois que le code soit en bas de page et qu'une partie continue sur la page suivante. Pour éviter cela, il faut encapsuler le code dans une minipage :

\noindent\begin{minipage}{\textwidth}
\begin{code_xml}
<xml version="1.0" encoding="utf-8" ?>
<root>
  <node attribute="value" />
  <node>This is the content</node>
  <!-- This is a comment -->
</root>
\end{code_xml}
\end{minipage}

Highlighter une séquence de caractères

Tout dernièrement j'ai voulu mettre en évidence une chaîne de caractère, sans espace ni délimiteur. Pour arriver à faire cela, il faut jouer avec les paramètres du package listing. Voici ce que j'ai ajouté dans les fichiers highlight.tex et report.tex :

\lstnewenvironment{code_res}[1][]{ 
    \lstset{ 
        language=java, 
        basicstyle=\ttfamily\small, 
        otherkeywords={A, B, C, D, E},
        keywords=[1]{A},
        keywordstyle=[1]\color{blue}, 
        keywords=[2]{B},
        keywordstyle=[2]\color{red}, 
        keywords=[3]{C},
        keywordstyle=[3]\color{green},
        keywords=[4]{D},
        keywordstyle=[4]\color{yellow},
        keywords=[5]{E},
        keywordstyle=[5]\color{black},
        showstringspaces=false, 
        upquote=true, 
        frame=single
    }
}{}
\noindent\begin{minipage}{\textwidth}
\begin{code_res}
AAABBBCCCAABDDCCCEEBBACCBBBBDDEE
\end{code_res}
\end{minipage}

LaTex Simple Document (block highlight)

Inclure plusieurs images horizontalement

Il est très facile d'intégrer une image en LaTeX. Par contre, il faut bidouiller un peu lorsqu'on veut afficher des images horizontalement :

\begin{figure}[H]
    \centering
    \hspace*{-1in}
    \begin{tabular}{cc}
    \includegraphics[scale=0.35]{picture1.png} &
    \includegraphics[scale=0.35]{picture2.png} \\
    \end{tabular}
    \caption{Picture}
\end{figure}

Ci-dessus, la commande \hspace permet de corriger l'alignement horizontal et le paramètre scale d'ajuster la taille de l'image. LaTeX Simple Document (double picture)

J'ai mis les sources ainsi qu'un Makefile en annexe de ce billet ! Tous vos commentaires sont les bienvenus :-)