Voici trois méthodes.
1- Devoir et son corrigé dans le même pdf.
Commencer par créer un fichier .tex comme suit (Attention: `\corrigetrue` est déplacée)
\documentclass[french]{article}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{verbatim}
\newif\ifcorrige
\newcounter{nbrlignes}
\newcounter{nbrpointilles}
\newcommand{\completerparpointilles}[1]{%
\loop
\ifnum\value{nbrlignes}<#1
\stepcounter{nbrlignes}%
\noindent\houdotfill\par
\repeat}
\providecommand{\houdotfill}{}
\providecommand{\reponse}{}
\newcommand{\houdotfill}{}
\newcommand{\reponse}{}
%\linespread{1.2}
\begin{document}
\input{devoiravril}
\newpage
\corrigetrue
\input{devoiravril}
\end{document}
Créer un deuxième fichier `devoiravril.tex` dont le contenu est
\ifcorrige
\renewcommand{\houdotfill}{\hfill}
\renewenvironment{reponse}[1][1]
{%
\setcounter{nbrpointilles}{#1}%
\par\noindent
}
{%
\par\setcounter{nbrlignes}{\prevgraf}%
\completerparpointilles{\value{nbrpointilles}}%
}
\else
\renewcommand{\houdotfill}{\dotfill}
\renewenvironment{reponse}[1][1]
{\par\setcounter{nbrlignes}{0}%
\completerparpointilles{#1}%
\comment}
{\endcomment
\par}
\fi
1 - Quelle était la population mondiale en 2013 ?
\begin{reponse}[1]
La population en 2013 était de 7.2 milliards d'habitants.
\end{reponse}
2 - Quelle était la population mondiale en 2013 ?
\begin{reponse}[5]
Afin d'éviter des sauts de page intempestifs et garder le même nombre de pages sur mon document, je souhaite que le nombre de lignes entre mes questions ne changent pas. En effet, il arrive qu'à une ligne près, une nouvelle page soit créée ; et c'est ce que je veux éviter.
\end{reponse}
3 - Quelle était la population mondiale en 2013 ?
\begin{reponse}[7]
Afin d'éviter des sauts de page intempestifs et garder le même nombre de pages sur mon document, je souhaite que le nombre de lignes entre mes questions ne changent pas. En effet, il arrive qu'à une ligne près, une nouvelle page soit créée ; et c'est ce que je veux éviter.
\end{reponse}
oui
2- Devoir et son corrigé sur 2 pdf. Vous avez besoin de créer deux fichiers :
un fichier `devoiravril.tex` comme suit, (Attention: `\corrigetrue` est remplacée par `\corrigeounon`).
\documentclass[french]{article}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{verbatim}
\newif\ifcorrige
\corrigeounon % \corrigeounon peut être \corrigetrue ou \corrigefalse
\newcounter{nbrlignes}
\newcounter{nbrpointilles}
\newcommand{\completerparpointilles}[1]{%
\loop
\ifnum\value{nbrlignes}<#1
\stepcounter{nbrlignes}%
\noindent\houdotfill\par
\repeat}
\ifcorrige
\newcommand{\houdotfill}{\hfill}
\newenvironment{reponse}[1][1]
{%
\setcounter{nbrpointilles}{#1}%
\par\noindent
}
{%
\par\setcounter{nbrlignes}{\prevgraf}%
\completerparpointilles{\value{nbrpointilles}}%
}
\else
\newcommand{\houdotfill}{\dotfill}
\newenvironment{reponse}[1][1]
{\par\setcounter{nbrlignes}{0}%
\completerparpointilles{#1}%
\comment}
{\endcomment
\par}
\fi
%\linespread{1.2}
\begin{document}
1 - Quelle était la population mondiale en 2013 ?
\begin{reponse}[1]
La population en 2013 était de 7.2 milliards d'habitants.
\end{reponse}
2 - Quelle était la population mondiale en 2013 ?
\begin{reponse}[5]
Afin d'éviter des sauts de page intempestifs et garder le même nombre de pages sur mon document, je souhaite que le nombre de lignes entre mes questions ne changent pas. En effet, il arrive qu'à une ligne près, une nouvelle page soit créée ; et c'est ce que je veux éviter.
\end{reponse}
3 - Quelle était la population mondiale en 2013 ?
\begin{reponse}[7]
Afin d'éviter des sauts de page intempestifs et garder le même nombre de pages sur mon document, je souhaite que le nombre de lignes entre mes questions ne changent pas. En effet, il arrive qu'à une ligne près, une nouvelle page soit créée ; et c'est ce que je veux éviter.
\end{reponse}
oui
\end{document}
Maintenant créer le deuxième fichier, c'est un fichier batch `devoircompilateur.bat` sous windows (ou équivalent)
pdflatex -jobname=devoiravril \let\corrigeounon\corrigefalse \input{devoiravril}
pdflatex -jobname=corrigeavril \let\corrigeounon\corrigetrue \input{devoiravril}
Il suffit de double-cliquer ce fichier ou lancer dans un terminal et le tour est joué.
3 - Un fichier `.tex`, un fichier `.pdf` (À compléter)
Cet méthode est une version automatisée de la première méthode : c'est LaTeX, avec son environnement `filecontents` qui va créer le deuxième fichier `devoiravril.tex`. L'option `force` à utiliser seulement lorsque il y des modifications
sur le fichier `devoiravril.tex`
\documentclass[french]{article}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{verbatim}
\newif\ifcorrige
\newcounter{nbrlignes}
\newcounter{nbrpointilles}
\newcommand{\completerparpointilles}[1]{%
\loop
\ifnum\value{nbrlignes}<#1
\stepcounter{nbrlignes}%
\noindent\houdotfill\par
\repeat}
\providecommand{\houdotfill}{}
\providecommand{\reponse}{}
\newcommand{\houdotfill}{}
\newcommand{\reponse}{}
%\linespread{1.2}
\begin{document}
\begin{filecontents*}[nosearch,force]{devoiravril}
\ifcorrige
\renewcommand{\houdotfill}{\hfill}
\renewenvironment{reponse}[1][1]
{%
\setcounter{nbrpointilles}{#1}%
\par\noindent
}
{%
\par\setcounter{nbrlignes}{\prevgraf}%
\completerparpointilles{\value{nbrpointilles}}%
}
\else
\renewcommand{\houdotfill}{\dotfill}
\renewenvironment{reponse}[1][1]
{\par\setcounter{nbrlignes}{0}%
\completerparpointilles{#1}%
\comment}
{\endcomment
\par}
\fi
1 - Quelle était la population mondiale en 2013 ?
\begin{reponse}[1]
La population en 2013 était de 7.2 milliards d'habitants.
\end{reponse}
2 - Quelle était la population mondiale en 2013 ?
\begin{reponse}[5]
Afin d'éviter des sauts de page intempestifs et garder le même nombre de pages sur mon document, je souhaite que le nombre de lignes entre mes questions ne changent pas. En effet, il arrive qu'à une ligne près, une nouvelle page soit créée ; et c'est ce que je veux éviter.
\end{reponse}
3 - Quelle était la population mondiale en 2013 ?
\begin{reponse}[7]
Afin d'éviter des sauts de page intempestifs et garder le même nombre de pages sur mon document, je souhaite que le nombre de lignes entre mes questions ne changent pas. En effet, il arrive qu'à une ligne près, une nouvelle page soit créée ; et c'est ce que je veux éviter.
\end{reponse}
oui
\end{filecontents*}
\input{devoiravril}
\newpage
\corrigetrue
\input{devoiravril}
\end{document}