TikZ:如何使用库链和节点矩阵绘制流程图?

TikZ:如何使用库链和节点矩阵绘制流程图?

在此流程图的 MWE 中,\chainin使用命令时它不会编译,我需要了解以下内容:

  1. align=center没有将节点内容居中,例如(m-2-1)
  2. \\由于使用会使编译运行很长时间,我怎样才能中断任何矩阵节点内的线?
  3. 我怎样才能以这样的方式连接(m-3-1)和,(m-1-2)即连接向右延伸到中间,然后垂直向左延伸到右边(m-1-2)
  4. 使用\chainin命令时,出现错误:Undefined control sequence. \chainin尽管加载了chains库。

我已经在没有的情况下绘制了这个流程图chains,但我需要知道使用它是否可以实现。

\RequirePackage{luatex85}
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,chains, positioning,matrix,shapes}

\begin{document}

\begin{tikzpicture}[
every node/.style={draw,rectangle,align=center},
every join/.style=latex,
join
]
\matrix (m) [matrix of nodes,column sep=5mm,row sep=5mm]{
    {1\\new line}   & 4\\
    2               & 5\\
    3               & 6\\
};

{ [start chain]
    \chainin (m-1-1);
    \chainin (m-2-1);
    \chainin (m-3-1);
    \chainin (m-1-2);
    \chainin (m-2-2);
    \chainin (m-3-2);
}

\end{tikzpicture}

\end{document}

答案1

问题在于Undefined control sequence你缺少一个库:

\usetikzlibrary{scopes}

据我所知,手册中没有提到,但我以前见过这个问题。

至于你的问题 (3),我认为最好单独画出那条线,并将链分成两部分。至少因为我不知道如何修改路径\chainin运算符...

在此处输入图片描述

梅威瑟:

\RequirePackage{luatex85}
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,chains,scopes,positioning,matrix,shapes,calc}

\begin{document}
\begin{tikzpicture}[
every node/.style={draw,rectangle,align=center}, >=latex
]

\matrix (m) [matrix of nodes,column sep=5mm,row sep=5mm]
{
\node(m-1-1){1\\new line};  & 4\\
2               & 5\\
3               & 6\\
};

%\matrix[below=5cm] (m) [matrix of nodes,column sep=5mm,row sep=5mm]{
%   |[text width=1.5cm]| {1\\new line}  & 4\\
%   2               & 5\\
%   3               & 6\\
%};

{ [start chain,every on chain/.style={join=by ->}]
\chainin (m-1-1);
\chainin (m-2-1);
\chainin (m-3-1);
\chainin (m-1-2);
\chainin (m-2-2);
\chainin (m-3-2);
}

\draw[red,->] (m-3-1) -| ($(m-3-1)!.7!(m-1-2)$) |-(m-1-2);
\end{tikzpicture}
\end{document}

我在 MWE 中也使用了不同的方法在矩阵环境中进行换行(问题 2)。正如手册中所说,可以使用嵌套节点,因此由于每个矩阵单元都是一个节点,我们可以在\node该节点内使用,并且由于我们已经将样式every node设置为align=center,该节点已经居中对齐,因此无需指定text width。虽然我不知道为什么键align=center在里面不起作用\matrix,也许是一个错误......

相关内容