Closed paternal closed 6 years ago
Bonjour Louis. Je suis absolument d'accord avec toi sur le constat et ton exemple semble effectivement très prometteur. Je testerai l'intégration de Jinja2 au paquet mais il n'y a pas de raison que ça ne fonctionne pas... Enfin j'espère. La traduction est un travail titanesque qui n'a peut-être qu'un intérêt limité. Je pense qu'il est plus motivant de travailler sur de nouveaux exercices. Je n'ai pas le temps de regarder ça de près ce week-end, mais je m'y attellerai dès que possible. Merci beaucoup pour cette trouvaille.
Du coup, je te laisse valider ça dés que tu as vérifié le setup.py
. Il faut aussi ajouter jinja2 à la liste des dépendances du paquet .deb (il est paquagé : c'était aussi un de mes critère pour l'utiliser).
Pour la documentation, j'ai marqué ça dans ma todo-liste perso, mais ça n'est pas bloquant. Pour la traduction, ça n'est pas bloquant non plus.
La documentation de la création d'un nouvel exercice est terminée (le premier jet, du moins ; il faudrait que je me relise). Bonne lecture !
Je suis en train d'écrire un exercice bilan sur les trinômes en seconde, en utilisant jinja2 comme proposé ici. Je me rends compte qu'il y a encore de bonnes pistes d'améliorations à tout ça, donc ce qui est proposé ici n'est pas gravé dans le marbre, mais le cœur sera conservé : cette pull-request peut être acceptée dés maintenant.
Les exercices proposés :
Bonne lecture !
@JeromeO Merci pour ta relecture. J'ai corrigé quelques détails et mis à jour les tests. Ça me convient.
J'ai l'impression que tu es d'accord dans les grandes lignes. Si tu as encore des modifications à apporter, il sera toujours temps de les faire dans la branche develop
Absolument. À ce propos, est-ce qu'on intègre cette branche dans develop dès maintenant ? On ne reviendra pas en arrière, tu as trop bossé.
D'autant plus que le système via template jinja est très bien. Maintenant je me demande si il ne faudrait pas déjà structurer l'arborescence du dossier templates.
Je confirme que c'est super. Relire le code tex d'un exercice devient relativement simple. Concernant la structure, c'est clair qu'il y a quelque chose à faire. Ça va devenir vite illisible.
Je confirme que c'est super. Relire le code tex d'un exercice devient relativement simple.
🎉 Génial ! C'était le but recherché… 🎉
Concernant la structure, c'est clair qu'il y a quelque chose à faire. Ça va devenir vite illisible.
Je ne suis pas sûr que ça devienne si illisible que ça, et je ne vois pas vraiment comment organiser cela. Il a été évoqué ailleurs que le classement des exercices par niveau n'était plus pertinent (dans la mesure où avec la réforme des collèges, la répartition des exercices dans chacun des quatre niveaux n'est plus stricte ; dans la mesure où au lycée, un exercice peut appartenir à plusieurs séries différentes…). Du coup, quelle organisation proposez-vous ? J'en vois deux possibles :
MesuresAngles/answer.tex
et MesuresAngles/statement.tex
plutôt que MesuresAngles-answer.tex
et MesuresAngles-statement.tex
), mais on ne gagne pas grand'chose ;InterpolationMatrices
est dans le module lycee/matrices.py
, donc les templates seraient lycee/matrices/InterpolationMatrices-statement.tex
, ou matrices/InterpolationMatrices-statement.tex
, mais j'ai peur que ce soit moins clair et moins pratique que la solution actuelle.Actuellement, les vignettes sont organisées de la même manière : toutes dans le même répertoire. Trouvez-vous vraiment que ça pose problème ?
Ces répertoires ne sont pas manipulés par l'utilisateur final : ils sont manipulés par l'ordinateur (la plupart du temps) et par le développeur (quelques fois). La situation actuelle ne me semble donc pas génante.
La nuit porte conseil. Autre proposition : inverser l'ordre des répertoires.
Actuellement, le répertoire data/ex
contient trois répertoires : un pour les vignettes, un pour les templates, un pour les tests. Au sein de chacun des répertoires se trouvent tous les fichiers de tous les exercices. Pour l'exercice InterpolationMatrices
, cela donne :
$ tree data/ex
data/ex
├── img
│ └── InterpolationMatrices.png
├── templates
│ ├── InterpolationMatrices-answer.tex
│ └── InterpolationMatrices-statement.tex
└── tests
├── InterpolationMatrices.0.answer
└── InterpolationMatrices.0.statement
On peut aussi inverser cela : le répertoire data/ex
contientrait un répertoire par exercice, qui contiendrait les fichiers susmentionnés. Cela donnerait :
$ tree data/ex
ex
└── InterpolationMatrices
├── test.0.answer
├── test.0.statement
├── answer.tex
├── statement.tex
└── thumbnail.png
-- Louis
Nouvel exercice. L'intérêt réside surtout dans la nouvelle manière de générer l'exercice : avec un template jinja2.
Jusqu'à présent, le code LaTeX des exercices est construit de cette manière :
https://github.com/Pyromaths/pyromaths/blob/b39a7d7fe450c7253c09a199a832ba78516a7119/src/pyromaths/ex/lycee/TermesSuite.py#L644-L742
C'est parfaitement illisible. Avec cette nouvelle méthode, il y a deux parties : la classe exercice en elle même :
https://github.com/Pyromaths/pyromaths/blob/b39a7d7fe450c7253c09a199a832ba78516a7119/src/pyromaths/ex/lycee/matrices.py#L59-L80
Et un template :
https://github.com/Pyromaths/pyromaths/blob/b39a7d7fe450c7253c09a199a832ba78516a7119/data/ex/templates/EtatStableSysteme2-answer.tex
Il est beaucoup plus lisible : c'est du code LaTeX ; le principal à savoir est que les expressions entre double parenthèse
(( comme ça ))
sont évaluées. Ainsi, dans(( (1-b) | decimal ))
, le nombre1-b
est d'abord calculé, puis on y applique la fonctiondecimal
, et le résultat de cette fonction est affiché.C'est beaucoup, beaucoup, beaucoup plus confortable d'écrire des exercices ainsi.
Ce qu'il reste à faire :
Bonne lecture ! Et au dodo… 🌜💤