Синтаксис TikZ' Pic не работает с краевыми узлами

Синтаксис TikZ' Pic не работает с краевыми узлами

В конце концов, я хотел бы нарисовать картинку внутри узла большей картинки. Поскольку вложение tikzpictures не рекомендуется, я подумал, что picсинтаксис предоставляет удобную альтернативу.

Однако, picпохоже, это не работает так, как я думал, когда есть краевые узлы: на picрисунке краевой узел находится там, где конец пути, а не посередине.

Может ли кто-нибудь объяснить, что здесь происходит, и предложить выход из этой ситуации?

\documentclass{article}
\usepackage{tikz}

\begin{document}

\tikzset{test/.pic={
        \node (a) at (0,0) {a};
        \node (b) at (3,0) {b};
        \draw (a)--node{edge node} (b);
    }
}
\begin{tikzpicture}
\pic {test};
\end{tikzpicture}


\begin{tikzpicture}
\node (a) at (0,0) {a};
\node (b) at (3,0) {b};
\draw (a)--node{edge node} (b);
\end{tikzpicture}

\end{document}

введите описание изображения здесь

решение1

К сожалению, я понятия не имею, что происходит, но указание posопции для краевого узла решает проблему размещения:

\documentclass{article}
\usepackage{tikz}

\begin{document}

\tikzset{test/.pic={
        \node (a) at (0,0) {a};
        \node (b) at (3,0) {b};
        \draw (a)--node[pos=0.5]{edge node} (b);
    }
}
\begin{tikzpicture}
\pic {test};
\end{tikzpicture}


\begin{tikzpicture}
\node (a) at (0,0) {a};
\node (b) at (3,0) {b};
\draw (a)--node{edge node} (b);
\end{tikzpicture}

\end{document}

введите описание изображения здесь

Связанный контент