Sujets multiples avec pythontex et numérotation automatisée
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 :
1. Un source LaTeX contenant du code python, nécessitant donc une triples compilation (1)LaTeX/(2)pythontex/(3)LaTeX
2. Un script bash avec une variable d'environnement récupérée par le source LaTeX à la compilation, plus précisément aux compilations (1) et (3)
Ci-dessous, un ECM. Merci de vos éventuelles suggestions. Cordialement,
Fichier 1 : **ECM_variable.tex**
<pre><code>
\documentclass{article}
%%% Accès aux variables d'environnement.
% Référence :
% https://tex.stackexchange.com/questions/62010/can-i-access-system-environment-variables-from-latex-for-instance-home
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\getenv}{om}
{
\sys_get_shell:nnN { kpsewhich ~ --var-value ~ #2 } { } \l_tmpa_tl
\tl_trim_spaces:N \l_tmpa_tl
\IfNoValueTF { #1 }
{
\tl_use:N \l_tmpa_tl
}
{
\tl_set_eq:NN #1 \l_tmpa_tl
}
}
\ExplSyntaxOff
%%% Interaction avec python.
% Triple compilation nécessaire : LaTeX -> pythontex -> LaTeX
\usepackage{pythontex}
\begin{document}
\begin{pycode}
from random import randint
a,b = randint(1,5),randint(6,10)
\end{pycode}
\getenv[\NUM]{NUMERO}
Sujet \NUM
Calculer $\py{a}+\py{b}$
\end{document}
</pre></code>
Fichier 2 : **Plusieurs.sh**
<pre><code>
#!/bin/bash
nb=2
# Boucle pour le nombre de sujets demandés.
for i in `seq 1 $nb`; do
# Variable d'environnement utilisée par le source LaTeX pour numéroter le sujet
export NUMERO=$i
# On copie le source LaTeX puis on effectue les trois compilations
# nécessaires pour obtenir le PDF contenant sujet et corrigé.
cp ECM_variable.tex exemplaire$i.tex
pdflatex exemplaire$i.tex
pythontex exemplaire$i.tex
pdflatex exemplaire$i.tex
done
</code></pre>
Utilisation : placer les deux fichiers dans le même répertoire, rendre exécutable le script bash et l'exécuter :-)