Bonsoir, Tout juste inscrit donc, pour commencer, bonjour à tous ! Ainsi que renseigné dans ma description, je suis professeur de mathématiques en lycée et utilisateur de LaTeX depuis de nombreuses années, bien qu'encore néophyte sur certains de ses aspects. L'an dernier, accompagné par un collègue de maths, Jean-Marc Duquesnoy, je me suis mis à pythontex. D'une part, c'est cohérent avec l'enseignement de l'algorithmique et son implémentation en python du programme de BTS SIO 1re année, d'autre part cela permet de générer des sujets avec des éléments aléatoires ; un des bénéfices étant de limiter la "fraude de voisinage". J'ai une solution fonctionnelle mais qui me paraît "lourde" et je me demande si vous auriez des idées de procédures autres, voire moins "lourdes". Ma solution actuelle est constituée de deux fichiers :
Ci-dessous, un ECM. Merci de vos éventuelles suggestions. Cordialement, Fichier 1 : ECM_variable.tex
Fichier 2 : Plusieurs.sh
Utilisation : placer les deux fichiers dans le même répertoire, rendre exécutable le script bash et l'exécuter :-)
Affichage de 5 parmi 13
Afficher 8 commentaire(s) en plus
|
Voici une solution: une section a été ajoutée pour le code python commun entre les sujets, ce qui peut être pratique pour réduire le temps de compilation. Fichier principal \documentclass{article} \usepackage{tikz} \ExplSyntaxOn \clist_new:N \l_mumblee_clist \clist_set:Nn \l_mumblee_clist {section,subsection,exo,page}% compteurs à initialiser \newtheorem{exo}{Exercice}% pour l'exemple \newcounter{sujetcnt}% pour l'exemple \NewDocumentEnvironment{sujet}{ } { \newpage \clist_map_inline:Nn \l_mumblee_clist {\setcounter{##1}{0}} \stepcounter{sujetcnt}\stepcounter{page} \section*{Sujet~no~\thesujetcnt} }{} \cs_new_eq:NN \mumbleerepeat \prg_replicate:nn \ExplSyntaxOff \usepackage{pythontex} % code python commun \begin{pycode} from random import randint \end{pycode} \begin{document} \mumbleerepeat{5}{\input{txtsujet}} \end{document} Fichier avec le contenu de sujet \begin{sujet} \begin{exo} \begin{pycode} a,b = randint(1,5),randint(6,10) \end{pycode} Calculer $\py{a}+\py{b}$ \end{exo} \end{sujet} Pour la compilation
Bonsoir, Merci. Il faut que j'épluche et que je comprenne ce code mais ça m'a tout à fait l'air de faire l'affaire ! Je teste et je reviens valider la solution. PS : il semble que je vais devoir me mettre à LaTeX3... Bonjour, C'est parfait, merci beaucoup ! Tout à fait ce que je souhaitais : des sujets avec une partie aléatoire, identifiables à l'aide d'une numéro et dont la production de l'ensemble ne nécessite qu'une seule triple compilation. Remarque : les lignes 28 et 29 de "sujetsmaker.tex", après le premier "end{document}" sont inutiles non ? Oui, en effet, tout ce qui est après Bonsoir, Après une utilisation "en situation" de cette solution, j'ai un petit souci. Non sur le fonctionnement général mais sur un potentiel effet de bord sur la mise en page. En effet, j'ai vérifié avec le package 'layout' que mes paramètres du paquet geometry étaient bien pris en compte (marges gauche, droite, haut et bas égales à 1cm par exemple), cependant l'environnement 'sujet' semble générer un décalage vers la droite. Peut-on s'en débarrasser ? Désolé de déterrer le sujet. Je peux poser une nouvelle question si nécessaire. Oui, vous pouvez remplacer l'environnement sujet par une autre solution. Toutefois, je ne vois pas du problème de décalage. Il est donc préférable de poser une nouvelle question avec un exemple minimal qui montre le problème. Bonsoir, Le décalage provenait de l'indentation de paragraphe qui s'applique à l'ensemble du résultat produit par la commande input. Avec un simple setlength{parindent}{0mm} tout est rentré dans l'ordre. Une nouvelle question ne sera pas nécessaire :-) Désolé du dérangement.
Affichage de 5 parmi 6
Afficher 1 commentaire(s) en plus
|
J'ai un souci avec mon bloc de code correspondant au script bash. Je suppose que le moteur du forum n'apprécie pas la première ligne. J'essaie de trouver une solution...
Avec les bonnes balises, c'est plus lisible :-)
@mumblee : bienvenue sur TeXnique !
Pouvez-vous préciser en quoi votre solution est lourde ?
Bonjour Denis,
Derrière mumblee c'est Fabrice Eudes :-)
L'appréciation "lourde" vient des triples compilations répétées. Lorsque je génère 38 sujets, cela prend donc un certain temps. Mais je ne sais pas si, avec la contrainte des valeurs aléatoires, on pourrait faire plus court...
Je ne sais pas si ça vous convient ou pas, mais vous pouvez inverser la logique: 38 sujet dans un seul fichier .tex (et donc .pdf). C'est pratique pour impression.
Bonjour Fabrice :) La suggestion de touhami me semble tout à fait pertinente. J'ajouterais que, pour créer des sujets avec éléments aléatoires, une autre solution consiste à utiliser Auto Multiple Choice (même si j'ai bien compris l'intérêt de recourir à
pythontex
) ; au cas où ça t'intéresse, son auteur a donné un exposé à son sujet dans le cadre des exposés mensuels de l'association GUTenberg.Merci pour cette piste. Je vais aller regarder cet exposé.
PS : je n'avais pas vu les réponses et commentaires plus tôt car les mails envoyé par TeXnique sont systématiquement classés en indésirables par gmail. On va me dire d'utiliser une autre adresse mail :-) mais si quelqu'un a la solution pour éviter cela... (je vais regarder les entêtes pour tenter de comprendre ce classement en indésirable)
Les mails ne passent pas l'authentification DMARC. Extrait de l'entếte :
SPF : PASS avec IP 158.120.84.217 En savoir plus DKIM : 'PASS' avec le domaine smtpservice.net En savoir plus DMARC : 'FAIL' En savoir plus
La variable NUMERO ne sert à rien.
Il me semble qu'il existe un paquetage pour générer des nombres aléatoires en Latex, donc Python est inutile.
Lancer 1 + 3 x 38 processus, et charger les paquetages à chaque fois, oui c'est lourd. On peut générer un seul document PDF que l'on découpe en parties après si besoin. C'est plus simple et plus rapide.
La variable NUMERO sert à modifier le titre du document lors des compilations successives lancées via le script. Mon utilisation de pythontex ne se résume pas à générer un nombre aléatoire. J'ai indiqué que c'était un ECM. Je précise que, pour mes documents "réels", j'ai besoin de pythontex.
Ok, c'est plus clair pour moi, merci.
Je suggère de jeter un coup d'œil à
pyluatex
: il n'y a besoin que d'une seule compilation LaTeX et aucun fichier extérieur n'est généré. Bien sûr, je recommande aussi mon extensionpiton
pour le formatage du code, beaucoup plus rapide que le passage par Pygments comme le faitminted
...