
Должен быть рекомендуемый/стандартный/обычный способ сделать (что предлагается) следующее:
\begin{tikzpicture}
\node (tikzpicture0) at (0pt,100pt) []{
\begin{tikzpicture}
\ABSOLUTE-AND-CONTEXT-AWARE-node (node00) at (0pt,0pt) []{(0pt,0pt)};
\node (node01) at (0pt,10pt)[]{(0pt,10pt)};
\end{tikzpicture}
};
\node (tikzpicture1) at (100pt,200pt) []{
\begin{tikzpicture}
\node (node10) at (0pt,0pt) []{(0pt,0pt)};
\node (node11) at (0pt,10pt)[]{(0pt,10pt)};
\end{tikzpicture}
};
\node (tikzpicture2) at (200pt,300pt) []{
\begin{tikzpicture}
\node (node20) at (0pt,0pt) []{(0pt,0pt)};
\node (node21) at (0pt,10pt)[]{(0pt,10pt)};
\end{tikzpicture}
};
\draw[->] (node00)--($(node10)+(100pt,200pt)$);
\end{tikzpicture}
где ABSOLUTE означает, что на (node00) можно ссылаться за пределами tikzpicture, в котором он был определен, а AND-CONTEXT-AWARE означает, что координата (0pt,100pt) охватывающего tikzpicture добавляется к координате узла (0pt,0pt).
Конечно, код
\begin{tikzpicture}
\node (tikzpicture0) at (0pt,100pt) []{
\begin{tikzpicture}
\node (node00) at (0pt,0pt) []{(0pt,0pt)};
\node (node01) at (0pt,10pt)[]{(0pt,10pt)};
\end{tikzpicture}
};
\node (tikzpicture1) at (100pt,200pt) []{
\begin{tikzpicture}
\node (node10) at (0pt,0pt) []{(0pt,0pt)};
\node (node11) at (0pt,10pt)[]{(0pt,10pt)};
\end{tikzpicture}
};
\node (tikzpicture2) at (200pt,300pt) []{
\begin{tikzpicture}
\node (node20) at (0pt,0pt) []{(0pt,0pt)};
\node (node21) at (0pt,10pt)[]{(0pt,10pt)};
\end{tikzpicture}
};
\draw[->] (node00)--($(node10)+(100pt,200pt)$);
\end{tikzpicture}
урожайность
в то время как предполагаемая иллюстрация должна выглядеть как (жестко-закодированная-координатная-) иллюстрация
Что вы порекомендуете?
решение1
Общий совет — не использовать вложенные tikzpicture
s. Вы можете сделать то же самое, используя scope
вместо этого. В коде ниже я добавил несколько имен к вашим узлам, просто чтобы различать их. Стрелка в конце вашего кода не совпадает со стрелкой на вашем жестко закодированном изображении, поскольку ее конечная точка получена из , node10
а не node01
. Я добавил одну красным, используя node01
вместо этого.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\node (node00) at (0pt,0pt) []{N00:(0pt,0pt)};
\node (node01) at (0pt,10pt)[]{N01:(0pt,10pt)};
\begin{scope}[shift={(100pt,200pt)}]
\node (node10) at (0pt,0pt) []{N10:(0pt,0pt)};
\node (node11) at (0pt,10pt)[]{N11:(0pt,10pt)};
\end{scope}
\begin{scope}[shift={(200pt,300pt)}]
\node (node20) at (0pt,0pt) []{N20:(0pt,0pt)};
\node (node21) at (0pt,10pt)[]{N21:(0pt,10pt)};
\end{scope}
\draw[->] (node00)--($(node10)+(100pt,200pt)$) node[anchor=west]{(N10)+(100pt,200pt)};
\draw[red,->] (node00)--($(node01)+(100pt,200pt)$);
\end{tikzpicture}
\end{document}
решение2
Если я правильно понял, то в вашей концепции есть проблема. Давайте рассмотрим следующий случай:
\begin{tikzpicture}
\node at (10,10) {This was 10, 10};
\node at (15,15) {This was 15, 15};
\draw (current bounding box.south west) rectangle (current bounding box.north east);
\end{tikzpicture}
Это даст нам
Пара вещей, на которые стоит обратить внимание: получившийся блок не имеет размера 15x15, хотя у него самое большое расстояние до начала координат. И также он не имеет размера 5x5 из-за длины текста.
Поэтому невозможно будет найти, где узлы находятся абсолютно относительно конечного холста, если вы заранее не исправите ограничивающий прямоугольник. Оставшимся решением будет взлом размещения узлов и включение текущих значений ограничивающего прямоугольника и собственного размера и обновление всего соответствующим образом. Даже тогда, если я размещаю что-то сейчас, (-2,-2)
все значения узлов должны быть обновлены, потому что ограничивающий прямоугольник теперь внезапно становится 17 х 17 дюймов. Поэтому размещение узлов следует отложить до тех пор, пока не будет набрана вся картинка. И мы даже не коснулись преобразований, таких как масштабирование и переводы.
Таким образом, мое мнение таково, что это не сработает с простыми манипуляциями. Я повторяю общую мантру: не вкладывать картинки TikZ. Всегда есть другой путь.
Ваша реальная проблема (какой бы она ни была), которая мотивировала вас на это направление, вероятно, может быть решена с помощью ответовМожно ли экспортировать координаты tikz в текстовый файл?с двухпроходным решением.