Boucles imbriquées en débuts et fin de documents

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

Boucles imbriquées en débuts et fin de documents

Messagepar Samuel » Dimanche 25 Mai 2014, 22:29

Bonjour,

Je m'interroge sur un point qui m'agace grandement depuis plusieurs jours maintenant.

Je suis tombé sur un code qui m'a un peu intrigué : un collègue a voulu faire quelques macros en \latex{} pour automatiser certaines tâches. Notamment, avec un seul énoncé, faire deux sujets (A et B), juste en utilisant une macro \AB{texte quand c'est le sujet A}{texte quand c'est le sujet B}. De plus, il avait un dans le même esprit fait en sorte que le corrigé était tapé juste à la suite de l'énoncé, avec une macro \EC{énoncé}{corrigé}. Ainsi avec des boucles, il arrivait à faire sortir 4 doculents en un seul : Enoncé sujet A, énoncé sujet B, corrigé sujet A, corrigé sujet B.

Un exemple vaut mieux qu'un grand discours :

Code: Tout sélectionner
\documentclass[a4paper, 12pt, parskip=half]{scrartcl}
%\documentclass[a4paper, 12pt]{article}

\usepackage[utf8]{inputenc}
\usepackage[final]{graphicx}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{ifthen}
\usepackage{fancyhdr}
\usepackage{amsmath, amsfonts, amssymb}

% Commande \EC{}{} pour énoncé/corrigé.
\newcommand{\enoncorr}{E}
\newcommand{\EC}[2]{\ifthenelse{\equal{\enoncorr}{E}}{#1}{#2}}

% Commande \AB{}{} pour série A/B.
\newcommand{\serie}{C}
\newcommand{\AB}[2]{\ifthenelse{\equal{\serie}{A}}{#1}{#2}}

\begin{document}

% Boucle énoncé/corrigé. Remplacer "F" par "C" pour ne pas avoir de corrigé.
\whiledo{\not\equal{\enoncorr}{F}}
{
\renewcommand{\serie}{A}

% Boucle série A/B. Remplacer "C" par "B" pour ne pas avoir de série A/B.
\whiledo{\not\equal{\serie}{C}}
{

% En-tête. Supprimer " \hfill Série \AB{A}{B}" si nécessaire.
\chead{\textbf{\textsf{\EC{Travail écrit}{Corrigé} \no 3 \hfill Algèbre \hfill 21 mars 2010 \hfill 2M44 \hfill Série \AB{A}{B}}}}

% Pied de page pour l'énoncé et le corrigé.
\EC{\cfoot{}}{\cfoot{\thepage}}

\setcounter{page}{1}
\setcounter{section}{0}
\setcounter{PointCounter}{0}

% Bloc nom/feuilles/points/note (seulement sur l'énoncé).
\EC{
\noindent
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}llll@{}}
\textsf{Nom} & \textsf{Feuilles} & \textsf{Points} & \textsf{Note} \\
\fbox{\parbox[c][13 mm]{70 mm}{\hfill}} &
\fbox{\parbox[c][13 mm]{19 mm}{~1 +}} &
\fbox{\parbox[c][13 mm]{13 mm}{\hfill}} &
\fbox{\parbox[c][13 mm]{13 mm}{\hfill}} \\
\end{tabular*}

\vspace{3 mm}
}
{}

\begin{enumerate}
% Exercices.

\item
\EC{ % énoncé
Deux compagnies de taxi desservent la ville dans laquelle vous vous trouvez. La première facture 5 dollars pour la prise en charge et ensuite 50 cents par kilomètre parcouru, alors que la seconde facture \AB{4}{6} dollars pour la prise en charge et \AB{60}{30} cents par kilomètre parcouru.
\begin{enumerate}
\item Pour une course de 12 km, quelle est la compagnie la plus avantageuse ?\Point
\item Pour quelle distance parcourue les deux compagnies sont-elles au même prix ?\Point
\end{enumerate}
}
{ % corrigé
Représentation graphique de la situation:

\centerline{\AB{\includegraphics[width = 7 cm]{"Taxi A"}}{\includegraphics[width = 7 cm]{"Taxi B"}}}

\begin{enumerate}
\item Prix de la première compagnie: $5 + 12 \cdot 0.5 = 11$, \\ prix de la seconde: $\AB{4 + 12 \cdot 0.6 = 11.2}{6 + 12 \cdot 0.3 = 9.6}$, \\ donc la \AB{première}{seconde} compagnie est plus avantageuse\Point.
\item On résout l'équation $\AB{5 + 0.5 d = 4 + 0.6 d}{5 + 0.50 d = 6 + 0.3 d}$ pour trouver $d = \AB{10}{5}$\Point.
\end{enumerate}
}



{...}



\clearpage

\AB{\renewcommand{\serie}{B}}{\renewcommand{\serie}{C}}
}

\EC{\renewcommand{\enoncorr}{C}}{\renewcommand{\enoncorr}{F}}
}
\end{document}


Alors en m'inspirant un peu (beaucoup) de ça, j'ai voulu faire la même chose, mais dans une classe de document. Mon but est de pouvoir écrire ceci :

Code: Tout sélectionner
\documentclass[sujetAB,Corrige]{devoir}

\begin{document}
...
\end{document}
, donc en écrivant des choses dans \AtBeginDocument{...} et d'autres dans \AtEndDocument{...}. Les instructions utilisées par ce collègue étant des commandes, elle doivent contenir des { dans le \AtBeginDocument qui ne seront fermée par un } mais seulement dans le \AtEndDocument, ce qui pose un gros soucis.

Je me suis pencher alors, pour les boucles, sur des \loop imbriquées en \TeX{}, mais il ne fonctionne que si la seconde boucle est entre accolades, ce qui pose un réel problème... Comment faire SVP. Merci

Samuel
Samuel
Utilisateur
 
Messages: 8
Inscription: Jeudi 23 Janvier 2014, 10:53
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: boucles imbriquées en débuts et fin de documents.

Messagepar marco56 » Lundi 26 Mai 2014, 11:57

J'ai trouvé le code dont tu parles sur le net.
Pour ma part, j'utilise le package "versions.sty" et "answers".
Ensuite, pour inclure un environnement, il suffit de mettre par exemple :
Code: Tout sélectionner
% version Eleve
%\excludeversion{rep} % élève : on enlève les réponses aux activités
%\includeversion{espace} %élève : on met des espaces à la place des activités
%\includeversion{Eleve} % version élève
%\excludeversion{Prof} % version prof


% version Prof
\includeversion{rep} % prof : on met les réponses aux activités
\excludeversion{espace} % prof : on enlève des espaces à la place des activités
\excludeversion{Solution} % prof : on enlève les pages vides à la place des solutions
\excludeversion{Eleve} % version élève
\includeversion{Prof} % version prof
marco56
Giga-utilisateur
 
Messages: 765
Inscription: Jeudi 25 Novembre 2010, 22:10
Statut actuel: Actif et salarié | Enseignant

Re: Boucles imbriquées en débuts et fin de documents

Messagepar Samuel » Lundi 26 Mai 2014, 22:50

Merci pour ta réponse. Je vais me pencher sur ces packages. Ils semblent pouvoir faire ce que je veux (voir même plus...)
Samuel
Utilisateur
 
Messages: 8
Inscription: Jeudi 23 Janvier 2014, 10:53
Statut actuel: Actif et salarié | Enseignant


Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Ahrefs [Bot], Bing [Bot], Google Adsense [Bot], Grapeshot [Crawler] et 15 invités