Comment insérer du code dans un document LaTeX? Y a-t-il quelque chose comme:
\begin{code}## Heading ##
...
\end{code}
La seule chose dont j'ai vraiment besoin est l'indentation et une police à largeur fixe. La mise en évidence de la syntaxe pourrait être agréable, bien que ce ne soit absolument pas nécessaire.
Utilisez listings
package.
Configuration simple pour l'en-tête LaTeX (avant \begin{document}
):
\usepackage{listings}
\usepackage{color}
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}
\lstset{frame=tb,
language=Java,
aboveskip=3mm,
belowskip=3mm,
showstringspaces=false,
columns=flexible,
basicstyle={\small\ttfamily},
numbers=none,
numberstyle=\tiny\color{gray},
keywordstyle=\color{blue},
commentstyle=\color{dkgreen},
stringstyle=\color{mauve},
breaklines=true,
breakatwhitespace=true,
tabsize=3
}
Vous pouvez changer la langue par défaut au milieu du document avec \lstset{language=Java}
.
Exemple d'utilisation dans le document:
\begin{lstlisting}
// Hello.Java
import javax.swing.JApplet;
import Java.awt.Graphics;
public class Hello extends JApplet {
public void paintComponent(Graphics g) {
g.drawString("Hello, world!", 65, 95);
}
}
\end{lstlisting}
Voici le résultat:
Vous pouvez également utiliser l'environnement verbatim
\begin{verbatim}
your
code
example
\end{verbatim}
Voici comment ajouter du code en ligne:
Vous pouvez ajouter du code en ligne avec {\tt code }
ou \texttt{ code }
. Si vous voulez formater le code en ligne, alors il serait préférable de faire votre propre commande
\newcommand{\code}[1]{\texttt{#1}}
Notez également que les blocs de code peuvent être chargés à partir d'autres fichiers avec
\lstinputlisting[breaklines]{source.c}
breaklines
n'est pas obligatoire, mais je le trouve utile. Sachez que vous devrez spécifier \usepackage{
listes}
pour celui-ci.
Mise à jour: Le paquet listing contient également la commande \lstinline
, qui présente les mêmes caractéristiques de mise en évidence de la syntaxe que \lstlisting
et \lstinputlisting
commandes (voir la réponse de Cloudanger pour les détails de configuration). Comme mentionné dans quelques autres réponses, il y a aussi le paquet fabriqué, qui fournit la commande \mintinline
. Comme \lstinline
, \mintinline
fournit la même syntaxe que celle utilisée pour un bloc de code créé:
\documentclass{article}
\usepackage{minted}
\begin{document}
This is a sentence with \mintinline{python}{def inlineCode(a="ipsum
\end{document}
Des packages spécialisés tels que minted
, qui repose sur Pygments pour effectuer le formatage, offrent divers avantages par rapport au package listings
. Pour citer le manuel minted
,
Pygments offre une coloration syntaxique bien supérieure à celle des logiciels classiques. Par exemple, les listes ne mettent essentiellement en évidence que les chaînes, les commentaires et les mots-clés. Pygments, en revanche, peut être entièrement personnalisé pour mettre en évidence tout type de jeton pris en charge par la langue source. Cela peut inclure des séquences de formatage spéciales dans des chaînes, des nombres, différents types d'identificateurs et des constructions exotiques telles que les balises HTML.
Utilisez Frappé .
C'est un paquet qui facilite la mise en évidence de la syntaxe expressive dans LaTeX en utilisant la puissante bibliothèque Pygments . Le paquet fournit également des options pour personnaliser la sortie du code source en surbrillance en utilisant fancyvrb .
Il est beaucoup plus évolué et personnalisable que tout autre package!
Comme ce n’était pas encore mentionné ici, il pourrait être intéressant d’ajouter une option supplémentaire, package spverbatim
(sans mise en évidence de la syntaxe):
\documentclass{article}
\usepackage{spverbatim}
\begin{document}
\begin{spverbatim}
Your code here
\end{spverbatim}
\end{document}
De plus, si la coloration syntaxique n'est pas requise, package alltt
:
\documentclass{article}
\usepackage{alltt}
\begin{document}
\begin{alltt}
Your code here
\end{alltt}
\end{document}
Utilisez Pygments !
frappés travaille dans Overleaf , TeX Live et MiKTeX.
Exemple:
\documentclass{article}
\usepackage{minted}
\begin{document}
\begin{minted}[mathescape, linenos]{python}
# Note: $\pi=\lim_{n\to\infty}\frac{P_n}{d}$
title = "Hello World"
sum = 0
for i in range(10):
sum += i
\end{minted}
\end{document}
Sortie: