Je ne réussis pas à trouver la commande indiquant à TikZ de placer les pointes de flèche en dehors du tracé de celle-ci, et mes recherches sont restées infructueuses.

Voici un ECM (compilé avec pdflatex --shell-escape, il donne directement un fichier .png) :

Ouvrir dans l'éditeur Overleaf
\documentclass[tikz, border = 2 mm, convert={density=300,size=1080x800,outext=.png}]{standalone}
\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[light, largesmallcaps]{kpfonts}
\usetikzlibrary{arrows}
\usetikzlibrary{positioning,decorations.text}
\begin{document}
\fontfamily{jkpss}\selectfont{}
\begin{tikzpicture}
  \draw [<->, > = stealth, red] (0, 0) -- (2, 0) node [midway, fill = white] {1} ;
  \draw [yshift = -12, >-<, > = stealth, red] (0, 0) -- (2, 0) node [midway, fill = white] {2} ;
  \draw [yshift = -24, >-<, > = stealth, red] (-0.1, 0) -- (2.1, 0) node [midway, fill = white] {3} ;
  \draw [line width = 0.1] (0, 0.1) -- (0, -1) ;
  \draw [line width = 0.1] (2, 0.1) -- (2, -1) ;
  \draw [densely dotted, line width = 0.1] (0.1, -0.3) -- (0.1, -0.6) ;
  \draw [densely dotted, line width = 0.1] (1.9, -0.3) -- (1.9, -0.6) ;
  \end{tikzpicture}
\end{document}

On voit bien que la flèche numéro 2, qui a les mêmes coordonnées que la flèche numéro 1, désigne une distance plus courte ; et pour cause, ses pointes inversées empiètent sur la longueur du fût.

C'est la flèche numéro 3 qui désigne la même distance que la flèche numéro 1, mais pour ce faire j'ai modifié ses coordonnées.

Comment faire pour garder ces coordonnées et avoir les pointes de flèche au-delà du fût ?

Posée 10 Déc '18, 18:41

Pathe's gravatar image

Pathe ♦♦
7.5k43204251
Taux d'acceptation : 55%

Modifiée 10 Déc '18, 18:56

Je ne l'ai pas encore testé, mais le package tikz-dimline pourrait être la solution pour cette question. Voir page 5 en particulier.

(15 Jan '19, 04:15) NeferTiyi NeferTiyi's gravatar image

Ça marche aussi avec postaction. Les options red!50 et open sont juste là pour mettre la forme de la flèche en évidence.

Ouvrir dans l'éditeur Overleaf
\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{decorations.markings}

\begin{document}
\begin{tikzpicture}
  \tikzset{
%     myarrow/.tip={stealth}
    myarrow/.tip={
      Stealth[
        length=3pt, 
        red!50, 
        open
      ]
    }
  }

  \draw [yshift=5pt, red] 
        (0, 0) -- (2, 0) ;

  \draw [
    red,
    postaction={
      decorate,
      decoration={
        markings,
        mark=at position 0.5pt with {\arrow{myarrow}},
        mark=at position -0.5pt with {\arrowreversed{myarrow}},
%         mark=at position 0 with {\arrow{myarrow}},
%         mark=at position 1 with {\arrowreversed{myarrow}},
      }
    },
  ] (0, 0) -- (2, 0) node [midway, fill=white] {2} ;

  \begin{scope}[line width=0.1]
    \draw (0, 0.25) -- (0, -0.1) ;
    \draw (2, 0.25) -- (2, -0.1) ;
  \end{scope}
\end{tikzpicture}
\end{document}
Lien permanent

Publiée 11 Déc '18, 00:41

NeferTiyi's gravatar image

NeferTiyi
2412
Taux d'acceptation : 0%

@NeferTiyi et @blub : les deux solutions sont bien, mais aucune ne permet de dire « place la décoration de la flèche après le trait ».

Il faut toujours spécifier la place qu'occupe la flèche au sein du trait, et adapter la longueur de celui-ci en fonction.

(11 Déc '18, 19:49) Pathe ♦♦ Pathe's gravatar image

Pas exactement. Avec postaction, la longueur du trait n'est à aucun moment modifiée. On joue "seulement" sur la position de la flèche sur le trait. Avec mark=at position 0, le positionnement est relatif, on dit que la flèche est au tout début du trait. Vue l'épaisseur du tracé, le résultat est visuellement bizarre, mais le trait lui-même est de la longueur voulue.

(12 Déc '18, 01:56) NeferTiyi NeferTiyi's gravatar image

C'est-à-dire que la spécification de longueur \tikzset{myarrow/.tip={Stealth[length=3pt... ne joue pas. Ach so... Je n'avais pas pigé. Merci pour l'explication.

(12 Déc '18, 03:38) Pathe ♦♦ Pathe's gravatar image

Ah oui, ça peut prêter à confusion ! Au départ je voulais juste commenter la réponde de Blub en indiquant qu'il est possible de spécifier la longueur de la flèche et donc ne pas avoir à trouver empiriquement la valeur des shorten, et puis je suis partie sur autre chose et ai laissé ça...

(12 Déc '18, 04:31) NeferTiyi NeferTiyi's gravatar image
Ouvrir dans l'éditeur Overleaf
\documentclass[tikz,border=5mm]{standalone}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
  \draw [
    yshift = -12, >-< , 
    > = stealth, 
    red, 
    shorten >=-3pt, % <- changement
    shorten <=-3pt, % <- changement
  ] (0, 0) -- (2, 0) node [midway, fill = white] {2} ;
  \draw [line width = 0.1] (0, 0.1) -- (0, -1) ;
  \draw [line width = 0.1] (2, 0.1) -- (2, -1) ;
\end{tikzpicture}
\end{document}

alt text

Lien permanent

Publiée 10 Déc '18, 20:54

blub's gravatar image

blub
2265
Taux d'acceptation : 12%

Modifiée 10 Déc '18, 20:57

Votre réponse
(dés)activer l'aperçu

Suivre cette question

Par courriel :

Une fois que vous serez enregistré, vous pourrez souscrire à n'importe quelle mise à jour ici

Par flux RSS :

Réponses

Réponses et commentaires

Bases de Markdown

  • *italique* ou _italique_
  • **gras** ou __gras__
  • Lien ::[texte](http://url.com/ "Titre ")
  • Image : ?![alt texte](/path/img.jpg "Titre ")
  • Liste numérotée : 1. Foo 2. Bar
  • Pour ajouter un passage à la ligne, ajoutez deux espaces à l'endroit où vous souhaitez que la ligne commence.
  • Les balises HTML de base sont également prises en charge.