Bien que ConTeXt possède des outils comme \framed pour entourer du texte, le type d'encadrement reste limité et MetaFun permet de faire des boites beaucoup plus originales et fun.
Il peut être utile de relire les fiches consacrées aux frame (Mettre un paragraphe en évidence) et à overlay (Superposer des textes ou des images).
Une autre remarque : dans le manuel de MetaFun Hans Hagen précise qu'il vaut mieux dans ce cas utiliser \startuniqueMPgraphic {nom } à la place de \startuseMPgraphic {nom}, je n'ai pas vraiment compris pourquoi mais dans les exemples suivants, souvent repris du manuel, je vais utiliser \startuniqueMPgraphic {nom}.
Pour expliquer le fonctionnement de la méthode on ne va pas faire preuve de beaucoup d'originalité on va se contenter d'un cercle rouge à fond gris. Nous allons d'abord fabriquer la forme à l'aide de MetaFun et de la commande \startuseMPgraphic {nom} :
Pour te montrer à quoi aller ressembler notre boite je lui ai attribué des dimensions arbitraires (4cm et 1cm) mais si l'on veut que notre boite soit adaptée à notre texte, il faut lui fournir les dimensions du texte. On le fait avec les commandes \overlaywidth et \overlayheight qui sont fourni par la commande \framed et qui correspondent respectivement à la longueur et la hauteur du texte (ou tout autre objet) à encadrer. Donc le véritable code est :
La seconde étape consiste à enregistrer note dessin comme une superposition (overlay)
Ce code est à mettre dans le préambule du document. Maintenant on peut utiliser notre encadrement :
Finalement elle n'est pas aussi belle que souhaitée. Le premier problème est le cadre noir. En effet on a fait une superposition de notre beau cadre mais on a pas remplacer le cadre fait par \framed pour ce faire il faut utiliser l'option frame=off
Le texte est toujours trop colé au cadre. Pour améliorer cet aspect il faut jouer avec l'option offset=
de \framed
À la place de offset=
tu peux également utiliser frameoffset=
et backgroundoffset=
qui ne donne pas exactement les mêmes résultats.
Si ton cadre n'a pas de fond n'oublies pas que tu peux jouer avec le calque foreground
pour placer ton texte au-dessus ou en-dessous du cadre (revoir la fiche Superposer des textes ou des images).
De la même façon que tu passes les dimensions de ton objet à MetaPost par les commandes \overlaywidth et \overlayheight tu peux transmettre les couleurs de fond et de trait ainsi que son l'épaisseur avec les commandes suivantes :
\overlaydepth
: la profondeur si elle est définie ;\overlaycolor
: la couleur du fond ;\overlaylinecolor
: la couleur du trait ;\overlaylinewidth
: l'épaisseur du trait.Voici l'exemple du manuel MetaFun :