Comment utiliser \ AtEndDocument avec l'examen de classe?

Sep 30 2020

L'utilisation de \ AtEndDocument produit une nouvelle page avec l'examen de classe, si elle n'est pas placée avant \ documentclass {examen}.

J'ai créé un package qui modifie certains éléments clés de la classe, mais le package doit écrire quelque chose à la fin du document pour fonctionner correctement. Pour être précis, il utilise \ glsaddallunused du package glossaries.

J'ai lu sur ce même site que l'utilisation de \ RequirePackage devrait fonctionner avant \ documentclass, mais même en utilisant \ RequirePackage pour charger les packages que j'utilise dans mon package, cela génère un tas d'erreurs (y compris à propos d'un package xkeyval chargé avant \ documentclass) :

Package xkeyval Error: xkeyval loaded before \documentclass. ...keyval loaded before \protect\documentclass}

Comment puis-je éviter cela pour ajouter des éléments sur ce qui aurait dû être la dernière page de mon dossier d'examen?

Réponses

2 DavidCarlisle Sep 30 2020 at 05:00

Il vous suffit d'ajouter le texte avant que la classe ajoute le saut de page au même hook

\AtEndDocument{bar}
\documentclass{exam}
\begin{document}
foo
\end{document}
1 Melchisedech Oct 02 2020 at 15:02

Grâce aux conseils de @DavidCarlisle, j'ai pu trouver une solution à mon problème: charger le package etoolbox et utiliser la fonction \ AtEndEnvironment {} {}.

MWE:

\documentclass{exam}
\usepackage{etoolbox}
\AtEndEnvironment{document}{some text or command}
\begin{document}
foo
\end{document}