TikZ `` à mi-chemin '' qui connaît l'opération `` à ''

Nov 29 2020

C'est un peu la même chose que / suite à ceci: coordonnée TikZ qui fait référence à la dernière "coordonnée courante"

La réponse à cette question me suggère d'utiliser toau lieu de --pour que je puisse utiliser \tikztostartpour faire référence à la "coordonnée actuelle", qui fonctionne bien jusqu'à ce que j'essaye d'utiliser node[midway]. Extension de l'exemple d'origine:

\documentclass[tikz,margin=1cm]{standalone}
\begin{document}
\begin{tikzpicture}
 \coordinate (origin) at (0,0);
 \draw (origin) -| (1,1) -- (1,1-|origin) % this uses --
   node [midway,above] {hi};
 \begin{scope}[xshift=2cm]
  \coordinate (origin) at (0,0);
  \draw (origin) -| (1,1) to (\tikztostart-|origin) % this uses to
    node [midway,above] {hi};
 \end{scope}
\end{tikzpicture}
\end{document}

sorties (celle de gauche est correcte):

Il me semble que midwaycela ne sait pas toet prend le midwaysegment de chemin précédent.

Comment puis-je midwaysavoir qu'il est censé attacher le nœud au sous- tochemin? Ou une autre réponse à ma question précédente qui traite de cette affaire?

Réponses

3 M.AlJumaily Nov 29 2020 at 11:00

La réponse donnée par Ti k Zling est excellente et de plus, nous pouvons simplement permuter l'ordre du \node[]{...}: de

\draw (origin) -| (1,1) to (\tikztostart-|origin) node [midway,above] {hi};

à

\draw (origin) -| (1,1) to node [midway,above] {hi} (\tikztostart-|origin);

On peut même retirer le midwaycar Ti k Z l'ajustera par défaut au milieu du chemin, entre les deux coordonnées entre lesquelles il est pris en sandwich:

\draw (origin) -| (1,1) to node [above] {hi} (\tikztostart-|origin);

Un autre conseil secondaire est d'utiliser la posclé qui accepte un argument décimal entre 0,0 et 1,0 pour un placement précis.

\documentclass[tikz,margin=1cm]{standalone}
\begin{document}
\begin{tikzpicture}
 \coordinate (origin) at (0,0);
 \draw (origin) -| (1,1) -- (1,1-|origin)
   node [midway,above] {hi};
 \begin{scope}[xshift=2cm]
  \coordinate (origin) at (0,0);
  \draw (origin) -| (2,1) to node [above] {hi} (\tikztostart-|origin);
 \end{scope}
  \begin{scope}[xshift=5cm]
  \coordinate (origin) at (0,0);
  \draw (origin) -| (2,1) to node [pos=0.25, above] {hi} (\tikztostart-|origin);
 \end{scope}
\end{tikzpicture}
\end{document}
3 Noname Nov 29 2020 at 10:54

Votre observation est correcte. Il y a déjà le commentaire de M. Al Jumaily , qui montre une solution possible. Une autre solution, qui est sans doute plus pratique car elle place bien les étiquettes de bord également pour les chemins en pente, consiste à utiliser la edge labelclé. Veuillez noter que le problème que vous rencontrez n'a rien à voir avec \tikztostartmais vraiment seulement avec to.

\documentclass[tikz,margin=1cm]{standalone}
\begin{document}
\begin{tikzpicture}
 \begin{scope}[local bounding box=1]
  \coordinate (origin) at (0,0);
  \draw (origin) -| (1,1) -- (1,1-|origin)
    node [midway,above] {hi};
 \end{scope}  
 \begin{scope}[xshift=2.5cm,local bounding box=2]
  \coordinate (origin) at (0,0);
  \draw (origin) -| (1,1) coordinate (tmp) to (tmp-|origin)
   node [midway,above] {hi};
 \end{scope}
 \begin{scope}[xshift=5cm,local bounding box=3]
  \coordinate (origin) at (0,0);
  \draw (origin) -| (1,1) to[edge label'={hi}] (\tikztostart-|origin);
 \end{scope}
 %
 \path foreach \X [count=\Y] in {--,to,to w/ edge label}
 {(\Y.south) node[below=1em,font=\sffamily]{\X}};
\end{tikzpicture}
\end{document}