Superposer des textes ou des images (overlay)

Fleuron

Il y a plusieurs façons de faire qui dépendent du résultat souhaité.

overlays

L'environnement \startoverlay permet d'empiler les éléments strictement les uns au-dessus des autres, ils sont centrés horizontalement et verticalement :

\starttext
\startoverlay
{\red Bébert}
{\green Lafiche}
{\blue le roi des fiches}
\stopoverlay
\stoptext

Bien entendu l'ordre des commandes influe sur l'ordre affiché :

\starttext
\startoverlay
{\blue le roi des fiches}
{\green Lafiche}
{\red Bébert}
\stopoverlay
\stoptext

Bon c'est pas très visible sur cet exemple mais on en verra un exemple plus parlant plus tard.

Cet environnement est surtout utile pour placer un court texte (sans saut de ligne) sur une image :

\starttext
\startoverlay
{\externalfigure[cow]}
{\rotate[rotation=42]{\red Fetchez la vache!}}
\stopoverlay
\stoptext

\starttext
\startoverlay
{\rotate[rotation=42]{\red Fetchez la vache!}}
{\externalfigure[cow]}
\stopoverlay
\stoptext

L'influence de l'ordre de saisie est plus perceptible sur cet exemple.

Si tu veux superposer un élément sur un paragraphe de texte il faut employer une autre méthode.

defineoverlay

\defineoverlay[nom][{commandes}]

Les commandes doivent être mise entre {}

Permet de définir des niveaux que tu pourras appliquer à l'aide de l'option backgroud de commandes comme \framed ou \startframedtext. Je te renvoie à la fiche Mettre un paragraphe en évidence pour une explication de \startframedtext.

Dans l'exemple suivant je vais placer l'élément suivant :

\rotate[rotation=42]{\red Explication}

sur ce texte :

Je vais donc définir un niveau qui contient Explication :

\defineoverlay[expli][{\rotate[rotation=42]{\red Explication}}]

Puis je vais placer mon texte dans une frame et je vais appliquer mon Explication à l'aide de l'option background.

\defineoverlay[expli][{\rotate[rotation=42]{\red Explication}}]
\starttext \startframedtext[middle][frame=off,background=expli]
Quel est la réplique exacte du soldat français dans le film des Monthy Python, Sacré Graal (Holy Grail) ?
"Faites chier la vache !"
"Faites péter la vache !"
"Faites chercher la vache !"
En fait c'est "Fetchez la vache!" du franglais pour "allez chercher la vache" de "to fetch" en anglais qui veut dire "aller chercher"
\stopframedtext
\stoptext

On obtient :

Si tu regardes de près, tu te rends compte que le texte est au-dessus de Explication. Pour plus de lisibilité je vais remplacer Explication par une barre rouge :

\defineoverlay[expli][{\rotate[rotation=42]{\blackrule[height=1cm,width=5cm,color=red]}}]

Une petite explication s'impose. En fait background possède deux autres niveaux implicites :

Regarde ce qui ce passe si je positionne foreground avant expli :

\defineoverlay[expli][{\rotate[rotation=42]{\blackrule[height=1cm,width=5cm,color=red]}}]
\starttext
\startframedtext[middle][frame=off,background={foreground,expli}]
Quel est la réplique exacte du soldat français dans le film des Monthy Python, Sacré Graal (Holy Grail) ?
"Faites chier la vache !"
"Faites péter la vache !"
"Faites chercher la vache !"
En fait c'est "Fetchez la vache!" du franglais pour "allez chercher la vache" de "to fetch" en anglais qui veut dire "aller chercher"
\stopframedtext
\stoptext

Si j'ajoute un niveau appelé barre défini comme suit :

\defineoverlay[barre][{\blackrule[height=8cm,width=2cm,color=orange]}}]

et si je mets une couleur de fond verte :

\defineoverlay[expli][{\blackrule[height=8cm,width=2cm,color=orange]}}]
\defineoverlay[barre][{\rotate[rotation=42]{\blackrule[
height=1cm,width=5cm,color=red]}}]
\starttext
\startframedtext[middle][frame=off,background={
color,barre,foreground,expli},backgroundcolor=green]
Quel est la réplique exacte du soldat français dans le film des Monthy Python, Sacré Graal (Holy Grail) ?
"Faites chier la vache !"
"Faites péter la vache !"
"Faites chercher la vache !"
En fait c'est "Fetchez la vache!" du franglais pour "allez chercher la vache" de "to fetch" en anglais qui veut dire "aller chercher"
\stopframedtext
\stoptext

Si je mets background={color,foreground,barre,expli}, j'obtiens :