Chaque année je remet à jours mes polycopiés des cours de mathématiques que je donne à l'IUT de Lannion. J'essaye pour chaque cours de créer des polycopiés les plus complets possibles (c'est le seul document que j'autorise au DS) contenant théorèmes, démonstrations, méthodes et surtout quelques exercices (souvent corrigés). Cette année j'ai décidé d'y ajouter une table des exercices, pour faciliter le travail personnel des étudiants, l'occasion de vérifier que LaTeX est un système de création de document infiniment supérieur à n'importe quel autre traitement de texte.
Mes exercices sont tous placés dans un environnement spécifique, qui est défini comme suit dans le fichier *.sty qui contient toutes mes macros personnelles :
\usepackage{frcursive} \newcounter{Ex}[section] \renewcommand{\theEx}{\arabic{section}.\arabic{Ex}} \newtheorem{Exem}[Ex]{\smallpencil } \newenvironment{exem}[1]{% \begin{Exem}{\bf #1}% \begin{cursive}} {\end{cursive}\end{Exem}}
il s'utilise dans le corps du document de la manière suivante:
\begin{exem}{Titre} texte de l'exercice ... \end{exem}
ce qui donne dans le document final quelque-chose de la forme suivante :
(le symbole "crayon" est généré par la commande \smallpencil qui peut être obtenue via le package dingbat ). Pour réaliser cette modification, avec n'importe quel logiciel de traitement de texte, il aurait certainement fallu, au pire, lister un a un les exercices pour les mettre dans une table ou, au mieux, modifier un a un les exercices pour que leur liste soit récupérable dans une table des matières. Avec Latex il suffit de modifier légèrement la définition de l'environnement exem pour récupérer la liste des exercices en utilisant la commande \addcontentsline :
\usepackage{frcursive} \newcounter{Ex}[section] \renewcommand{\theEx}{\arabic{section}.\arabic{Ex}} \newtheorem{Exem}[Ex]{\smallpencil } \newenvironment{exem}[1]{% \begin{Exem}{\bf #1}% \addcontentsline{lex}{Exem}{\protect\numberline{\theEx}{#1}}% \begin{cursive}} {\end{cursive}\end{Exem}}
Il reste à créer la commande qui va afficher la liste des exercices à l'endroit souhaité :
\newcommand{\listofexercices}{% \addcontentsline{toc}{chapter}{Liste des Exercices}% \section*{\listexosname}\@starttoc{lex}} \newcommand{\l@Exem}{% \@dottedtocline{0}{0em}{2.3em}} \newcommand{\listexosname}{\smallpencil Liste des exercices}
Maintenant il suffit d'ajouter \listofexercices là où l'on désire insérer la table des exercices pour obtenir une liste comme ci-dessous :
Vous allez me dire "c'est bien beau tout ça, mais il faut déjà un bon niveau en LaTeX pour concevoir une telle macro, et moi j'ai pas le niveau et pas le temps de chercher!" . Je vous répondrais que moi non plus j'ai pas le niveau, mais ce qu'il y a de bien avec LaTeX c'est que quand on arrive pas à le faire soit même on demande (gentiment) comment faire à ceux qui sont plus fort que vous et ils vous donneront la réponse et en plus au passage vous apprendre à comprendre un peu mieux le fonctionnement de LaTeX :-) Pour ma part je pose toujours mes questions relatives à LaTeX sur fr.comp.text.tex et cette fois encore j'ai eu la réponse en moins d'une heure ... moins de temps que pour écrire cette liste d'exercices à la main , et moins que le temps nécessaire pour trouver comment faire ça avec Word, OpenOffice, et autre traitement de texte Wysiwyg!
Chouette package (frcursive), merci pour le tuyau.
RépondreSupprimerfrcursive c'est pour suggérer aux étudiants qu'ils devraient écrire comme ça quand ils rédigent ... efficacité limité, mais au moins c'est joli :-) Il y a aussi chalkduster qui imite l'écriture "à la craie" et affecte l'écriture en mode math, mais je préfère frcursive qui est plus aérée.
RépondreSupprimerJe vais essayer la craie aussi alors (mais c'est un package juste pour le fun je suppose).
RépondreSupprimer