\usepackage{listings}
Le paquet listings est la méthode standard pour composer du code source en LaTeX. Il offre la coloration syntaxique pour plus de 80 langages, la numérotation des lignes, des cadres personnalisés, des couleurs d'arrière-plan et des styles nommés, sans quitter votre document.
L'exemple ci-dessous montre une configuration minimale mais complète : chargez le paquet, configurez-le globalement avec \lstset{…}, puis placez le code dans un environnement lstlisting avec un langage et une légende.
\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
% Global listings configuration
\lstset{
basicstyle=\ttfamily\small,
keywordstyle=\color{blue}\bfseries,
commentstyle=\color{gray}\itshape,
stringstyle=\color{orange},
breaklines=true,
showstringspaces=false,
frame=single,
rulecolor=\color{black!20},
tabsize=2,
}
\begin{document}
\begin{lstlisting}[language=Python, caption={Hello World in Python}]
def greet(name: str) -> None:
# Print a personalised greeting
message = f"Hello, {name}!"
print(message)
greet("World")
\end{lstlisting}
\end{document}Add \usepackage{listings} and optionally \usepackage{xcolor} to your preamble. Wrap code in a \begin{lstlisting}…\end{lstlisting} environment.
Spécifiez le langage avec l'option language= : Python, C++, Java, Bash, SQL, HTML et plus de 80 autres sont intégrés et appliquent automatiquement la coloration des mots-clés.
Use caption={…} to add a numbered caption below the listing, and label={lst:name} for cross-references with \ref{lst:name} anywhere in your document.
\lstset{} applies settings globally to all listings. Place it in your preamble after \usepackage{listings} to avoid repeating options on every environment.
Définissez un style nommé avec \lstdefinestyle{name}{…} et activez-le globalement avec \lstset{style=name}. L'exemple ci-dessous crée des couleurs personnalisées pour l'arrière-plan, les commentaires, les mots-clés et les chaînes, puis les illustre avec une implémentation de recherche dichotomique en C++.
L'option frame=tb trace un filet horizontal au-dessus et en dessous du listing, tandis que numbers=left ajoute des numéros de ligne dans la marge de gauche.
\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
% Custom colour definitions
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}
\lstdefinestyle{mystyle}{
backgroundcolor=\color{backcolour},
commentstyle=\color{codegreen},
keywordstyle=\color{magenta}\bfseries,
numberstyle=\tiny\color{codegray},
stringstyle=\color{codepurple},
basicstyle=\ttfamily\footnotesize,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=left,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
tabsize=2,
frame=tb,
}
\lstset{style=mystyle}
\begin{document}
\begin{lstlisting}[language=C++, caption={Binary search}, label={lst:binsearch}]
#include <iostream>
using namespace std;
int binarySearch(int arr[], int n, int target) {
int left = 0, right = n - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == target) return mid;
else if (arr[mid] < target) left = mid + 1;
else right = mid - 1;
}
return -1; // not found
}
\end{lstlisting}
\end{document}Use backgroundcolor=\color{name} inside \lstdefinestyle{} to apply a tinted background. Define custom colours first with \definecolor{name}{rgb}{r,g,b}.
Enable with numbers=left (or right). Control the font size and colour with numberstyle=\tiny\color{gray} and adjust the gutter width via numbersep=5pt.
L'option frame= trace des bordures : single (cadre complet), tb (filets en haut et en bas uniquement), lines (lignes en haut et en bas) ou none. Combinez avec rulecolor= pour des filets stylisés.
listings est livré avec des jeux de mots-clés intégrés pour plus de 80 langages de programmation et de balisage. Spécifiez-en un avec language= sur l'environnement ou globalement dans \lstset{}.
Votre langage n'est pas listé ? Définissez le vôtre avec \lstdefinelanguage : voir la section ci-dessous.
Lorsque votre langage n'est pas intégré, utilisez \lstdefinelanguage{name}{…} pour déclarer les mots-clés, la syntaxe des commentaires et les délimiteurs de chaînes. Placez-la dans votre préambule avant la première utilisation.
\lstdefinelanguage{MyLang}{
keywords={let, const, fn, return, if, else},
keywordstyle=\color{blue}\bfseries,
sensitive=true,
comment=[l]{//},
commentstyle=\color{gray}\itshape,
string=[b]",
stringstyle=\color{orange},
}
\begin{lstlisting}[language=MyLang]
fn add(a: Int, b: Int) -> Int {
return a + b // sum of two integers
}
\end{lstlisting}Les deux paquets composent du code, mais avec des approches très différentes. Choisissez selon votre environnement de compilation et vos besoins de coloration.
Ouvrez l'exemple de listings stylisé, avec couleurs personnalisées, numéros de ligne et une recherche dichotomique en C++, directement dans le playground FormaTeX. Modifiez et compilez en PDF en quelques secondes, sans installation.
Yes. The listings package ships with every major LaTeX distribution (TeX Live, MiKTeX, MacTeX). You do not need to install anything extra — just add \usepackage{listings} to your preamble.
Pass numbers=left or numbers=right to \lstset{} or directly on the environment as an option. Control the style with numberstyle=\tiny\color{gray} and the gap width with numbersep=5pt.
Not directly — listings processes its content as plain ASCII by default. For accented characters (é, ü, etc.) add inputencoding=utf8 and define each character with \lstset{literate={é}{{\'{e}}}1 ...}. For full Unicode support, consider the minted package with LuaLaTeX.
L'environnement verbatim reproduit le texte caractère par caractère sans aucune mise en forme. listings s'appuie sur ce socle et ajoute la coloration syntaxique, les numéros de ligne, les légendes, les cadres, les références croisées et la détection de mots-clés propre à chaque langage, ce qui le rend bien plus adapté à la composition de véritable code source.
\end{document}
Utilisez l'API FormaTeX ou le playground pour compiler des documents avec le paquet listings. Aucune installation TeX locale n'est nécessaire : envoyez votre source et récupérez un PDF.