Le 11 août 2022 à 13:39, Gerard_F xyz@xyz.tld a écrit :
Merci Michel pour cette réponse, très complète et quelque peu … effrayante ! pour moi 
Je vais quand même regarder cela d’un peu plus près ! Il y a quelque temps que je tourne autour de “makeatletter” sans trop bien comprendre le concept (pas trop fouillé non plus !)
En pratique il suffit de savoir que pour utiliser une commande dont le nom contient des @ il faut mettre le passage considéré entre les balises \makeatletter \makeatother
Cette manip n’est plus nécéssaire à l’intérieur d’un fichier de classe (extension .cls) ou un package (extension.sty) ou dans les fichiers qui servent à définir le format latex.
Ça permet aux auteurs de package de faire les malins en mettant des trucs qui font peur dans leurs fichiers. La commande n’a pas à être documentée et les utilisateurs l’utilisent à leurs risques et périls.
Quant à l’explication détaillée, il faut comprendre que pour TeX, chaque caractère appartient à une catégorie et une seule définie par un code numérique (de 0 à 15), le \catcode (que l’on peut changer, en général à ses risques et périls).
\catcode 0 c’est le caractère d’échappement, normalement le \ il sert à commencer un nom de commande et si l’on veut obtenir un vrai backslash il faut saisir un truc comme \textbackslash ou \backslash.
\catcode 1 début de groupe, normalement {, ({ pour obtenir une accolade ouvrante) ;
\catcode 2 fin de groupe, normalement }, (} pour obtenir une accolade ouvrante) ;
En supposant que vous permutiez les deux \catcode il faudrait ensuite écrire des choses comme \chapter}Livre 1{, ça serait bien pour tromper l’ennemi.
Bon le $ le % ont aussi un \catcode qui en fait des choses à part je vous laisse deviner les quelles
Les 52 lettres de A à Z et de a à z ont un \catcode égal à 11 (au départ, mais on évite de changer ça, sauf si on veut faire le malin)
Les autres caractères comme justement @ ont un \catcode égal à 12 (sauf si un rôle spécial leur est dévolu, comme dans le cas de $, {, } et leurs copains).
Or, un nom de commande ne peut contenir que des caractères de \catcode égal à 11, donc a priori des lettres. Sauf si on met le \catcode des autres à 11
Donc voilà \makeatletter autorise @ dans un nom de commande en mettant son \catcode à 11 et \makeatother remet prudemment ce \catcode à 12.
On n’a pas besoin de savoir tout ça pour utiliser \latex, c’est ça qui est bien. Et on peut se dire aussi que la zénitude s’obtient est écrivant \let\def\relax.
Ceci dit, c’est un document perso, je n’ai pas d’obligation, mais le problème avec LaTeX c’est que je sais que c’est possible !
Le 11/08/2022 à 10:09, Michel Bovani a écrit :
Faudrait un cahier des charges plus précis
Je n’ai pas prévu d’utiliser les label, ref, etc. Je ne fais que TOC et INDEX. Mon souhait c’est d’obtenir un bon header (cf image jointe), avec le titre du chapitre (Montaigne) à gauche, le Livre à droite.
Vous voulez dire que vous utilisez Montaigne comme titre de chapitre et qu’ensuite les chapitres s’écrivent Livre 1, Livre 2, etc. Et que donc la commande \chapter correspond à plusieurs niveaux de structuration hiérarchique ?
C’est diabolique, ça ! (Le malin, toujours lui !)
–
Michel Bovani
xyz@xyz.tld
https://paroles.mathriochka.net