使用 TikZ 添加线条间隙

使用 TikZ 添加线条间隙

我正在用 TikZ 绘制一些框图。有时,我需要通过在相应块周围添加边框将多个块组合在一起以形成一个大组。但是,有些箭头跨越了边框,如下图所示。

无间隙的框图

“到 ALC 环路”箭头和它下面的箭头看起来很丑。我想做的是以下几点(请注意箭头与粗边框交叉处周围的小间隙):

在此处输入图片描述

TikZ 怎么可能做到这一点?箭头只是用宏绘制的普通箭头\draw[->] (from) -- (to);,粗边框也只是一条普通的线。

答案1

使用@AboAmmar MWE,preaction可以在简单情况下使用:

\documentclass[border=2pt]{standalone}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}[> = latex]
\node [draw, thick, minimum size=5em] (rec) {};
\node [draw] (div) {$\div$};

\draw [preaction={draw, line width=3pt, white}][<->] (div) -- ++(5em,0);

\end{tikzpicture}

\end{document}

编辑:不过还是有一些问题 - 箭头尖端会根据箭头尖端的大小改变路径弯曲。所以这个想法不是一个好的解决方案。 在此处输入图片描述

\documentclass[border=2pt]{standalone}
\usepackage{tikz}

\tikzset{
    outlined arrow/.style={
        preaction={{}-{},draw,line width=3pt,yellow}
    }
}

\begin{document}    
\begin{tikzpicture}[> = latex]
\node [draw,thick,minimum size=5em] (rec) {};
\node [draw] (div) {$\div$};

\draw [outlined arrow][<->] (div) -- ++(5em,0);
\draw [outlined arrow][<->,shorten <=2pt] (div) .. controls +(-90:15mm) and +(180:15mm) .. ++(5em,-5em);

\end{tikzpicture}
\end{document}

编辑 2:在上述情况下,黑色箭头弯曲线不在黄线中间 - 取决于箭头大小。我发现 @cfr 响应(箭头大小与线宽无关) 在这里会有点用处。下面的代码仅在箭头设置my arrow通过可选参数传递时才有效。

在此处输入图片描述

\documentclass[border=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}

\begin{document}
\begin{tikzpicture}[
    outlined arrow/.style={preaction={double=yellow,double distance=2pt,draw=red}},
    my arrow/.style={>={LaTeX[length=2mm]}},
    yscale=0.6
]
\node [draw,thick,minimum size=5em] (rec) {};
\node [draw] (div) {$\div$};

\draw [outlined arrow][<->,my arrow] (div) -- ++(5em,0);
\draw [outlined arrow][<->,shorten <=2pt,my arrow]
      (div) .. controls +(-90:15mm) and +(180:15mm) .. ++(5em,-5em);

\end{tikzpicture}
\end{document}

我还考虑使用@Qrrbrbirlbel 解决方案(保存路径并调用它来描边),但shorten选项不起作用。还有@Paul Gaborit 解决方案(包围箭头) 不包括shorten选项 (?)。

答案2

可以用一条粗白线来实现这些线交叉处的间隙,就像您的交叉线一样。以下是一个例子:

\documentclass[border=2pt]{standalone}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}[> = latex]
\node [draw, thick, minimum size=5em] (rec) {};
\node [draw] (div) {$\div$};

\draw [<->, line width=3pt, white](div) -- ++(5em,0);
\draw [<->] (div) -- ++(5em,0);

\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容