TikZ „w połowie”, który wie o opearowaniu „do”
To jest mniej więcej takie samo jak / kontynuacja: Współrzędna TikZ, która odnosi się do ostatniej "aktualnej współrzędnej"
Odpowiedź na to pytanie sugeruje, żebym używał to
zamiast, --
aby móc \tikztostart
odwołać się do „bieżącej współrzędnej”, która działa dobrze, dopóki nie spróbuję jej użyć node[midway]
. Rozwijając oryginalny przykład:
\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}
wyjścia (lewe jest poprawne):

Wydaje mi się, że midway
nie wie o tym to
i bierze midway
z poprzedniego segmentu ścieżki.
Skąd mogę midway
wiedzieć, że ma on dołączyć węzeł do to
ścieżki podrzędnej? Albo inna odpowiedź na moje poprzednie pytanie, która dotyczy tego przypadku?
Odpowiedzi
Odpowiedź udzielona przez Ti k Zlinga jest świetna, a ponadto możemy po prostu zamienić kolejność \node[]{...}
: z
\draw (origin) -| (1,1) to (\tikztostart-|origin) node [midway,above] {hi};
do
\draw (origin) -| (1,1) to node [midway,above] {hi} (\tikztostart-|origin);
Możemy nawet wyjąć, midway
ponieważ Ti k Z domyślnie dostosuje go do środka ścieżki, między dwiema współrzędnymi, umieszczonymi między:
\draw (origin) -| (1,1) to node [above] {hi} (\tikztostart-|origin);
Kolejną wskazówką jest użycie pos
klucza, który akceptuje argument dziesiętny z przedziału od 0,0 do 1,0 w celu precyzyjnego umieszczenia.

\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}
Twoja obserwacja jest poprawna. Jest już komentarz M. Al Jumaily , który pokazuje jedno możliwe rozwiązanie. Innym rozwiązaniem, które jest prawdopodobnie wygodniejsze, ponieważ ładnie umieszcza etykiety krawędzi również na pochyłych ścieżkach, jest użycie edge label
klucza. Zwróć uwagę, że napotkany problem nie ma nic wspólnego, \tikztostart
a tak naprawdę tylko 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}
