amc-txt et affichage code informatique (minted ou pythontex)

Added by jean claude m almost 3 years ago

Bonjour
J'utilise amc-txt pur la simplicité de rédaction du markdown et l'échange avec des collègues qui ne connaissent pas ou pas très bien latex.

Est-il possible d'utiliser minted ou pythontex avec amc-txt?

Je trouve des méthodes avec Latex mais pas amc-txt.

merci


Replies (5)

RE: amc-txt et affichage code informatique (minted ou pythontex) - Added by Frédéric Bréal almost 3 years ago

  • Pour pythontex, je ne pense pas car il faut ajouter 3 lignes avant la déclaration de la classe du fichier LaTeX.
    Or en AMC-txt, les codes (étoiles, 2 étoiles, [options], , etc) sont convertis en LaTeX avec des scripts perl pour obtenir un fichier tex.
    Il faudrait donc consevoir ces scripts et ces options.
  • Pour minted, il faudrait tester en utilisant les options :
    LaTeX: 1
    LaTeX-Preambule:\usepackage{minted}
    

    puis si vous avez un fichier prog.py
    \inputminted{python}{prog.py}
    

N'utilisant pas minted et python, je ne garantis pas ma réponse.

RE: amc-txt et affichage code informatique (minted ou pythontex) - Added by jean claude m almost 3 years ago

Bonjour et merci pour ta réponse

J'avais fait ce que tu proposes, mais il faut compiler le latex une première fois avec --shell-escape et comme je n'ai pas le tex mais source.txt je ne sais pas le faire.

J'ai réussi en mettant dans
- préférence xelatex --shell-escape puis compilation
- préférence xelatex - puis compilation

Mais je ne vais pas faire ceci tout le temps, c'est beaucoup trop long et bien trop clickodrome.

C'est pourquoi je pensais
- pouvoir le faire en console avec quelque chose comme amc prepare
ou (et)
- rajouter dans source.txt pour dire de compiler 2 fois et la ° fois avec l'option shell-escape

RE: amc-txt et affichage code informatique (minted ou pythontex) - Added by Frédéric Bréal almost 3 years ago

AMC convertit sujet.txt en DOC-filtred.tex.
Mon idée :
  • Indiquer le nombre de sujet dans l'interface,
  • compiler en mode debogage,
  • fermer le mode debogage,
  • ouvrir le fichier log,
  • copier la ligne 35 avec les arguments puis en ligne de commande
auto-multiple-choice prepare ici copie de la ligne 35 mais en ajoutant --shell-escape avec xelatex
  • puis nouvelle compilation sans le --shell-escape.
  • Après retour à l'interface

Ça fait beaucoup de manipulations mais en gardant une trace des commandes, il faudra juste changer le nom du futur fichier txt.

RE: amc-txt et affichage code informatique (minted ou pythontex) - Added by florian tobé almost 3 years ago

Salut,

Pour moi il me semble que ça fonctionne bien même si c'est le premier sujet que je compile avec python tex et que je ne l'ai pas encore testé avec mes élèves.
J'ai tout de même changé le moteur latex pour xelatex. Mais je n'ai rajouté aucune ligne spécifique en en-tête de fichier.

La compilation se déroule comme suit :
Je clique un coup sur "mettre à jour"
Je passe en ligne de commande et je lance : python3 ~/Téléchargements/pythontex/pythontex3.py amc-compiled.tex
Je reclique sur "mettre à jour"

Et voilà !

Pour les pièces jointes il faudra retirer l'import des fichiers à la fin et changer le chemin vers AF1.txt. J'avais la flemme mais si tu galères je prendrais le temps.

Si le grand Gérard (grand par le talent car j'ignore tout du reste) aurait une idée pour pouvoir taper du python indenté sur plusieurs ligne dans les fichiers questions, je suis preneur.

Exemple de question qui risque de devenir illisble avec le temps :

  1. Calculer 3a - 2b pour a = 4 et b = 5 :
    *[id=CL1.2,horiz] Calculer \pyc{l1=aleal("abcxyz");l2=aleal("abcxyz");s=aleal("+-");a=alea(2,9);b=alea(2,9);c=alea(2,9);d=alea(2,9);r1=alea(1,99);r2=alea(-99,-1)} $ \py{a}\py{l1} \py{s} \py{b}\py{l2} $ pour $\py{l1}=\py{c}$ et $\py{l2}=\py{d}$ :

+ $ \pyc{print(a*d + b*d) if s=="+" else print(a*c - b*d)} $
- $ \pyc{print(int(str(a)+str(d)) + int(str(b)+str(d))) if s=="+" else print(int(str(a)+str(c)) - int(str(b)+str(d)))} $
- [[$ \pyc{exec("while r1==(a*d + b*d) : r1=alea(1,99)\nprint(r1)") if s=="+" else exec("while r1==(a*d - b*d) : r1=alea(1,99)\nprint(r1)")} $]]
- [[$ \pyc{exec("while r2==(a*d + b*d) : r2=alea(99,-1)\nprint(r2)") if s=="" else exec("while r2==(a*d - b*d) : r1=alea(-99,-1)\nprint(r2)")} $]]

Remarquez l'usage de exec() avec des \n qui nous fabrique ce python de m...

Slt !

simple-txt.txt (2.8 kB)

AF1.txt (835 Bytes)

(1-5/5)