Lorsque je prépare un examen, je souhaite toujours générer le sujet et sa correction. Et ce que je veux faire c’est générer d’un coup deux PDF, l’un avec le sujet seul, l’autre avec le sujet et les éléments de correction au fur et à mesure des questions.

Est-il possible de générer les deux PDF avec un seul source du type de celui qui suit, un PDF sans le contenu des environnements Solution, l’autre avec ?

\documentclass{article}
\newenvironment{Exercice}{}{}
\newenvironment{Solution}{}{}

\begin{document}
\begin{Exercice}
  \begin{itemize}
  \item Ma question.
     \begin{Solution}
     Ma solution. 
     \end{Solution}
  \end{itemize}
\end{Exercice}
\end{document}

Posée 18 Avr '22, 21:26

Maxime's gravatar image

Maxime ♦
1.3k31638
Taux d'acceptation : 58%

Modifiée 18 Avr '22, 21:34

Je réponds à ma propre question car j’ai trouvé une solution qui me satisfait, mais je suis preneur de meilleur !

(18 Avr '22, 21:27) Maxime ♦ Maxime's gravatar image

Une variation de ta solution (à laquelle il manque je pense \usepackage{versions}) reposant sur un booléen plutôt que sur une commande :

% Fichier `examen.tex`
\documentclass{article}
\usepackage{versions}

\newenvironment{Exercice}{}{}

\ifsolution
  \newenvironment{Solution}{}{}
\else
  \excludeversion{Solution}
\fi

\begin{document}
\begin{Exercice}
  \begin{itemize}
  \item Ma question.
     \begin{Solution}
     Ma solution.
     \end{Solution}
  \end{itemize}
\end{Exercice}
\end{document}

et sur un makefile :

enonce:
    pdflatex -jobname="enonce" "\newif\ifsolution\solutionfalse\input{examen}"

correction:
    pdflatex -jobname="correction" "\newif\ifsolution\solutiontrue\input{examen}"

all:
    make enonce
    make correction

Ainsi, en ligne de commandes, il suffit de saisir make suivi de ⭾ pour que soient proposées les cibles enonce, correction et all, puis de commencer à saisir les premières lettres de l'une ou l'autre pour bénéficier de l'autocomplétion et enfin, lorsque c'est complet, de saisir ↵ pour lancer la compilation correspondante.

Lien permanent

Publiée 18 Avr '22, 22:19

denis's gravatar image

denis ♦♦
7.0k1510
Taux d'acceptation : 52%

Et voilà meilleur ! Merci Denis

(19 Avr '22, 10:31) Maxime ♦ Maxime's gravatar image

Une solution qui me satisfait consiste à utiliser le package version et un script bash pour la compilation.

Le script bash

pdflatex examen.tex
pdflatex -jobname="correction" "\\newcommand*\\afficheCor{b}\\input{examen}"

et le source

\documentclass{article}
\usepackage{versions}
\newenvironment{Exercice}{}{}

\unless\ifdefined\afficheCor
  \excludeversion{Solution}
\else
  \newenvironment{Solution}{}{}
\fi

\begin{document}
\begin{Exercice}
  \begin{itemize}
  \item Ma question.
     \begin{Solution}
     Ma solution. 
     \end{Solution}
  \end{itemize}
\end{Exercice}
\end{document}
Lien permanent

Publiée 18 Avr '22, 21:28

Maxime's gravatar image

Maxime ♦
1.3k31638
Taux d'acceptation : 58%

Modifiée 19 Avr '22, 11:35

Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.