Retranscrire un code source dans Latex

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Retranscrire un code source dans Latex

Messagepar Drmarie » Mercredi 31 Mai 2017, 11:41

Bonjour,

Depuis quelques mois, je rédige un rapport sur Latex que je ne connaissais pas du tout, j'ai toujours réussi à trouver ce qu'il me manquait...jusqu'à aujourd'hui !! Je dois rendre mon rapport très vite, c'est pourquoi je n'ai pas beaucoup de temps et que je me permets donc de poster un message sans chercher d'avantage.

J'aurais besoin de retranscrire un code source R-Studio dans mon document Latex. Afin d'être le plus proche de ce logiciel, j'aimerais que :
- les commentaires soient écris en vert (il sont commandés par le signe #), tout comme les mots entre guillemets,
- les nombres et les commandes (for, in, if...else et function) soient en bleu,
- tout ce qui n'est pas des lettres (parenthèses, accolades, + et -, etc.), sauf les virgules soient en gris,
- le code soit sur un fond clair (histoire de délimiter clairement le début et la fin du code).
J'ai vu qu'il y avait le package listings, avec la commande lstset, mais je n'ai absolument pas compris comment faire tout ce que je viens de demander...

J'utilise TeXnicCenter et je suis sous Windows 10.

Merci d'avance pour votre aide.
Drmarie
Utilisateur
 
Messages: 1
Inscription: Mercredi 31 Mai 2017, 10:15
Statut actuel: Post-bac | Licence

Publicité

Re: Retranscrire un code source dans Latex

Messagepar marco56 » Mercredi 31 Mai 2017, 13:13

Un exemple trouvé sur le net il y a longtemps :
Code: Tout sélectionner
\documentclass{article}
\usepackage{caption}
\usepackage{xcolor}
\usepackage{listings}
\usepackage[T1]{fontenc}
\usepackage{beramono}

% some colors for the listings
\colorlet{cppkeyword}{teal}
\colorlet{latexkeyword}{green!50!black}
\colorlet{gnuplotkeyword}{magenta!60!black}
\colorlet{gnuplotcomment}{teal}
\colorlet{symb}{red!50!black}
\colorlet{comm}{brown}

% for captions: boldfaced labels, separator=period
\captionsetup[lstlisting]{labelfont=bf,labelsep=period}

% style for c++ listings
\lstdefinestyle{cpp}{%
  language=C++,
  keywordstyle=\bfseries\color{cppkeyword},
  literate=%
    {\{}{\textcolor{symb}{\{}}1
    {\}}{\textcolor{symb}{\}}}1
    {(}{\textcolor{symb}{(}}1
    {)}{\textcolor{symb}{)}}1
    {;}{\textcolor{symb}{;}}1
}

% style for LaTeX listings
\lstdefinestyle{latex}{%
  language=[LaTeX]{TeX},
  texcsstyle=*\bfseries\color{latexkeyword},
  literate=%
    {\{}{\textcolor{symb}{\{}}1
    {\}}{\textcolor{symb}{\}}}1
    {(}{\textcolor{symb}{(}}1
    {)}{\textcolor{symb}{)}}1
    {\%}{\textcolor{comm}{\%}}1
}

% style for Gnuplot listings
\lstdefinestyle{gnuplot}{%
  language=Gnuplot,
  keywordstyle=\bfseries\color{gnuplotkeyword},
  commentstyle={\itshape\color{gnuplotcomment}},
  literate=%
    {"}{\textcolor{symb}{"}}1
}

% Common style for all listings
\lstset{
  basicstyle=\small\ttfamily,
  columns=fullflexible,
  tabsize=3
}

% We tweak the default settings for C++ listings
\renewcommand\lstlistlistingname{\texttt{C++} listings}

\lstnewenvironment{cpp}[1][]{%
  \renewcommand\lstlistingname{\texttt{C++} listing}
  \lstset{style=cpp,#1}}{}

% Counters for LaTeX and Gnuplot listings and an auxiliary counter
\newcounter{latexlst}
\newcounter{gnuplotlst}
\newcounter{tmp}

\makeatletter
% Environment for LaTeX listings; extension for auxiliar file: lll
\lstnewenvironment{latex}[1][]{%
  \renewcommand\lstlistingname{\LaTeX\ listing}
  \setcounter{tmp}{\value{lstlisting}}
  \setcounter{lstlisting}{\value{latexlst}}
  \lstset{style=latex,nolol,#1}
}{%
  \refstepcounter{latexlst}
  \addcontentsline{lll}{lstlisting}{\protect\numberline{\thelstlisting}\lst@@caption}%
  \setcounter{lstlisting}{\value{tmp}}
}

% Settings for the List of LaTeX listings
\newcommand\lstlistoflatexlistings{%
  \bgroup
  \renewcommand\lstlistlistingname{\LaTeX\ listings}
  \let\contentsname\lstlistlistingname
  \let\lst@temp\@starttoc \def\@starttoc##1{\lst@temp{lll}}%
  \tableofcontents
  \egroup%
}

% Environment for Gnuplot listings; extension for auxiliar file: lgl
\lstnewenvironment{gnuplot}[1][]{%
  \renewcommand\lstlistingname{\texttt{Gnuplot} listing}
  \setcounter{tmp}{\value{lstlisting}}
  \setcounter{lstlisting}{\value{gnuplotlst}}
  \lstset{style=gnuplot,nolol,#1}
}{%
  \refstepcounter{gnuplotlst}
  \addcontentsline{lgl}{lstlisting}{\protect\numberline{\thelstlisting}\lst@@caption}%
  \setcounter{lstlisting}{\value{tmp}}
}

% Settings for the List of Gnuplot listings
\newcommand\lstlistofgnuplotlistings{%
  \bgroup
  \renewcommand\lstlistlistingname{\texttt{Gnuplot} listings}
  \let\contentsname\lstlistlistingname
  \let\lst@temp\@starttoc \def\@starttoc##1{\lst@temp{lgl}}%
  \tableofcontents
  \egroup%
}
\makeatother

\begin{document}

\lstlistoflistings
\lstlistoflatexlistings
\lstlistofgnuplotlistings

\begin{cpp}[caption={test code for \texttt{C++}},label={lst:c++}]
long some_function();
int other_function();

int calling_function()
{
        long test1;
        int test2;
}
\end{cpp}

\begin{latex}[caption={test code for \LaTeX},label={lst:latex}]
\newcommand\mycom[1]{%
    \fbox{#1}%
}
\end{latex}

\begin{gnuplot}[caption={test code for \texttt{Gnuplot}},label={lst:gnuplot}]
# 1st step
set term "table"
set output "temp.dat"
splot ....
\end{gnuplot}

\LaTeX code: \lstinline[style=latex]{\documentclass}\par
\texttt{Gnuplot} code: \lstinline[style=gnuplot]{set output "temp.dat"}\par
\texttt{C++} code: \lstinline[style=cpp]{int calling_function()}

\end{document}
marco56
Giga-utilisateur
 
Messages: 663
Inscription: Jeudi 25 Novembre 2010, 22:10
Statut actuel: Actif et salarié | Enseignant


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot], Yahoo [Bot] et 5 invités