Рассмотрим такой пример:
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[left] at (0,0) (Source) {Source};
\draw [very thick, ->] (0.15,-0.02) -- (2.5,0.48);
\node[right] at (2.5,0.5) (Target1) {abcdefgh};
\node at (Target1) (Target1arrow) {};
\draw [very thick, ->] (2.35,0.52) -- (0,0.02);
\node[right] at (2.5,-0.5) (Target2) {abcdefg};
\node at (Target2) (Target2arrow) {};
\draw [very thick, ->] (0.15,-0.02) -- (2.5,-0.5);
\draw [very thick, ->, shorten <= .5ex, shorten >= .5ex] (Target1arrow) -- (Target2arrow);
\end{tikzpicture}
\end{document}
Я понимаю, что вертикальная стрелка начинается из середины Target1
и указывает на середину Target2
, но в этом случае, когда длины этих двух целей почти идентичны, было бы лучше, если бы стрелка была прямой. Другими словами, я хотел бы, чтобы начало стрелки было привязано к центральной точке Target2
. Я пробовал добавлять anchor = Target2.base
функцию рисования этой стрелки, но это не дало никакого эффекта.
решение1
Во-первых, есть возможность разместить узел ниже другого (объяснил Пьер Паоло).
А также есть синтаксис (node1 |- node2)
, который рисует линию вертикально. В этом случае конец стрелки записывается как (Target1arrow |- Target2arrow.north)
.
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[left] at (0,0) (Source) {Source};
\draw [very thick, ->] (0.15,-0.02) -- (2.5,0.48);
\node[right] at (2.5,0.5) (Target1) {abcdefgh};
\node at (Target1) (Target1arrow) {};
\draw [very thick, ->] (2.35,0.52) -- (0,0.02);
\node[right] at (2.5,-0.5) (Target2) {abcdefg};
\node at (Target2) (Target2arrow) {};
\draw [very thick, ->] (0.15,-0.02) -- (2.5,-0.5);
\draw [very thick, ->, shorten <= .5ex, shorten >= .5ex] (Target1arrow) -- (Target1arrow |- Target2arrow.north);
\end{tikzpicture}
\end{document}