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 :
- Un source LaTeX contenant du code python, nécessitant donc une triples compilation (1)LaTeX/(2)pythontex/(3)LaTeX
- 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
\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}
Fichier 2 : Plusieurs.sh
#!/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
Utilisation : placer les deux fichiers dans le même répertoire, rendre exécutable le script bash et l'exécuter :-)
Posée
21 heures auparavant
mumblee
11●2
Taux d'acceptation :
0%
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...