Compatibilité Minted pour écrire du code python

Added by Maxime Girot over 2 years ago

Bonjour à toutes/tous,

j'ai beau chercher sur le forum, je n'ai pas trouvé de réponse satisfaisante.
Je cherche à inclure du code python dans mes QCM avec coloration syntaxique.
Si quelqu'un le fait déjà, pourrait-il partager un exemple qui marche?

Pour ma part j'ai essayé avec le package minted. J'arrive à compiler l'exemple minimal du package, donc ma configuration semble ok (win10, texmaker).
Lorsque j'essaye de l'utiliser dans un de mes fichiers AMC.tex, j'ai des erreurs de compilation.
Ces erreurs me semblent propre à AMC ( Paragraph ended before \FV@BeginScanning was complete).
Je mets mon fichier nettoyé en PJ, il suffit juste de commenter/décommenter les lignes 121-124 pour tester avec et sans minted.
D'où ma question: est-ce que minted est incompatible avec AMC? où est-ce que quelqu'un a réussi à le faire marcher ?
Quelqu'un voit-il une erreur dans mon fichier?

D'avance merci pour vos réponses. Maxime.

ps: encore bravo et milles merci pour AMC!

EMC_minted.tex - exemple de fichier qui ne marche pas lorsque l'on utilise minted (2 kB)


Replies (16)

RE: Compatibilité Minted pour écrire du code python - Added by Frédéric Bréal over 2 years ago

Dans la documentation, il est noté qu'il faut l'appeler par la commande suivante :

\inputminted{python}{prog.py}

RE: Compatibilité Minted pour écrire du code python - Added by Frédéric Bréal over 2 years ago

Après un test, il faut déclarer le paquet minted après auto-multiple-choice et utiliser -shell-escape.

RE: Compatibilité Minted pour écrire du code python - Added by Maxime Girot over 2 years ago

Merci beaucoup d'avoir pris le temps de regarder mon problème.

J'ai beau chercher, je n'arrive toujours pas à compiler, je joins le fichier log dès fois que...
Ce que j'ai essayé:
- j'ai compilé avec texnicenter, puis texmaker, puis en ligne de commande sous ubuntu, à chaque fois avec shell-escape (sauf erreur de ma part)
j'ai appelé le package minted après auto-multiple-choice, comme conseillé
- j'ai forcé l'installation du package pygmentize sous miktex qui semblait poser problème
- j'ai essayé la commande \inputminted comme conseillé, ainsi que \begin{minted}... comme je le faisais
et cela ne marche toujours pas.

Si vous arrivez à compiler chez vous, le problème doit venir de mon installation.

Je vais continuer à chercher, mais si quelqu'un a des pistes, je suis preneur, merci encore!
Maxime

EMC_minted.log (40.5 kB)

EMC_minted.tex (2 kB)

RE: Compatibilité Minted pour écrire du code python - Added by Maxime Girot over 2 years ago

j'ai bien compilé avec l'option -shell-escape, je n'ai pas volontairement barré le texte....

RE: Compatibilité Minted pour écrire du code python - Added by Frédéric Bréal over 2 years ago

Tout compile chez moi.
Allez dans l'interface d'AMC puis préférence > Projet > Moteur LaTeX (en bas) : sélectionnez pdflatex et rajoutez après -shell-escape.
J'ai la version test 1.5 et xubuntu 20.04

RE: Compatibilité Minted pour écrire du code python - Added by Maxime Girot over 2 years ago

Effectivement quand je compile depuis AMC, cela marche avec la commande :

\inputminted

Dès fois que d'autres rencontrent le problème, pour que cela marche quand on compile depuis win/texnicenter ou texmaker, après avoir farfouillé sur les forums, il suffit d'appeler le package avec cette option:

\usepackage[cache=false]{minted}

Mais je n'arrive toujours pas à faire marcher les commandes minted directes du type:

\begin{minted}{python}
def boring(args = None):
    return toto
\end{minted}

Puis-je vous demander si les commandes directes marchent chez vous? Car je trouve dommage d'avoir autant de fichiers *.py que de questions.

Dans tous les cas encore merci, je suis déja partiellement débloqué.

RE: Compatibilité Minted pour écrire du code python - Added by Frédéric Bréal over 2 years ago

si les commandes directes marchent chez vous?

Qu'appelez-vous commandes directes ?

RE: Compatibilité Minted pour écrire du code python - Added by Frédéric Bréal over 2 years ago

J'ai compris.
Non cela ne fonctionne pas et l'astuce de la commande \inputminted a été trouvée par un utilisateur pour contourner un problème.

RE: Compatibilité Minted pour écrire du code python - Added by Maxime Girot over 2 years ago

pardon, j'appelle commandes directes, celles où je tape directement mon code python dans le fichier .tex:

\begin{minted}{python}
def boring(args = None):
    return toto
\end{minted}

elles me génèrent des erreurs de compilation (paragraph ended before \FV@BeginScanning was complete) , alors que si j'utilise :

\inputminted{python}{prog.py}

cela marche parfaitement

RE: Compatibilité Minted pour écrire du code python - Added by Frédéric Bréal over 2 years ago

Non cela ne fonctionne pas et l'astuce de la commande \inputminted a été trouvée par un utilisateur pour contourner ce problème.

RE: Compatibilité Minted pour écrire du code python - Added by Maxime Girot over 2 years ago

ok, merci d'avoir eu la gentillesse de tester la compilation sur votre machine.

Je vais essayer de trouver une solution à ce problème. Si j'y arrive, je la posterai ici.

Bonne soirée.

RE: Compatibilité Minted pour écrire du code python - Added by Frédéric Bréal over 2 years ago

Par contre si vous commentez la ligne \exemplaire{3}{ et la dernière accolade (avant \end{document}), cela compile.
Comme AMC focntionne comme une boucle, il doit y a voir une incohérence pour le paquet minted quand arrive la 2 copie.

RE: Compatibilité Minted pour écrire du code python - Added by Frédéric Bréal over 2 years ago

Le paquet minted, créé un dossier \minted-filename et je pense que lorsque AMC va générer la copie 2, le paquet minted trouve déjà un dossier et donc ne comprend pas.
Une explication comme une autre, je n'ai pas les bases.

RE: Compatibilité Minted pour écrire du code python - Added by Maxime Girot over 2 years ago

cela aurait pu, mais avec l'option:

\usepackage[cache=false]{minted}

il ne crée pas de dossier

RE: Compatibilité Minted pour écrire du code python - Added by Frédéric Bréal over 2 years ago

Si je mets exemplaire à 1, il y a aussi une erreur.
Il doit y avoir une incompatibilité dans le code entre ces deux paquets mais c'est trop compliqué pour moi.

RE: Compatibilité Minted pour écrire du code python - Added by Maxime Girot over 2 years ago

Effectivement, je suis tombé sur les messages du forum décrivant ce problème d'incompatibilité entre AMC et les environnements de type verbatim.

J'ai un début de solution, il suffit d'écrire les lignes de code python dans un fichier, puis d'appeler ce fichier avec minted.
Ca marche. Pour aller à la ligne, on utilise ^^J
Mais je n'ai pas réussi à faire des tabulations. Il me les transforme en espace dans le fichier txt, si quelqu'un connait la solution...
Voici mes lignes de code:

\newwrite\fichier
\openout\fichier=exemple.txt
\write\fichier{def boring(args = None):^^J
    return toto}
\closeout\fichier

\inputminted{python}{filename.txt}

Si je trouve comment passer les tabulations, il n'y aura plus qu'à mettre cela dans un environnement!

(1-16/16)