按照另一条路径在节点之间绘制路径

按照另一条路径在节点之间绘制路径

我有彼此相邻的不同高度的节点,我想在它们之间绘制一条路径(箭头)。但是,我希望路径始终是水平的。我设法在我的示例中的第一个和第二个节点之间实现了这一点,但我不知道如何让第二个和第三个节点之间的线与第一个箭头在同一条线上(好像所有箭头都画在一条长的水平分段线上)。

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

\usetikzlibrary{positioning}


\begin{document}

\begin{tikzpicture}[every node/.style=draw]
    \node (a) {\(\alpha\)};
    \node[right=of a,yshift=-2mm,minimum height=1cm] (b)
        {\(\beta\)};
    \node[right=of b,minimum height=1cm] (c) {\(\gamma\)};

    \draw[->] (a) edge (a -| b.west)  (b) edge (c);
    % \draw[->] (a) edge (a -| b.west)  (a -| b.east) edge (b -| c.west);
\end{tikzpicture}

\end{document}

(注释中的这一行是我失败的尝试之一。)

MWE 的输出


顺便问一下,tikz在保持(例如)72 个字符的行限制的情况下,建议的格式化代码的方法是什么?我应该在哪里换行?以下是几个例子:

\node[something=foo,some other thing] (averylongnodename)
    {Node text};

\node[%
        something=foo,             % <--+
        some other thing           % <--+--- This arrangement seems to work nice with a lot of keys
] (averylongnodename) {Node text};

\node[something foo,some other thing] (averylongnodename) {Node
                                                           text};

% etc

(这些示例不适合 72 个字符,仅供说明之用。)

答案1

你几乎已经完成全部工作了,这就是你所要求的吗?

\begin{tikzpicture}[every node/.style=draw]
    \node (a) {\(\alpha\)};
    \node[right=of a,yshift=-2mm,minimum height=1cm] (b)
        {\(\beta\)};
    \node[right=of b,minimum height=1cm] (c) {\(\gamma\)};
    \node[coordinate](next)at(a-|b.north east){};
    \draw (a) edge[->] (a-|b.north west) (next)edge[->](next-|c.north west);
    % or simply (next)--(next-|c.north west)
    % \draw[->] (a) edge (a -| b.west)  (a -| b.east) edge (b -| c.west);
\end{tikzpicture}

在此处输入图片描述

至于行限制字符,我不知道有什么规则,只要它遵守 TeX 编辑的规律就应该没问题,然后你应该避免可能导致编译错误的段落或空行。

答案2

您几乎已经完成了。您只需要添加边缘定义并->从绘制命令中删除:

\documentclass[tikz,border=1mm]{standalone}
\usetikzlibrary{arrows.meta, % for arrows heads
                positioning}

\begin{document}
    \begin{tikzpicture}[
            every node/.style=draw,
            every edge/.style = {draw, -Straight Barb}  % <---
    ]
    \node (a) {\(\alpha\)};
    \node (b) [right=of a,yshift=-2mm,minimum height=1cm]   {\(\beta\)};
    \node (c) [right=of b,minimum height=1cm]               {\(\gamma\)};

    \draw   (a) edge (a -| b.west)  
            (a -| b.east) edge (a -| c.west);
    \end{tikzpicture}
\end{document}

输出

编辑: 根据定义every edge/.style = {draw, -Straight Barb} ,图片中的每个边(即节点(或给定坐标)之间的每条线)都用箭头绘制Straight Barb。根据此定义,->不再需要选项。

每个都edge被视为节点(坐标)之间的单独路径,因此命令\draw[->]仅添加额外的箭头(不存在的路径),这会造成混淆tikz

在此处输入图片描述

因为没有定义路径。除了\draw上面 MWE 中的命令外,您还可以使用\path

相关内容