LaTeX pour dyslexiques
======================

Date: 2020-10-24 16:51
Author: jdn06
Category: Formats libres
Tags: LaTeX, Dyslexie

Cela  faisait  un  moment  que  je  lisais  régulièrement,  chez  les
utilisateurs de  LaTeX, des  propos expliquant que  leur productivité
avait été  grandement améliorée  lorsqu’ils s’étaient mis  à utiliser
des outils de programmation tels que les Makefile ou Git.

Cet été, j’ai  finalisé un vieux projet qui m’a  amené à produire des
pdf d’un livre  rédigé en LaTeX dans une dizaine  de formats, afin de
le rendre  facile à lire  sur toutes  les tailles d’écran.  Seuls les
en-têtes  du livre  changeaient, le  contenu du  livre étant  dans un
fichier à  part, appelé par  une commande `\input{Texte}`.  Reste que
taper une vingtaine de fois `lualatex` et le nom du fichier est assez
fastidieux,  ce  qui m’a  poussé  à  m’intéresser  de plus  près  aux
Makefile —  et à les  adopter ensuite pour mes  productions scolaires
cette année. Pour  Git en revanche, je le trouve  peu adapté pour mon
utilisation professionnelle :  je synchronise déjà tous  mes fichiers
par Unison sur un système avec snapshots ZFS et je ne voyais pas bien
comment intégrer Git à tout cela.  Pourtant, la gestion de version me
paraissait utile et j’ai opté pour un outil plus frugal, RCS qui fera
peut-être l’objet d’un article à venir.

Pour l’heure, mon propos est de  décrire la manière dont les Makefile
m’ont permis  d’améliorer ma  productivité, lorsque je  dois produire
parallèlement des documents  en format classique et  en format adapté
aux élèves dyslexiques, c’est-à-dire  avec la police OpenDyslexic, un
agrandissement en format A3 et  éventuellement un nombre de questions
et un barème adaptés.

J’ajoute  à  l’en-tête  les  lignes   suivantes  pour  la  police  et
l’agrandissement :

   :::latex
   % Police
   \newfontfamily\policedys[Ligatures=TeX]{Open Dyslexic}

   % Agrandissement
   \pgfpagesuselayout{resize to}[a3paper,landscape]

Je modifie  l’environnement avec  lequel j’écris  le corps  de texte,
pour y insérer la police définie ci-dessus :

   :::latex
   % Environnement corpstexte pour police et numéros de ligne
   %\newenvironment{corpstexte}{\fontfamily{jkplos}\selectfont\linenumbers\resetlinenumber}
   \newenvironment{corpstexte}{\onehalfspacing\policedys\small\linenumbers\resetlinenumber}

S’il  s’agit  d’un  questionnaire,  je  crée  des  variables  qui  me
permettront  de  définir dans  l’en-tête  s’il  s’agit d’une  version
classique, d’une version dyslexique ou d’un corrigé :

   :::latex
   \newboolean{correction}
   \newboolean{dys}
   \setboolean{dys}{true}
   \setboolean{correction}{false}

Les    différents    fichiers     d’en-tête    se    terminent    par
`\input{monControle-Texte}` qui  va charger la partie  commune. Cette
partie  commune  pourra  intégrer  des  conditions  portant  sur  les
variables créées dans l’en-tête, grâce au paquet ifthen.

- Pour modifier le barème de la question :
`\question[\ifthenelse{\boolean{dys}}{3}{2}] Ma question`
La question  vaudra 3 points dans  la version dyslexique et  2 points
dans l’autre.

- Pour ne poser une question qu’aux non-dyslexiques :
`\ifthenelse{\boolean{dys}}{}{\question[1] Ma question}`

Chaque question  est accompagnée de  sa réponse, mais  celle-ci n’est
utilisée que  par le fichier  d’en-tête du corrigé, qui  commence par
`\documentclass[11pt,a4paper,answers]{exam}`, alors  que les versions
classiques et dyslexiques ne contiennent pas l’option `answers`.

La réponse est écrite dans un environnement
`\begin{solutionorlines}[9em]`
qui placera ici un espace vide de taille 9em dans la version contrôle
— pour que les  élèves répondent — et la solution  dans la version du
corrigé.

Pour  construire   ou  reconstruire   si  nécessaires   les  versions
classique,   dyslexique  et   corrigé   et   nettoyer  les   fichiers
intermédiaires, j’utilise donc un Makefile du type :

   NOM = monControle

   all : $(NOM).pdf $(NOM)-dys.pdf $(NOM)-corrigé.pdf

   $(NOM).pdf : $(NOM).tex $(NOM)-Texte.tex
           lualatex $(NOM).tex
           lualatex $(NOM).tex

   $(NOM)-dys.pdf : $(NOM)-dys.tex $(NOM)-Texte.tex
           lualatex $(NOM)-dys.tex
           lualatex $(NOM)-dys.tex

   $(NOM)-corrigé.pdf : $(NOM)-corrigé.tex $(NOM)-Texte.tex
           lualatex $(NOM)-corrigé.tex
           lualatex $(NOM)-corrigé.tex

   clean:
           rm -f $(NOM)*.aux  $(NOM)*.log  $(NOM)*.toc  $(NOM)*.out

Le fait d’utiliser une variable pour  le nom du contrôle me permet de
recopier le Makefile à chaque nouveau  contrôle et de ne modifier que
la variable. Il  me suffit alors de lancer un  petit `make all` suivi
d’un `make clean` pour mettre à jour les trois fichiers d’un coup !