Aller au contenu

ConTeXt/Graphisme avancé

Un livre de Wikilivres.
En travauxlink={{{link}}}

Cette page est en travaux. Tant que cet avis n'aura pas disparu, veuillez en considérer le plan et le contenu encore incomplets, temporaires et sujets à caution. Si vous souhaitez participer, il vous est recommandé de consulter sa page de discussion au préalable, où des informations peuvent être données sur l'avancement des travaux.

Objectifs de cette section
Cette page présente des usages plus avancés du graphisme dans ConTeXt. Elle explique :

  • comment utiliser MPcode pour produire des schémas complexes ;
  • comment tracer des chemins, courbes et diagrammes ;
  • comment créer des arrière-plans (backgrounds) vectoriels ;
  • comment composer des fonds de page décoratifs ou semi-transparents ;
  • comment combiner graphisme et mise en page (calques, overlays).

Graphisme avancé (schémas, fonds de page, arrière-plans)

[modifier | modifier le wikicode]

Après avoir découvert MPgraphics, il est naturel de passer à des techniques permettant de produire des schémas plus riches, des courbes complexes ou des éléments graphiques pouvant servir de fonds, bandeaux, filigranes, décors ou repères visuels.

ConTeXt intègre nativement MetaPost et fournit plusieurs environnements puissants, en particulier MPcode et MPpage.


1. MPcode : le MetaPost “pur” intégré

[modifier | modifier le wikicode]

MPcode permet d’insérer un dessin MetaPost directement dans le flux du document :

\startMPcode
draw (0,0)..(50,30)..(100,0) withcolor (0,0,1);
\stopMPcode

C’est l’outil central pour :

  • les courbes complexes,
  • les chemins Bézier,
  • les graphiques algorithmiques,
  • les diagrammes.

1.1 Exemple : tracé d’un schéma avec labels

[modifier | modifier le wikicode]
\startMPcode
pair A,B,C;
A := (0,0);
B := (80,20);
C := (40,60);

draw A--B--C--cycle withcolor (.2,.2,.7);
label(btex A etex, A shifted (0,-8));
label(btex B etex, B shifted (0,8));
label(btex C etex, C shifted (0,8));
\stopMPcode

Ici :

  • pair définit des points,
  • label utilise du texte TeX intégré grâce à btex…etex,
  • les flèches, segments, polygones s’obtiennent naturellement.

2. Travailler les courbes, chemins et transformations

[modifier | modifier le wikicode]

MetaPost excelle pour manipuler les chemins :

\startMPcode
path c;
c := (0,0)..(30,40)..(60,-10)..(100,30);

draw c withcolor (.7,0,0);
draw arrowhead rotated 180 shifted point 1 of c;
\stopMPcode

Explications :

  • path crée un chemin,
  • .. relie les points par courbes lissées,
  • arrowhead produit une flèche,
  • rotated, shifted, scaled permettent d’appliquer des transformations.

3. Créer un schéma complexe (exemple)

[modifier | modifier le wikicode]

Un schéma “réseau” ou “organigramme” peut se créer simplement :

\startMPcode
pickup pencircle scaled 1.2pt ;

path box;
box := unitsquare scaled 30;

for i=0 step 60 until 180:
  draw box shifted (i,0) withcolor .6white;
  label(btex Node \thei etex, (i+15,15));
endfor

drawarrow (15,30)--(75,30);
drawarrow (75,30)--(135,30);
\stopMPcode

4. Arrière-plans décoratifs avec MPcode

[modifier | modifier le wikicode]

ConTeXt permet d’insérer un dessin MetaPost comme **background**, répété ou unique.

4.1 Arrière-plan d’une page

[modifier | modifier le wikicode]
\defineoverlay[fondpage][\startMPcode
  fill fullcircle scaled 500 withcolor (.9,.95,1);
\stopMPcode]

\setupbackgrounds[page][background=fondpage]

4.2 Bandeau décoratif en haut/bas de page

[modifier | modifier le wikicode]
\defineoverlay[bandeau][\startMPcode
  fill (0,0)--(200,0)--(200,20)--(0,10)--cycle
  withcolor (.85,.9,1);
\stopMPcode]

\setupbackgrounds[text][top=bandeau]

5. Arrière-plans semi-transparents

[modifier | modifier le wikicode]

On peut créer des filigranes ou logos en transparence :

\startMPcode
fill fullcircle scaled 200
  withcolor transparent(1,.85, (0,0,1));
\stopMPcode

La syntaxe est :

withcolor transparent(<type>, <opacité>, <couleur>)

Type 1 = fusion alpha.


6. Décorations répétées : motifs et carrelages

[modifier | modifier le wikicode]

Pour répéter un motif sur la page :

\defineoverlay[damier][\startMPcode
  for i=0 step 20 until 200:
    for j=0 step 20 until 800:
      if odd(i+j): 
        fill unitsquare scaled 20 shifted (i,j) withcolor .9white;
      fi;
    endfor;
  endfor;
\stopMPcode]

\setupbackgrounds[page][background=damier]

Cela génère un effet “damier” léger.


7. Combiner graphisme et mise en page (overlays)

[modifier | modifier le wikicode]

Les **overlays** sont utiles pour superposer un dessin sur :

  • un titre,
  • une page entière,
  • une section spécifique.

Exemple sur un titre de chapitre :

\defineoverlay[fondchap][\startMPcode
  fill unitsquare xyscaled (200,30) withcolor (.8,.85,1);
\stopMPcode]

\setuphead[chapter][background=fondchap]

💡 Astuce
Lorsque vous créez un schéma complexe, testez-le d’abord avec \startMPcode dans un petit document isolé. Une fois satisfait, encapsulez-le dans \startuseMPgraphic pour le réutiliser.

⚠ Problème courant
Si un arrière-plan chevauche le texte :

  • réduisez la transparence ;
  • utilisez un gris clair ;
  • placez l’overlay uniquement sur les pages désirées avec \setupbackgrounds.

⚠ Avertissement
Les dessins très complexes peuvent ralentir la compilation dans un document long. Il est parfois préférable de générer un fichier vectoriel autonome et de l’insérer via \externalfigure.