# [LATEX] package listings + Code sur 2 colonnes (resolu)

## Ezka

Bonjour à tous !

J'ai du code C à mettre sur latex et il m'est demandé d'insérer les parties codes en 2 colonnes. J'utilise le package Listing pour avoir une sortie code sympa, mais malgrés le fait qu'il y ai bien des options pour les "columns" je n'arrive pas à faire en sorte d'avoir 2 colonnes !

Donc d'aprés la doc fournie j'ai mis ça dans mon en-tête :

```
\usepackage{listings}

\lstset{language=c}

\lstset{% general command to set parameter(s)

    basicstyle=\tiny,           % print whole listing small

    keywordstyle=\color{black}\bfseries\underbar,% underlined bold black keywords

    %identifierstyle=,           % nothing happens

    commentstyle=\textit, % white comments

    stringstyle=\ttfamily,      % typewriter type for strings

    showstringspaces=false}     % no special string spaces
```

Puis quand je veux inserer mon code :

```
\begin{lstlisting}[frame=tb, fontadjust]{main.c}

.... le code ....

\end{lstlisting}
```

Bon jusque la il m'insère le texte, c'est joli, bref parfait ... mais c'est sur toute la page. Je le voudrais sur 2 colonnes. J'ai beau lire cette doc, je ne trouve pas la commande/option pour mettre mon bloc listing en 2 colonnes !

Quelqu'un s'en serai déjà servi ? Je prend toute idée, que je n'ai pas eu ! (a savoir mettre \twocolumn avant   :Rolling Eyes:  ).

Le liens ver la doc, j'ai ptêtre raté un truc ...

----------

## SanKuKai

Salut.

Ça fait un p'tit bout de temps que j'ai pas fait de LaTeX mais je propose un truc quand-même   :Smile: 

As-tu déjà essayé quelque chose dans ce gout-là :

```

\usepackage{multicol,listings}

\begin{lstlisting}[multicols=2]

.... le code .... 

\end{lstlisting}

```

?

----------

## _Seth_

Salut,

 *Ezka wrote:*   

> Quelqu'un s'en serai déjà servi ? Je prend toute idée, que je n'ai pas eu ! (a savoir mettre \twocolumn avant  ). 

 

Tu peux toujours essayer autre chose qu'un \twocolumn, par exemple un minipage ou un columns

```

\begin[minipage}{0.5\linewidth}

  \begin{lstlisting}[frame=tb, fontadjust]{main.c}

  .... le code ....colonne gauche

  \end{lstlisting}

\end{minipage}

\begin[minipage}{0.5\linewidth}

  \begin{lstlisting}[frame=tb, fontadjust]{main.c}

  .... le code ....colonne droite

  \end{lstlisting}

\end{minipage}

```

```

\begin{columns}

  \begin{column}{0.5\linewidth}

    \begin{lstlisting}[frame=tb, fontadjust]{main.c}

    .... le code .... premiere colonne

    \end{lstlisting}

  \end{column}

  \begin{column}{0.5\linewidth}

    \begin{lstlisting}[frame=tb, fontadjust]{main.c}

    .... le code .... deuxieme colonne

    \end{lstlisting}

  \end{column}

\end{columns}

```

Je suis moins sûr pour l'environnement columns, je l'utilise pas mal avec beamer et je ne sais pas s'il est défini en "plain" LaTeX.

Juste pour info, ton package c'est bien

```
 dev-tex/listings
```

Je viens de l'installer, je vais le tester sur une interro que je dois donner demain  :Wink: 

----------

## Ezka

Merci a vous 2, ça m'a donner des idées.   :Smile: 

@SanKuKai : l'idée était bonne, mais ça marche pas comme ça, mais c'est presque ça   :Wink:  ! Et je m'en suis inspirer pour la suite, d'ailleur j'utilise le package multicol qui est bien pratique.

@_Seth_ : Ouip ça pourrait marcher mais ça ne va pas me convenir, car j'avais pas précisé que "j'include" le code sans forcément le copier/coller. Du coup, par ta façon ça m'oblige à adapter mes fichiers, et ce n'est pas vraiment trés pratique.

Donc pour finir voila comment j'ai procédé :

1 - relecture de la doc   :Laughing: 

2 - Mes commandes qui vont bien :

En en-tête :

```
\usepackage{multicol, listings}

\setlength{\columnseprule}{0.5pt}

\lstset{language=c}

\lstset{% general command to set parameter(s)

    basicstyle=\small,           % print whole listing small

    keywordstyle=\color{black}\bfseries\underbar,% underlined bold black keywords

    %identifierstyle=,               % nothing happens

    commentstyle=\textit,         % white comments

    stringstyle=\ttfamily,          % typewriter type for strings

    showstringspaces=false,     % no special string spaces

    columns=flexible,               % colonnes "flexibles"

    basewidth={0.45em},         % dimension des colonnes

    fontadjust=true,                 % pour ajuster les polices

    breaklines=true}                 % pour le retour à la ligne dans les colonnes 

%Commande perso pour l'insertion du code

\newcommand{\inCode}[1]{\begin{multicols}{2}\lstinputlisting[frame=b]{#1}\end{multicols}}

```

Pour insérer le code :

```
\inCode{mon_fichier_C.c}
```

Et avec ça tout roule   :Very Happy: 

----------

## _Seth_

Effectivement, j'ai pas pensé au include, qui est bien plus pratique  :Wink: 

Merci en tout cas pour cette solution, je vais sans doute m'en servir sous peu.

----------

