大家好,感谢阅读我的帖子。
在 TikZ 绘图中,我使用\node[draw]
type 命令定义了两个上下叠放的框。我还在每个框上方添加了带框标签。问题是,在两个框之间绘制箭头时,仅考虑基本框的坐标,因此箭头会穿过标签,而不是停在标签前面。
我理解 TikZ 为什么会这样做,但我该如何修复它?我试图指向一个(A2.label)
节点,但它似乎不存在...
以下是我的最小工作示例及其目前提供的内容。感谢您的帮助!
\documentclass[10pt]{standalone}
\usepackage[english]{babel}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
% BOX 1
\node[draw,text width=7cm,
label={[text width=7cm,fill=black!10,draw,minimum height=12pt]{\bfseries box 1}}
] (A1) at (0,0) {
some text for box 1
} ;
% BOX 2
\node[draw,text width=5cm,
label={[text width=5cm,fill=black!10,draw,minimum height=12pt]{\bfseries box 2}}
] (A2) [below of=A1,yshift=-4cm] {
some other text for box 2
} ;
% ARROW
\draw[->,>=latex] (A1) -- node[right] {test} (A2) ;
\end{tikzpicture}
\end{document}
答案1
标签也是节点。因此,一种可能性是给它起一个名字或别名,然后绘制指向标签节点的箭头。
\documentclass[10pt]{standalone}
\usepackage[english]{babel}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
% BOX 1
\node[draw,text width=7cm,
label={[text width=7cm,fill=black!10,draw,minimum height=12pt]{\bfseries box 1}}
] (A1) at (0,0) {
some text for box 1
} ;
% BOX 2
\node[draw,text width=5cm,
label={[text width=5cm,fill=black!10,draw,minimum
height=12pt,alias=stop here]{\bfseries box 2}}
] (A2) [below of=A1,yshift=-4cm] {
some other text for box 2
} ;
% ARROW
\draw[->,>=latex] (A1) -- node[right] {test} (stop here) ;
\end{tikzpicture}
\end{document}
实现此输出的另一种方法是A2
使用库构建和标签节点的复合体fit
。
\documentclass[10pt]{standalone}
\usepackage[english]{babel}
\usepackage{tikz}
\usetikzlibrary{positioning,fit}
\begin{document}
\begin{tikzpicture}
% BOX 1
\node[draw,text width=7cm,
label={[text width=7cm,fill=black!10,draw,minimum height=12pt]{\bfseries box 1}}
] (A1) at (0,0) {
some text for box 1
} ;
% BOX 2
\node[draw,text width=5cm,
label={[text width=5cm,fill=black!10,draw,minimum
height=12pt,alias=include me]{\bfseries box 2}}
] (A2) [below of=A1,yshift=-4cm] {
some other text for box 2
} ;
\node[inner sep=0pt,fit=(A2) (include me)] (A2compound){};
% ARROW
\draw[->,>=latex] (A1) -- node[right] {test} (A2compound) ;
\end{tikzpicture}
\end{document}