web-dev-qa-db-fra.com

Insertion de 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 mise en évidence de la syntaxe pourrait être agréable, bien que ce ne soit absolument pas nécessaire.

374
sixtyfootersdude

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:

Example image

571
Cloudanger

Vous pouvez également utiliser l'environnement verbatim

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

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}
107
alan

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.

31
Philipp

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!

10
TheEnglishMe

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}
5
MattAllegro

Utilisez Pygments !

4
Tarantula

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:

enter image description here

0
Shital Shah