461 votes

Insertion du code dans ce document LaTeX avec indentation

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 coloration syntaxique pourrait être intéressante, mais elle n'est absolument pas nécessaire.

0 votes

Il ne s'agit pas d'un doublon exact, mais les réponses couvrent le même terrain : cf. stackoverflow.com/questions/741985/

0 votes

J'ai également une question complémentaire : stackoverflow.com/questions/3408996/

689voto

Cloudanger Points 2209

Utilisez listings paquet.

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 :

Example image

3 votes

J'ai une question complémentaire concernant votre code. Jetez-y un coup d'œil si vous en avez l'occasion : stackoverflow.com/questions/3408996/

1 votes

Existe-t-il un moyen de réduire l'espace entre les lignes de code ?

0 votes

Est-il possible d'ajouter un petit texte sous l'extrait de code, semblable au texte écrit sous une figure dans Latex ?

189voto

midtiby Points 3351

Vous pouvez également utiliser l'environnement verbatim

\begin{verbatim}
your
code
example
\end{verbatim}

63 votes

L'utilisation de tabulations dans l'environnement verbatim pose un problème. Si les tabulations sont converties en "espace", le problème disparaît.

1 votes

C'est un bon moyen de montrer des exemples de contenu de fichiers texte (par exemple, des données textuelles à lire/traiter par un programme).

0 votes

Pour un article à deux colonnes, il ne gère pas bien les marges.

121voto

alan Points 157

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, il serait préférable de créer votre propre commande

\newcommand{\code}[1]{\texttt{#1}}

Notez également que les blocs de code peuvent être chargés à partir d'autres fichiers à l'aide de la commande

\lstinputlisting[breaklines]{source.c}

breaklines n'est pas obligatoire, mais je le trouve utile. Sachez que vous devrez spécifier \usepackage{ listings } pour celui-ci.

Mise à jour : Le paquet de listings comprend également le \lstinline qui possède les mêmes fonctions de coloration syntaxique que la commande \lstlisting et \lstinputlisting (voir la réponse de Cloudanger pour les détails de configuration). Comme mentionné dans d'autres réponses, il existe également le paquet minted, qui fournit la commande \mintinline commande. Comme \lstinline , \mintinline fournit la même coloration syntaxique qu'un bloc de code ordinaire :

\documentclass{article}

\usepackage{minted}

\begin{document}
  This is a sentence with \mintinline{python}{def inlineCode(a="ipsum)}
\end{document}

1 votes

Existe-t-il un meilleur moyen de créer un code en ligne qui active les couleurs des mots-clés, etc.

0 votes

comment insérer des espaces/onglets pour rendre le texte plus lisible ?

33voto

Philipp Points 21479

Des forfaits spécialisés tels que minted qui s'appuie sur Pygments pour effectuer la mise en forme, offrent divers avantages par rapport à l'option listings paquet. Pour citer le minted manuel,

Pygments fournit une coloration syntaxique bien supérieure à celle des paquets conventionnels. Par exemple, les listes ne mettent en évidence que les chaînes de caractères, les commentaires et les mots-clés. Pygments, en revanche, peut être complètement personnalisé pour mettre en évidence tout type de jeton que le langage source pourrait supporter. Il peut s'agir de séquences de formatage spéciales à l'intérieur de chaînes de caractères, de nombres, de différents types d'identifiants et de constructions exotiques telles que les balises HTML.

1 votes

J'ai essayé minted, la documentation est assez simple. Le style par défaut est assez bon.

6 votes

Cette solution peut être insatisfaisante pour de nombreux utilisateurs, en raison de l'appel externe nécessaire à Pygmentsic. En particulier, l'obligation d'appeler latex avec l'option -shell-escape est, au mieux, une modification mineure des systèmes de construction existants, et au pire, incompatible avec les préférences de sécurité de certains utilisateurs.

5voto

Tarantula Points 4231

Utilice Pygments !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X