连接使用 tikz 创建的不同新命令

连接使用 tikz 创建的不同新命令

我开始操作\newcommand,到目前为止一切都很好,除了连接两个用 tikz 创建的命令。如下图所示,线条之间有间隙。如何解决这个问题?

在此处输入图片描述

\usepackage{tikz}
\newcommand{\motor}{
\begin{tikzpicture}
\node [circle,draw,inner sep=0.5cm] at (0,0) (a) {M};
\draw (a.north) -- (0,1.5);
\end{tikzpicture}
}

\begin{document}
\begin{tikzpicture}
\node at (0,0) (m1) {\motor};
\node at (4,0) (m2) {\motor};
\draw (m1.east) -- (m2.west);
\draw [red] (m1.north) -- (0,2) -- (4,2) -- (m2.north);
\end{tikzpicture}
\end{document}

答案1

你应该永不嵌套tikzpictures...

如果你想使用宏,那么很多最好放入路径的宏部分(并使用相对坐标,以便您可以移动它):

\documentclass[]{article}
\usepackage{tikz}
\newcommand{\motor}[1]{
node [circle,draw,inner sep=0.5cm](#1) {M} (#1.north) -- ++(0,1.5) 
     coordinate (#1-top);
}

\begin{document}
\begin{tikzpicture}
\draw (0,0) \motor{m1};
\draw (4,0) \motor{m2};
\draw (m1.east) -- (m2.west);
\draw [red] (m1-top) -- ++(0,2) -| (m2-top);
\end{tikzpicture}
\end{document}

在此处输入图片描述

否则,你可以学习如何使用pics:将 tikz pic 命名为节点

相关内容