延长节点的侧边

延长节点的侧边

假设我有一个简单的矩形节点,我希望延长它的某些边,使它们从角延伸得更远。很简单,这是我的尝试:

\documentclass[tikz,border=1mm]{standalone}

\begin{document}

\begin{tikzpicture}
    \node[draw] (x) {foo};
    \draw (x.north west) -- ++(0, +1mm);
\end{tikzpicture}

\end{document}

结果:

MWE 结果

我知道问题出在哪里:x.north west正好位于形状的角落,并draw从这个角落画出一条线,使得绘制的路径pgflinewidth/2沿着我指定的轨迹在两个方向上突出(如果这有意义的话;抱歉,这很难解释)。

我的问题是,我该如何画线才能让它看起来像是延伸了节点的原始侧x

  • 我认为x.north east锚点就在它所在的地方,没有其他锚点恰好在我需要的地方
  • 我想到的一件事是发出命令draw\draw[xshift=.5\pgflinewidth]但它并没有引起任何变化,而且感觉有点怪异

答案1

尝试

\documentclass[tikz,border=1mm]{standalone}

\begin{document}

\begin{tikzpicture}
    \node[draw,outer sep=0pt] (x) {foo};
    \draw (x.north west) -- ++(0, +1mm);
\end{tikzpicture}

\end{document}

在此处输入图片描述

节点的锚点位于节点边界之外,即outer sep从边界线的中间移动。您可以通过设置更改此设置outside sep=0pt

答案2

改进我尝试的“黑客”解决方案:

据我了解,xshift不适用于节点引用的点,在本例中(x.north west)。相反,人们可以使用transform canvas,如下所示:

\documentclass[tikz,border=1mm]{standalone}

\begin{document}

\begin{tikzpicture}
    \node[draw] (x) {foo};
    \draw[transform canvas={xshift=.5\pgflinewidth}] (x.north west) -- ++(0, +1mm);
\end{tikzpicture}

\end{document}

结果:

LaTeX 代码的结果

这最终解决了我的问题,但感觉不太对。有没有更好的怎么做呢?☺

相关内容