Utilisation simple de l`extension listings

Transcription

Utilisation simple de l`extension listings
Utilisation simple de l’extension listings
Jacques Madelaine
[email protected]
16 novembre 2004
1
Introduction
L’extension listings permet des rendus agréables de codes sources. Il faut
dans le préambule ajouter :
\ usepackage { l i s t i n g s }
Il suffira pour faire un listing d’utiliser l’environnement lstlisting en précisant
en option le langage avec language=xxx. On peut mettre comme langage : Java,
HTML, XML 1 ksh 2 , C++ et TeX, entre autres.
On pourra ajouter dans les options entre crochets :
frame=single pour avoir un cadre,
frame=trBL pour un joli cadre,
style=nombres pour numéroter les lignes, si on a défini dans le préambule le
style nombres avec :
\ l s t d e f i n e s t y l e { nombres }{ numbers=l e f t , stepnumber =10 ,
n u m b e r s t y l e=\t i n y , numbersep=10pt }
... On peut toujours consulter la doc file:/usr/share/doc/texmf/latex/
listings/listings.dvi.gz que l’on peut visualiser en tapant simplement dans un shell : texdoc listings
2
Exemple simple pour du HTML
Le rendu suivant est obtenu en encadrant le code html avec :
\begin{lstlisting}[language=HTML]
et \end{lstlisting}
<html>
<head>
<t i t l e >Exemple 1</ t i t l e >
</head>
<body>
<?php p r i n t ” Bonjour , oh monde ! ” ; ? >
</body>
</html>
1 Le
style pour XML est bien décevant dans la mise en œuvre actuelle.
le korn-shell, fonctionne très bien pour bash.
2 Pour
1
3
Exemple avec du shell
Le rendu suivant est obtenu en encadrant le code shell avec :
\begin{lstlisting}[language=ksh]
et \end{lstlisting}
#! / b i n / sh
# ce programme s i m u l e un dé f r a g m e n t e u r windows s o u s Unix ; −)
echo ”Début de dé f r a g m e n t a t i o n ”
y e s | head − 1 0 | while read ; do
y e s | head − 6 0 | while read ; do
echo −ne ’ / ’ ; s l e e p 1 ; echo −ne ’ \b− ’ ; s l e e p 1 ;
echo −ne ’ \b\\ ’ ; s l e e p 1 ; echo −ne ’ \b | ’ ; s l e e p 1 ;
echo −ne ’ \b+ ’ ;
done
echo
done
echo ” F é l i c i t a t i o n s , vous pouvez c o n t i n u e r à t r a v a i l l e r ”
4
Avec des cadres
On a précisé ici les options : [language=PHP,frame=trBL] :
<html>
<head>
< t i t l e >Exemple 1</ t i t l e >
</head>
<body>
<?php print ” Bonjour , oh monde ! ” ; ? >
</body>
</html>
5
Attention aux lignes trop longues
Les lignes ne sont pas repliées. On peut néanmoins choisir une taille de police
plus petite...
<html>
<head>
< t i t l e >Exemple 1</ t i t l e >
</head>
<body>
<?php print ” Bonjour , oh m e r v e i l l e u x monde p l e i n de l i g n e s beaucoup t r o p l o n
</body>
</html>
2
6
Avec des numéros aux lignes
On ajoute l’option [numbers=left,stepnumber=2,numberstyle=\tiny,numbersep=10pt]
pour numéroter les lignes en petit de 2 en 2 :
2
4
6
8
<html>
<head>
< t i t l e >Exemple 1</ t i t l e >
</head>
<body>
<?php print ” Bonjour , oh monde ! ” ; ? >
</body>
</html>
On peut mettre simplement l’option [ style =nombres] si on a défini au
préalable le style :
\ l s t d e f i n e s t y l e { nombres }{ numbers=l e f t , stepnumber =10 ,
n u m b e r s t y l e=\t i n y , numbersep=10pt }
7
PHP
L’extension listings ne connaı̂t pas de base le language PHP. Pour lui
apprendre on ajoute simplement :
\ l s t d e f i n e l a n g u a g e {PHP}{
morekeywords={and , array , break , c a s e , c o n t i n u e , d e f a u l t , do ,
echo , e l s e , e l s e i f , e x i t , extends , f o r , g l o b a l , i f , i n c l u d e ,
i n c l u d e once , or , p r i n t , r e q u i r e , r e q u i r e once , r e t u r n ,
s t a t i c , s w i t c h , then , var , w h i l e , xor , f o r e a c h , as , c l a s s ,
f u n c t i o n , new , e x t e n d s } ,
s e n s i t i v e ,%
morecomment=[ l ]\# ,%
morecomment=[ l ] / / ,%
morecomment=[ s ] { / ∗ } { ∗ / } ,%
m o r e s t r i n g =[b ] ” ,%
m o r e s t r i n g =[b ] ’%
} [ keywords , comments , s t r i n g s ]
L’exemple suivant est obtenu avec les options [language=PHP]
<html>
<head>
< t i t l e >F a c t o r i e l </ t i t l e >
</head>
<body b g c o l o r=”#FAF0E6”>
<h1 a l i g n=” c e n t e r ”>F a c t o r i e l </h1>
<?php
// D e f i n i t i o n o f t h e f a c t o r i e l f u n c t i o n
function f a c t ( $n ) {
i f ( $n == 0)
3
return 1 ;
return $n ∗ f a c t ( $n − 1 ) ;
}
// Parameter c o n t r o l
i f ( $ GET [ ’N ’ ] == ”” | | $ GET [ ’N ’ ] > 1 0 0 0 0 )
$n = 5 ;
else
$n = $ GET [ ’N ’ ] ;
// The r e s u l t
print ” f a c t o r i e l $n = ” . f a c t ( $n ) ;
?>
</body>
</html>
8
Du LATEX dans les commentaires
Il faut ajouter texcl dans les options. Du coup on peut mettre du LATEX
dans les commentaires qui sera interprété comme tel !
\begin{lstlisting}[language=PHP,texcl]
<?php // un super commentaire gr^
ace à \LaTeX
// on calcule ici $6 \times \sqrt{\sum_{k=1}^n \frac{1}{k^2}}$
// et on va vers $\Pi$ car $\lim_{n \to \infty} \sum_{k=1}^n \frac{1}{k^2} = \frac{\pi^2
function versPi($n) {
$sum = 0;
for($k = 1; $k < $n; $k++)
$sum += 1/($k*$k)
return sqrt(6*$sum);
}
print versPi($_GET["n"]);
?>
\end{lstlisting}
<?php // un super commentaire grâce à LATEX
qP
n
1
// on calcule ici 6 ×
k=1 k2
Pn
2
// et on va vers Π car limn→∞ k=1 k12 = π6
function v e r s P i ( $n ) {
$sum = 0 ;
for ( $k = 1 ; $k < $n ; $k++)
$sum += 1/( $k ∗ $k )
return sqrt ( 6 ∗ $sum ) ;
}
print v e r s P i ($ GET [ ”n” ] ) ;
?>
4
9
Résumé
Voici ce qui a été utilisé en préambule de ce document en ce qui concerne
l’extension listings :
\ usepackage { l i s t i n g s }
\ l s t s e t { e x t e n d e d c h a r s=t r u e }
\ l s t d e f i n e l a n g u a g e {PHP}{
morekeywords={and , array , break , c a s e , c o n t i n u e , d e f a u l t , do ,
echo , e l s e , e l s e i f , e x i t , extends , f o r , g l o b a l , i f , i n c l u d e ,
i n c l u d e once , or , p r i n t , r e q u i r e , r e q u i r e once , r e t u r n ,
s t a t i c , s w i t c h , then , var , w h i l e , xor , f o r e a c h , as , c l a s s ,
f u n c t i o n , new , e x t e n d s } ,
s e n s i t i v e ,%
morecomment=[ l ]\# ,%
morecomment=[ l ] / / ,%
morecomment=[ s ] { / ∗ } { ∗ / } ,%
m o r e s t r i n g =[b ] ” ,%
m o r e s t r i n g =[b ] ’%
} [ keywords , comments , s t r i n g s ]
\ l s t d e f i n e s t y l e { nombres }{ numbers=l e f t , stepnumber =10 ,
n u m b e r s t y l e=\t i n y , numbersep=10pt }
5

Documents pareils