ConTeXt/Macros pour les cadres typographiques
← Cadres typographiques colorés avec MetaPost et ConTeXt • Sommaire • Macros pour les cadres typographiques • Apparat critique à plusieurs niveaux →
Macros pour les cadres typographiques
[modifier | modifier le wikicode]Cette page complète la page Cadres typographiques colorés avec MetaPost et ConTeXt. Elle s’intéresse non plus au rendu visuel des encadrés, mais à la structure des macros qui les rendent faciles à utiliser :
- rappeler le principe des macros simples dans ConTeXt ;
- séparer clairement le style (encadrés, MetaPost) du contenu (texte du wikilivre) ;
- définir des commandes conviviales comme
\Objectif{…},\Astuce{…},\Attention{…}; - organiser ces définitions dans un fichier d’environnement réutilisable ;
- permettre une modification ultérieure globale de la charte graphique des cadres.
1. Pourquoi des macros pour les encadrés ?
[modifier | modifier le wikicode]Sur la page précédente, les encadrés sont appelés directement par leurs noms techniques :
\startCadreInfo ... \stopCadreInfo;\startCadreAstuce ... \stopCadreAstuce;\startCadreAvertissement ... \stopCadreAvertissement.
C’est pratique, mais peu « éditorial » : le nom des styles (Info, Astuce, Avertissement) se retrouve dans le texte même du livre.
D’un point de vue didactique, il est souvent plus lisible de disposer de macros « métier » qui parlent le langage de l’ouvrage :
\Definition{…};\Exemple{…};\AstuceConTeXt{…};\AvertissementTechnique{…}.
L’idée générale est la suivante : les noms techniques restent dans un fichier d’environnement, les macros « lisibles » sont utilisées dans le texte.
Dans le wikilivre, le texte devrait parler de sens (Objectif, Astuce, Avertissement, Exemple), et non de mise en forme (CadreInfo, CadreAstuce, CadreRouge, CadreMetaPost, etc.).
Les noms techniques restent confinés dans un fichier d’environnement, que l’on peut modifier sans toucher au contenu.
2. Rappel : une macro simple en ConTeXt
[modifier | modifier le wikicode]Une macro simple se définit avec \define.
Par exemple :
% Une macro avec 1 argument (#1)
\define[1]\Important
{%
\bf IMPORTANT : #1%
}
\starttext
Texte normal. \Important{ce passage doit être remarqué.}
\stoptext
Commentaires :
\define[1]\Important{...}indique que la macro prend 1 argument (numéroté#1) ;- on peut utiliser
#1plusieurs fois dans la définition ; \define[2]\MaMacro{#1 ... #2}définirait une macro à 2 arguments, etc.
Pour les encadrés, on définit très souvent des macros à un seul argument : le texte à encadrer.
3. Séparer style et contenu avec un fichier d’environnement
[modifier | modifier le wikicode]Pour éviter de dupliquer les définitions d’encadrés, il est conseillé de créer un petit fichier d’environnement, par exemple : env-cadres.tex.
% env-cadres.tex
% Définition des couleurs, encadrés et macros conviviales.
% 1) Couleurs
\definecolor[CadreBleu][h=3a6cca]
\definecolor[CadreVert][h=3c9a4a]
\definecolor[CadreRouge][h=d94b3c]
\definecolor[CadreFondLeger][h=f7f7f7]
% 2) Encadrés "techniques" réutilisables
\defineframedtext
[CadreInfo]
[frame=on,
framecolor=CadreBleu,
background=color,
backgroundcolor=CadreFondLeger,
rulethickness=0.7pt,
corner=round,
offset=1ex,
width=broad]
\defineframedtext
[CadreAstuce]
[frame=on,
framecolor=CadreVert,
background=color,
backgroundcolor=CadreFondLeger,
rulethickness=0.7pt,
corner=round,
offset=1ex,
width=broad]
\defineframedtext
[CadreAvertissement]
[frame=on,
framecolor=CadreRouge,
background=color,
backgroundcolor=CadreRouge,
foregroundcolor=white,
rulethickness=0.7pt,
corner=round,
offset=1ex,
width=broad]
% 3) Macros "métier" qui appellent ces encadrés
\define[1]\Objectif
{\startCadreInfo #1 \stopCadreInfo}
\define[1]\Astuce
{\startCadreAstuce #1 \stopCadreAstuce}
\define[1]\Attention
{\startCadreAvertissement #1 \stopCadreAvertissement}
Dans les fichiers ConTeXt du livre, il suffit ensuite d’écrire :
\environment env-cadres
\starttext
\Objectif{Ce que le lecteur doit retenir absolument de cette section.}
\Astuce{Une manière rapide de tester la configuration de ConTeXt.}
\Attention{Un piège fréquent dans la compilation ou la gestion des polices.}
\stoptext
4. Concevoir une « API » d’encadrés
[modifier | modifier le wikicode]On peut aller plus loin et se construire une petite « API » de macros pour tous les types d’encadrés utilisés dans le livre :
\ObjectifsDeCetteSection{…}pour les blocs d’ouverture ;\AstuceConTeXt{…}pour les raccourcis de syntaxe ;\AvertissementTechnique{…}pour les pièges de compilation ;\NoteMethodologique{…}pour les apartés de méthode.
% Dans env-cadres.tex, après les \defineframedtext...
\define[1]\ObjectifsDeCetteSection
{\startCadreInfo #1 \stopCadreInfo}
\define[1]\AstuceConTeXt
{\startCadreAstuce #1 \stopCadreAstuce}
\define[1]\AvertissementTechnique
{\startCadreAvertissement #1 \stopCadreAvertissement}
Dans le code du livre :
\ObjectifsDeCetteSection{Cette section présente les bases de l’installation.}
\AstuceConTeXt{Pensez à mettre à jour la base de polices après chaque ajout.}
\AvertissementTechnique{Évitez de mélanger deux installations de ConTeXt sur le même système.}
- Choisissez des noms stables pour vos macros (
\Objectif,\Astuce, etc.). - Évitez de réutiliser des noms de commandes ConTeXt existantes (
\starttext,\section, etc.). - Rassemblez vos macros d’encadrés dans un ou deux fichiers d’environnement (par exemple
env-cadres.tex,env-meta-cadres.tex). - Documentez brièvement chaque macro dans des commentaires : vocation, type de contenu, public visé.
- Testez chaque changement de style d’encadré sur une « page galerie » avant de l’appliquer à tout le livre.
5. Intégrer des cadres MetaPost via des macros
[modifier | modifier le wikicode]Les encadrés dessinés avec MetaPost (page précédente) peuvent être utilisés de la même manière.
Supposons que la page Cadres typographiques colorés avec MetaPost et ConTeXt ait défini :
- un encadré
\startCadreArrondi ... \stopCadreArrondi; - un encadré
\startCadreDouble ... \stopCadreDouble.
On peut les encapsuler dans des macros plus parlantes :
% Dans env-cadres.tex, après les définitions MetaPost / overlays :
\define[1]\ImportantMetaPost
{\startCadreArrondi #1 \stopCadreArrondi}
\define[1]\EncadreLuxueux
{\startCadreDouble #1 \stopCadreDouble}
Dans le texte :
\ImportantMetaPost{Conclusion du chapitre : points essentiels à retenir.}
\EncadreLuxueux{Encadré de synthèse ou de citation importante.}
Ici encore, les macros servent de façade stable, tandis que l’implémentation (MetaPost, couleurs, épaisseurs de traits) peut évoluer sans toucher au contenu.
6. Articulation avec la page précédente
[modifier | modifier le wikicode]La présente page suppose que les encadrés (simples et MetaPost) ont déjà été définis, comme dans :
L’idée est de considérer cette page « Macros pour les cadres typographiques » comme le versant structuration :
- la page précédente s’occupe du dessin des cadres (couleurs, MetaPost, exemples visuels) ;
- la présente page se concentre sur la manipulation des macros (API conviviale, séparation style/contenu, fichiers d’environnement).
← Cadres typographiques colorés avec MetaPost et ConTeXt • Sommaire • Macros pour les cadres typographiques • Apparat critique à plusieurs niveaux →