Ajouter des flèches entre des mots d’un paragraphe

Sous TikZ, on sait depuis longtemps que créer des connecteurs entres des boites de texte est très facile. Mais qu’en est-il si les mots (ou objets) à connecter entre eux sont placés au sein d’un paragraphe ? Aujourd’hui, je vais vous montrer comment ajouter ses flèches en surcouche du texte.

Exemple

Exemple de flèches par dessus un paragraphe
Exemple de flèches par dessus un paragraphe

Code

\usepackage{tikz}
\tikzset{every picture/.style={execute at begin picture={\shorthandoff{:;!?};}}}
\tikzstyle{every picture}+=[remember picture]
\tikzstyle{na} = [shape=rectangle,inner sep=0pt]
 
% Commandes pour les flèches textuelles
\newcommand{\ptFleche}[2]{		% Déclaration d'une extrémité de flèche
    \tikz[baseline=(#1.base)]\node[na](#1){#2};
  }
\newcommand{\Fleche}[5][thick]{	% Dessin de la flèche
    \begin{tikzpicture}[overlay]
        \path[->,#1](#2) edge [out=#4, in=#5] (#3);
    \end{tikzpicture}
  }
 
\begin{document}
Je dessine une flèche entre le mot\ptFleche{mot1}{toto}et un autre mot beaucoup plus loin, par exemple\ptFleche{mot2}{lapin}.
    \Fleche{mot1}{mot2}{-90}{-20}
\end{document}

Cette exemple donnera donc :

Exemple minimal d'utilisation des flèches textuelles
Exemple minimal d’utilisation des flèches textuelles

 

Explications

Les points de départ et d’arrivée de chaque flèche sont définis par la commande \ptFleche. Le premier argument est le label à attribuer audit point, le deuxième étant simplement le mot à afficher. Il est intéressant de distinguer le label du contenu, car celui-ci peut alors être de tout type (ensemble de mots, équation etc.).

Ensuite, il vous faut placer la commande \Fleche{mot1}{mot2}{-90}{-20}, où les différents arguments sont :

  1. label du point de départ
  2. label du point d’arrivée
  3. angle de départ
  4. angle d’arrivée

Cette commande peut être placée à peu près n’importe où après la définition des labels. Comme on est un peu malins, on a pensé à utiliser un paramètre optionnel lors de la définition de cette commande, paramètre qui sert à modifier facilement le style de flèche. Exemple pour le cas utilisé en introduction :

\Fleche[red,thick,dashed]{latex}{tikz}{-90}{0}
\Fleche[blue,thick]{sigma}{dolor}{180}{90}

Puisque nous utilisons ici des labels, il faut compiler deux fois pour que LaTeX commence par mettre à jour les coordonnées des points de départ avant de pouvoir positionner tracer les flèches.

Utilisation dans Beamer

Naturellement, je vous déconseille d’utiliser une telle esbroufe dans un rapport ou un article un minimum scientifique… par contre, dans Beamer ou un poster, on peut se faire plaisir ! Exemple donc d’utilisation de cette commande dans un Beamer :

% Avec le même préambule que précédemment
\begin{block}{Matrice de déformation}
  \begin{equation}
    \mathbb{E}_{r\theta z} =
    \begin{pmatrix}
      \ptFleche{valeur2}{-0,9698} & 0,1704                     & -0,0149\\
      0,1704                      & -0,0223                    & 0,0894\\
      -0,0149                     & \ptFleche{valeur1}{0,0894} & 0,9922
    \end{pmatrix}
    \cdot\varepsilon_{ZZ}
  \end{equation}
\end{block}
\begin{exampleblock}{}<2->
  \begin{equation*}
      \ptFleche{equation2}{$\varepsilon_{rr}$} = \frac{\partial U_r}{\partial r}
    \qquad
      \ptFleche{equation1}{$\varepsilon_{\theta z}$} =
      \frac{1}{2}\cdot\left(
	    \frac{\partial U_\theta}{\partial z}
	      + \frac{1}{r}\cdot\only{\cancel}{\frac{\partial U_z}{\partial \theta}}
      \right)
  \end{equation*}
  \only<3->{
    \Fleche[->,blue,thick]{valeur2}{equation2}{180}{180}
    \Fleche[->,red,thick]{valeur1}{equation1}{-90}{90}
  }
  \end{exampleblock}
Ajout de flèches dans une présentation Beamer
Ajout de flèches dans une présentation Beamer

Comme on le voit dans le code ci-dessus, il est même possible de faire des apparitions progressives des flèches grâce aux overlays.

Ajouter des flèches entre des mots d’un paragraphe
4.9 (97.78 %) 9 votes
  • celeberyn

    Bonjour,
    Je suis en train de faire une présentation et j’aimerais beaucoup mettre des flèches exactement de cette manière. Cependant le préambule me donne plein d’erreur à la compilation. Faut-il faire quelque chose de particulier pour que ça marche ?
    J’ai une undefined control sequence pour la ligne
    \tikzset{every picture/.style={execute at begin picture={\shorthandoff{:;!?};}}}

    En tout cas merci beaucoup pour ce code qui pourrait me sauver la vie !

    • Bonjour,
      Ca fonctionne chez moi avec le strict minimum, c’est-à-dire : \usepackage{tikz}…

      Tu es en classe Beamer ? Que se passe-t-il si tu commentes la ligne \tikzset{…} ?