Intégrer du code informatique ?

Added by Cédric F. over 7 years ago

Bonjour à tous et un grand merci à Alexis pour ce magnifique logiciel qui m'est d'une grande aide. C'est une killer feature pour Linux :)

Commençant l'ISN cette année, je souhaiterai rajouter du code source dans mes QCM, et notamment en python ou HTML.

J'ai regardé du côté du package minted (http://ctan.org/pkg/minted) qui m'a l'air super. Voici ce que j'ai fait :

sudo easy_install3 Pygments

Téléchargement de minted.sty et dépose dans le dossier /usr/share/texmf/tex/latex/AMC/, à coté de automultiplechoice.sty (je suis sous Ubuntu 16.04)

Ajout de \usepackage{minted} en tête du paquet puis j'ai mis cela dans une question :
\begin{minted}{python}
def boring(args = None):
pass
\end{minted}

Sauf que j'obtiens cela dans ma compilation avec Gummi :

Overfull \hbox (44.87724pt too wide) in paragraph at lines 182--182
[]$[]$ []
Runaway argument?
 def boring(args = None): pass \end {minted} \vspace *{-.3cm} \begin \ETC.
/home/cfrayssinet/Bureau/.test_minted.tex.swp:182: Paragraph ended before \FV@B
eginScanning was complete.
<to be read again>
                   \par
l.182 }

Qu'est-ce que je fais de mal ? Y a-t-il une solution simple pour intégrer du code informatique ?

Merci d'avance !


Replies (10)

RE: Intégrer du code informatique ? - Added by Alexis Bienvenüe over 7 years ago

Le problème vient de l'incompatibilité d'AMC avec les paquets du genre verbatim — voir Verbatim inside questions. minted utilise Verbatim, il faut chercher une solution pour passer par des boîtes…

RE: Intégrer du code informatique ? - Added by Cédric F. over 7 years ago

Ah, ce n'est pas une bonne nouvelle mais on va faire avec.

Du coup, j'ai tenté avec verbatimbox sauf que j'obtiens un code centré et surtout non indenté, avec Python, cela va être compliqué :) Y a-t-il une astuce pour conserver une indentation ?

Merci !

RE: Intégrer du code informatique ? - Added by Alexis Bienvenüe over 7 years ago

Ou alors une solution qui évite de passer par un verbatim : mettre le code dans un fichier prog.py (dans le répertoire projet), et utiliser

\inputminted{python}{prog.py}

Il faudra bien sûr avoir un fichier par bout de code à insérer, mais ça marche.

RE: Intégrer du code informatique ? - Added by Cédric F. over 7 years ago

Super, merci Alexis, çà fonctionne parfaitement, avec coloration syntaxique et prise en compte de plus de 300 langages !

On peut clore le sujet et peut-être que tu peux rajouter cela à la FAQ :http://project.auto-multiple-choice.net/projects/auto-multiple-choice/wiki/Verbatim_inside_questions

Bon week-end !

RE: Intégrer du code informatique ? - Added by Cédric F. over 7 years ago

Alexis Bienvenüe wrote:

Ou alors une solution qui évite de passer par un verbatim : mettre le code dans un fichier prog.py (dans le répertoire projet), et utiliser

inputminted{python}{prog.py}

Il faudra bien sûr avoir un fichier par bout de code à insérer, mais ça marche.

Bonjour Alexis,

Je suis en train de faire un QCM avec du code python et j'ai un soucis de compilation. En effet, avec Gummi, ma compilation se fait et j'obtiens bien mon fichier avec le code source à l'intérieur.
En revanche, quand, avec AMC, je fais Mettre à jour les documents, la compilation échoue. Voici quelques extraits du log :

! Package minted Error: Missing Pygments output; \inputminted was
probably given a file that does not exist--otherwise, you may need 
the outputdir package option, or may be using an incompatible build tool.
! Package minted Error: You must invoke LaTeX with the -shell-escape flag.

Je précise que j'ai mis mes fichiesrs Python dans le dossier projet, au même niveau que mon fichier source simple.tex.

Avez-tu testé en lançant la mise à jour des documents dans AMC ? Pour savoir si c'est moi qui ai fait une boulette ?

Voici un extrait d'insertion de mes codes :

\begin{question}{01}    
Hormis la question, que retourne ce programme ?
  \vspace*{-.3cm}
\inputminted{python}{type_input.py}
  \vspace*{-.4cm}
  \begin{reponseshoriz}
    \bonne{\emph{<class 'str'>}}
    \mauvaise{\emph{<class 'int'>}}
    \mauvaise{\emph{<class 'float'>}}
    \mauvaise{\emph{type(N)}}
  \end{reponseshoriz}
\end{question}

Merci pour ton aide :)

RE: Intégrer du code informatique ? - Added by Alexis Bienvenüe over 7 years ago

! Package minted Error: You must invoke LaTeX with the -shell-escape flag.

Il faut effectivement faire appel à LaTeX avec cette option, en donnant par exemple à l'option Edition/Préférences/Projet/Commandes utilisées/Moteur LaTeX la valeur pdflatex -shell-escape.

RE: Intégrer du code informatique ? - Added by Cédric F. over 7 years ago

C'est parfait, merci énormément Alexis !

Peut-on faire un don au projet ?

RE: Intégrer du code informatique ? - Added by Alexis Bienvenüe over 7 years ago

Peut-on faire un don au projet ?

Non mais si vous voulez me faire plaisir en dépensant un peu d'argent, soutenez April et/ou Framasoft

RE: Intégrer du code informatique ? - Added by Cédric F. over 7 years ago

Alexis Bienvenüe wrote:

Peut-on faire un don au projet ?

Non mais si vous voulez me faire plaisir en dépensant un peu d'argent, soutenez April et/ou Framasoft

Je suis déjà adhérent à l'April et je donne régulièrement à Framasoft :)

(1-10/10)