路径终止于具有抽取双重标记的节点

路径终止于具有抽取双重标记的节点

我有一个用双线绘制的节点。如果我现在绘制一条连接到此节点的路径,该路径不会停止在节点的外边界,而是恰好在两条线的中间。有没有办法修复此行为,使路径正确地结束在我绘制的另一条线上?

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[line width=1mm, draw, double, double distance=1cm, circle, minimum width=4cm] (circ) at (0,0) {};
\draw[line width=1mm] (circ) -- (7,0);
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

outer sep您可以通过设置为的一半加上来double distance使线终止于节点的外边缘line width(因此6mm在本例中):

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[
    line width=1mm,
    draw,
    double distance=1cm,
    circle,
    minimum width=4cm,
    outer sep=0.6cm
] (circ) at (0,0) {};
\draw[red,line width=1mm] (circ) -- (7,0);
\end{tikzpicture}
\end{document}

如果您想要double distance自动更新outer sep,您可以通过将以下代码片段放在之后的某处来重新定义内部宏\usepackage{tikz}

\makeatletter
\tikzoption{double distance}{%
  \pgfmathsetlength{\pgf@x}{#1}%
  \edef\tikz@double@setup{%
    \pgf@x=\the\pgf@x%
    \advance\pgf@x by2\pgflinewidth%
    \pgflinewidth=\pgf@x%
    \noexpand\pgfsetlinewidth{\pgflinewidth}%
    \noexpand\pgfsetinnerlinewidth{\the\pgf@x}%
  }%
  \pgfset{outer sep/.expand once=#1*0.5+\pgflinewidth}%
  \tikzset{double}}
\makeatother

相关内容