我正在尝试用箭头连接两个内部 tcolorbox。我也见过这和这个答案,不幸的是,它对我的问题没有帮助。下面是一个最小示例。我很感激任何帮助。需要注意的是,我想找到一种不需要手动设置坐标的解决方案,因为目标图很复杂。每个节点都有自己的高度,只有节点的宽度是恒定的
\documentclass[tikz]{standalone}
\usepackage[most]{tcolorbox}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,positioning}
\newtcolorbox{rosnode}[1]{
colback=white!85!gray,
colframe=gray,
coltitle=white,
boxrule=2pt,
halign=center,
valign=center,
sharp corners=all,
center title,
% lower separated=false,
width=5cm,
title={#1}
}
\newtcolorbox{rosservice}[1]{
colback=white!85!gray,
colframe=gray,
coltitle=white,
boxrule=2pt,
halign=center,
valign=center,
arc=0.4mm,
center title,
% lower separated=false,
left skip=-0.3cm,
right skip=-0.3cm,
title={#1}
}
\begin{document}
\begin{tikzpicture}[node distance=1cm, every node/.style={inner sep=0,outer sep=0}]
\node(Node1) {
\begin{rosnode}{Node1}
Box 1 longer text text text text text
\begin{rosservice}{InnerBox1}
Box text
\end{rosservice}
\end{rosnode}
};
\node(Node2) [right=of Node1] {
\begin{rosnode}{Node2}
Box 2 text
\begin{rosservice}{InnerBox2}
Box text
\end{rosservice}
\end{rosnode}
};
\draw[gray,line width=0.8mm,-{Triangle[angle=60:1pt 3]}] (Node1) -- (Node2);
\end{tikzpicture}
\end{document}
答案1
欢迎来到 TeX.SX!我不确定将tcolorbox
es 放在 Ti 中是否复杂钾Z 节点确实是需要的,但我会保留您的设置,因为我不知道您想用它实现什么。
tcolorbox
为了引用使用 Ti的外框钾Z 宏,例如\draw
,您可以使用remember as
相关选项。您还需要为此tcolorbox
添加选项。完成此操作后,您可以使用带有选项的引用此框。enhanced
tcolorbox
tikzpicture
remember picture, overlay
请参阅对原始代码的以下调整:
\documentclass{standalone}
\usepackage[most]{tcolorbox}
\usetikzlibrary{arrows.meta, positioning}
\newtcolorbox{rosnode}[1]{
colback=white!85!gray,
colframe=gray,
coltitle=white,
boxrule=2pt,
halign=center,
valign=center,
sharp corners=all,
center title,
% lower separated=false,
width=5cm,
title={#1}
}
\newtcolorbox{rosservice}[2][]{
enhanced,
colback=white!85!gray,
colframe=gray,
coltitle=white,
boxrule=2pt,
halign=center,
valign=center,
arc=0.4mm,
center title,
% lower separated=false,
left skip=-0.3cm,
right skip=-0.3cm,
title={#2},
#1
}
\begin{document}
\begin{tikzpicture}[node distance=1cm, every node/.style={inner sep=0,outer sep=0}]
\node(Node1) {
\begin{rosnode}{Node1}
Box 1 longer text text text text text
\begin{rosservice}[remember as=InnerBox1]{InnerBox1}
Box text
\end{rosservice}
\end{rosnode}
};
\node(Node2) [right=of Node1] {
\begin{rosnode}{Node2}
Box 2 text
\begin{rosservice}[remember as=InnerBox2]{InnerBox2}
Box text
\end{rosservice}
\end{rosnode}
};
\end{tikzpicture}
\begin{tikzpicture}[remember picture, overlay]
\draw[gray, line width=0.8mm, -{Triangle[angle=60:1pt 3]}] (InnerBox1.east) -- (InnerBox2.west);
\end{tikzpicture}
\end{document}
在这种情况下,改变箭头的颜色使其更明显可能是一个好主意。