具有多个输入的节点在预定义侧对齐

具有多个输入的节点在预定义侧对齐

我目前正在尝试使用 tikz 创建以下图(很好):

在此处输入图片描述

这是我的第一次尝试,但并没有按我想要的方式进行:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\tikzstyle{block} = [draw, rectangle]

\begin{tikzpicture}[auto, node distance=2cm]

    \node [block] (A) {A};
    \node [block, below right=of A] (B) {B};
    \node [block, right= of B] (C) {C};

    \draw [draw,->] (A)-|(B);
    \draw [draw,->] (B)--(C);
    \draw [draw,->] (C)--(B);
\end{tikzpicture}

\end{document}

我的第一个问题是,我不知道如何告诉 tikz,例如对于 C->B 路径,不要使用最短路径,而是“从左侧”将 C 与 B 连接起来。此外,箭头似乎总是连接到块的中间,我如何指定中间上方或下方的位置(对于 B 或 C 块)?

最后,我怎样才能将一条线直接连接到一个块(B 的第三个输入),并在那里用黑点标记该线?

我查看了一些关于节点放置的教程,但不幸的是上述主题没有得到解决......

答案1

我相信肯定有更短的版本。但这个代码可能更容易理解。策略是添加几个辅助坐标 H1、H2 等,并将它们用于路径构建。

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\tikzset{block/.style = {draw, rectangle},
Connect/.style={-latex,thick}}

\begin{tikzpicture}[auto, node distance=2cm]

    \node [block] (A) {A};
    \node [block, below right=of A] (B) {B};
    \node [block, right= of B] (C) {C};
    \path (A)--(B) coordinate[midway](H1) coordinate[pos=0.75](H2);
    \coordinate[right=0.5cm of C](H3);
    \coordinate[left=0.5cm of A](H4);
    \coordinate[below=0.5cm of B](H5);
    \path (B)--(C) coordinate[midway](H6);
    \draw [Connect] (A)--(A-|H1)--(B-|H1)--(B);
    \draw [Connect] (B)--(C);
    \draw [Connect] (C.east)--(C-|H3)--(H1-|H3)--(H1-|H2)|-(B.140);
    \draw [Connect] (H4)--(A);
    \draw [Connect] (H5-|H4)--(H5-|H6)|-(C.220);
    \draw[fill] (H5-|H1) circle(0.1);
    \draw[Connect] (H5-|H1)|-(B.220);
\end{tikzpicture}

\end{document}

在此处输入图片描述

顺便说一句,\tikzstyle据说已被弃用,我用它替换了它\tikzset

相关内容