这两个 tcolorbox 除了作为节点之外,工作得很好。在谷歌搜索和阅读 tikz 文档后,我仍然不知道如何绘制箭头!这是我的 MWE,它很伤心,目前需要超出我能力的智慧。
\documentclass[12pt,fleqn,twoside]{report}
\usepackage{tcolorbox}
\usepackage{tikz}
\tcbset{%
boxrule=4pt,
colback=white, %background color
colframe=blue, % frame colour
halign=center,
valign=center,
halign lower=center,
align lower =center,
sharp corners=all,
center title,
lower separated=false,
fonttitle=\sffamily\bfseries\large,
}
\begin{document}
\begin{tikzpicture}[node distance=2cm,baseline=-0.5ex, arrow/.style = {thick,-stealth}]
\node(NodeName1){
\begin{tcolorbox}[title=Box1Title]
Blah box1 text
\end{tcolorbox}
};
\node(NodeName2){
\begin{tcolorbox}[title=Box2Title]
Blah box2 text
\end{tcolorbox}
};
\draw(NodeName1);
\draw[->] (NodeName1) -- (NodeName2);
\draw(NodeName2);
\end{tikzpicture}
\end{document}
答案1
箭头不是问题(实际上它出现了),但是你的节点重叠(没有一个相对于另一个发生位移)并且因此它的长度为零 pt。另外你的代码中有错误(未定义的选项)并且由于没有定义框的宽度,它使用默认宽度,例如文本宽度...
\documentclass[12pt,fleqn,twoside]{report}
\usepackage[many]{tcolorbox}
\usepackage{tikz}
\usetikzlibrary{arrows.meta, % for arrows style
positioning % for positioning of boxes
}
\tcbset{%
boxrule=4pt,
colback=white, % background color
colframe=cyan, % frame colour
halign=center,
valign=center,
sharp corners=all,
center title,
lower separated=false,
fonttitle=\sffamily\bfseries\large,
width=4cm % added
}
% for show only picture
\usepackage[tightpage, active]{preview}
\setlength\PreviewBorder{3mm}
\PreviewEnvironment{tikzpicture}
\begin{document}
\begin{tikzpicture}[node distance=2cm]
\node(NodeName1){
\begin{tcolorbox}[title=Box 1 Title]
Box 1 text
\end{tcolorbox}
};
\node(NodeName2) [right=of NodeName1] { % added position of second box
\begin{tcolorbox}[title=Box 2 Title]
Box 2 longer text text text text text
\end{tcolorbox}
};
\draw[blue, line width=2mm,-{Triangle[angle=60:1pt 3]}] (NodeName1) -- (NodeName2);
\end{tikzpicture}
\end{document}
看看获得的图像是否是您想要的:
编辑: 代码和解释略有改进
答案2
您不必在 a 内包含tcolorboxes
as 来在它们之间绘制箭头。事实上 a或多或少就是。tikznodes
tikzpicture
tcolorbox
tikzpicture
使用enhanced
tcolorboxes,您可以使用remember as= ...
选项为每个框分配一个名称,并在 中使用这些名称作为引用tikzpicture
。这就是以下示例中显示的内容。
enhanced
选项已添加到tcbset
声明中(tcolorbox
使用most
选项加载)。然后nobeforeafter
在每个框中使用一个选项以使其保持在同一行,并remember as
使用选项来命名它们。
已使用外部图片绘制这些框之间的箭头:
\documentclass[12pt,fleqn,twoside]{report}
\usepackage[most]{tcolorbox}
\usepackage{tikz}
\tcbset{%
enhanced,
boxrule=4pt,
colback=white, %background color
colframe=blue, % frame colour
halign=center,
valign=center,
halign lower=center,
valign lower =center,
sharp corners=all,
center title,
lower separated=false,
fonttitle=\sffamily\bfseries\large,
}
\begin{document}
\begin{tcolorbox}[title=Box1Title, width=.4\linewidth, nobeforeafter, remember as=NodeName1]
Blah box1 text
\end{tcolorbox}
\hfill
\begin{tcolorbox}[title=Box2Title, width=.4\linewidth, nobeforeafter, remember as=NodeName2]
Blah box2 text
\end{tcolorbox}
\tikz[overlay, remember picture] \draw[->, line width=4pt, blue] (NodeName1)--(NodeName2);
\end{document}