lundi 03.05.2010, 18:40
Astuces LaTeX
Par Cédric Tabin - Général - Lien permanent
Depuis que je dois rendre des rapports académiques, je me suis mis à faire du LaTeX. Et comme ceux-ci contiennent souvent du code, j'utilise le package listings pour le highlighting ! Voici donc quelques trucs et astuces utiles pour avoir un joli rendu.
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 :

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}

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.

J'ai mis les sources ainsi qu'un Makefile en annexe de ce billet ! Tous vos commentaires sont les bienvenus 
2 commentaires
Superbe, je me réjouis d'utiliser ces trucs et astuces dans mes prochains rapports Latex.
Excellent ! C'est parfait toutes ces combines, vu que j'aurai besoin d'écrire mon rapport de Master en LaTeX