LaTeX
phystool est conçu de façon à laisser à l’utilisateur la liberté de compiler ses
documents \(\LaTeX\) comme il le souhaite. L’idée de base est de faire en sorte que
chaque PDBFile génère un .pdf indépendant et puisse facilement être inclu dans
une série d’exercice, un test ou tout autre document. Si l’objectif est, par exemple, de
produire une série d’exercices, quelques lignes de code suffisent:
1 \documentclass[pdb=~/tuto_db]{physperso}
2
3 \begin{document}
4 \PdbExercise{9d1f2b06-fc3a-4eb4-8f7e-dadc8f0f0888}
5 \PdbExercise{b7ac63e2-b44b-4848-9f15-9531c93c4e95}
6 \end{document}
Ce fichier .tex inclut deux PDBFile simplement en faisant référence à leur
uuid. Le contenu de l’un de ces fichiers est:
1 \begin{exercise}{Eureka}
2 Vérifiez que la période d’oscillation d'Archimède est indépendante de
3 la température du chat de Schrödinger.
4 \end{exercise}
Comme indiqué précédemment, phystool est capable de déterminer
que ce fichier est de type exercice avec Eureka pour titre car son parttern match
la première ligne. phystool est aussi capable de le compiler indépendamment en
créant un fichier temporaire dont le contenu est:
1 \documentclass{physauto}
2 \PdbSetDBPath{~/tuto_db}
3 \begin{document}
4 \PdbPrint{9d1f2b06-fc3a-4eb4-8f7e-dadc8f0f0888}
5 \end{document}
En détail
Les PDBFile qui sont marqués standalone=false (par défaut), ne peuvent pas être
compilé directement et doivent donc être inclus avant compilation dans un fichier
temporaire. Ce fichier temporaire est automatiquement crée
par phystool et possède toujours la même structure . Par contre, les fichiers
marqués standalone=true, peuvent être compilé tel quel et ne nécessitent donc pas de
fichier temporaire.
Important
Pour que phystool puisse compiler les fichiers PDBFile, il doit avoir accès aux
classes et éventuels paquets personnels utilisés. C’est pour ces raisons que tous ces
fichiers doivent être placé dans le répertoire phystex.
Le bénéfice additionnel à cette centralisation est de faciliter le partage de documents.
Important
Afin de permettre à phystool de parser correctement les logs \(\LaTeX\), il
faut légèrement modifier la configuration du compilateur afin que les logs
affichent des lignes plus longues. Pour cela, il suffit de modifier/rajouter la
ligne suivante au fichier texmf.cnf:
max_print_line=1000
Note
Lorsqu’un fichier est compilé avec phystool, les fichiers auxiliaires sont tous
placés dans des sous-répertoire de ~/.phystool/texaux/ reflétant le chemin du fichier
de base. Par exemple, les fichiers auxiliaires produit durant la compilation de
~/travail/serie-exercies.tex seront placés dans ~/.phystool/texaux/travail/.
Classe auto_latex
La classe auto_latex est la classe centrale sur laquelle repose la compilation de tous
les PDBFile non standalone. Le fichier temporaire fait
appel à deux commandes qui doivent être définies dans cette classe:
\PdbSetDBPathPrend, comme argument obligatoire, le chemin absolu de la base de donnée afin de l’assigner à une variable réutilisée lors de chaque inclusion. Un exemple d’une telle commande peut être:
\NewDocumentCommand{\PdbSetDBPath}{m}{ \tl_gset:Nn \c_pdb_path_tl {#1} }
\PdbIncludePrend, comme argument obligatoire, le
uuidduPDBFileafin d’inclure son contenu.texdans le fichier parent. Cette commande peut s’écrire:\NewDocumentCommand{\PdbInclude}{m}{ \group_begin: \file_input:n {\c_pdb_path_tl #1.tex} \group_end: }
Important
Comme le fichier temporaire crée lors de la compilation n’est pas modifiable par
l’utilisateur, il faut que la classe auto_latex contienne toutes les définitions,
commandes et environnement nécessaires. Dans l’exemple donnée, l’environnemnt exercise
doit aussi être définit.
Classes personnelles
Dans l’exemple de série d’exercices, la classe physperso prend
comme option le chemin de la base de donnée et définit la commande \PdbExercise. Cette
commande est similaire à la commande \PdbInclude de physauto mais peut être
spécialisée pour l’inclusion d’exercices. Il suffit pour cela de définir un autre
comportement pour l’environnement exercise.
Note
En définissant habilement les classes \(\LaTeX\), il est possible d’obtenir différents
rendus pour un même PDBFile. Par exemple, le rendu de l’environnement “exercise”
peut être différent dans une série d’exercice, dans un test ou dans un polycopié.
Voici ma configuration en exemple.