Overblog Suivre ce blog
Administration Créer mon blog

Latex citer du code source

14 Novembre 2008 , Rédigé par Roger Bunivot Publié dans #Latex

Il peut arriver que l'on ait besoin de citer une portion de code dans un document. Maintenant tout éditeurs de codes qui se respecte disposent de la coloration syntaxique. C'est à dire que les mots clés, les commentaires, etc... apparaissent en couleur ce qui facilite grandement la lecture du code.

Latex permet de citer  du code source en attribuant une coloration syntaxique:
pour cela j'ai utilisé le package listings

\usepackage{listings}

Je l'utilise certainement comme un bourrin, c'est a dire qu'avant chaque citation de code je redéfini les paramètres de citation notamment le type de source (bash C, C++,-une liste plus complète est donnée page 12 de la doc.) avec la commande:

\lstset{option1,
option2,
...,
}

puis comme je cite un fichier source:

\lstinputlisting[option]
{/chemin_du_fichier_a_citer}

pour voir le type d'option voir l'exemple suivant et la doc.

voila un example d'utilisation:

\lstset{
% inputencoding=utf8,
basicstyle=\small,
language=bash,
classoffset=0,
morekeywords={foreach,rm,cp,end},
% alsoother={ chr(32),++},
keywordstyle=\color{colKeys},
classoffset=1,
morekeywords={autoFit.tcl,autoFit.com},
alsodigit={.},
keywordstyle=\color{red},
% classoffset=2,
% morekeywords={direc,\$direc},
% keywordstyle=\color{colVars},
classoffset=0,
identifierstyle=\color{colIdentifier},
stringstyle=\ttfamily\color{colString},
% stringstyle=\color{colString},
commentstyle=\color{colComments},
commentstyle=\small\itshape,
firstnumber=12,
stepnumber=2,
numberstyle=\tiny,
showstringspaces=false,
backgroundcolor=\color{gris5},
linewidth=6.8cm,
breaklines=true,
numbers=left,
extendedchars=false,
resetmargins= true,
xrightmargin=0cm,
xleftmargin=-0.5cm,
}
\lstinputlisting[firstline=12, lastline=20, name=dosy3]
{/donnees/these/latex/Brouillon/source/doesy3.com}


morekeywords permet d'ajouter des mots clés.
Si on veut en ajouter avec différentes couleurs il faut définir la classoffset.
Par example ici foreach a la couleur colKeys et autoFit.com est en rouge.

Si le mot clé contient des caractères étranges comme le "."
il faut spécifier que le point doit être considéré comme un digit
la liste des caractères étranges est donné page 42 de la doc.

morekeywords={autoFit.tcl,autoFit.com},
alsodigit={.},


Petit (ou gros problème) il semble que le package ne soit pas réellement compatible avec babel
Donc pour que tout marche bien j'ai supprimé tous les accents de mes fichiers sources.

Les couleurs sont définis avec le package
\usepackage{color}
\definecolor{gris5}{gray}{0.95}
definecolor{colKeys}{rgb}{0,0,1}
definecolor{colKeys}{RGB}{0,0,255}


Les deux dernières lignes définissent la même couleur (bleu) avec  rgb = RGB/255 (je veux dire divisé par 255)
pour trouver les codes couleurs on peut utliser Gimp en cliquant sur la palette, ce qui  permet d'obtenir le code couleur RGB, html etc...


Lire la suite