具有层次的流程图 Tikz

具有层次的流程图 Tikz

我需要一个包含大量流程和子流程级别的 PDF。我的想法是用 tikz 制作,但我不知道如何简单而自动地构建它。像这样例子我首先想到的是 hyperref 包。但是这个例子似乎有点太复杂,而且对于大型流程来说容易出错。(我对 tikz 的专业知识不是最好的)

也许你们中的一些人有更好的解决方法。或者也许你知道比 tikz 更好的解决方案。关于一些支持我会很高兴 :)

这是一个我需要的例子。

第一页是主要流程 第一页

如果双击“大流程”,pdf 将跳转到第二页。 在此处输入图片描述

在左上角你可以看到源。如果你点击源,你就会回到主进程。

双击其中一个进程将打开一个新级别。例如像这样。

在此处输入图片描述 在底部你可以看到一个输出。如果你点击它,你就会进入进程 2。

答案1

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

这三个页面都相互链接如下:

  • 第 1 页上的文本“大过程”链接到第 2 页。
  • 第 2 页上的文本“大过程”链接到第 1 页。
  • 第 2 页上的文本“流程 1”链接到第 3 页。
  • 第 3 页的文本“大过程”链接到第 1 页。
  • 第 3 页上的文本“流程 1”链接到第 2 页。

链接是通过hyperref特定页码实现的。如果您

\hyperlink{page.1}{text}

然后文档中会出现“文本”一词,单击它会链接到第 1 页。既然我们可以建立链接,我们只需要绘制流程图。为此,我定义了一种样式:

\tikzset{box/.style={draw=borderColour, very thick, fill=#1, minimum width=4cm, minimum height=2cm, text=white}}

像这样使用时,\node[box=colour] at (x, y) {text}会创建一个矩形节点,中心为,(x, y)宽度为 4cm,高度为 2cm(除非文本超出此范围,否则它将是文本的大小)。此框填充了我们为 的任何颜色,colour并且框的边框为 的颜色borderColour。这将我们带到此流程图定义的颜色(需要xcolor颜色html模型):

\definecolor{borderColour}{HTML}{2f528f}
\definecolor{myBlue}{HTML}{4472c4}
\definecolor{myOrange}{HTML}{ed7d31}
\definecolor{myGreen}{HTML}{92d050}

这些是从提供的示例中获取的。最后,我为连接箭头定义了一种样式:

\tikzset{connect/.style={->, >=latex, ultra thick, borderColour}}

现在我们有了这些,我们只需要按照所需的方式将这些元素放在一起:

\documentclass{article}

\usepackage{tikz}
\usepackage{xcolor}
\usepackage[hidelinks]{hyperref}

\renewcommand{\familydefault}{\sfdefault}

% Define colours
\definecolor{borderColour}{HTML}{2f528f}
\definecolor{myBlue}{HTML}{4472c4}
\definecolor{myOrange}{HTML}{ed7d31}
\definecolor{myGreen}{HTML}{92d050}

% Define tikz styles
\tikzset{box/.style={draw=borderColour, very thick, fill=#1, minimum width=4cm, minimum height=2cm, text=white}}
\tikzset{connect/.style={->, >=latex, ultra thick, borderColour}}

\begin{document}
    ~  % Needed so \vfill doesn't get absorbed
    \vfill
    \begin{center}
        \begin{tikzpicture}
            \node[box=myBlue] at (0, 0) {\hyperlink{page.2}{Big Process}};
        \end{tikzpicture}
    \end{center}
    \vfill
    \newpage
    Source: \hyperlink{page.1}{\textcolor{myBlue}{Big Process}}
    \vfill
    \begin{center}
        \begin{tikzpicture}
            \node[box=myOrange] (P1) at (0, 0) {\hyperlink{page.3}{Process 1}};
            \node[box=myOrange] (P2) at (0, -5) {Process 2};
            \node[box=myOrange] (P3) at (0, -10) {Process 3};
            \draw[connect] (P1) -- (P2);
            \draw[connect] (P2) -- (P3);
            \draw[connect] (P3.east) -- ++(2, 0) -- ++(0, 10) -- (P1);
        \end{tikzpicture}
    \end{center}
    \vfill
    \newpage
    Source: \hyperlink{page.1}{\textcolor{myBlue}{Big Process}} / \hyperlink{page.2}{\textcolor{myOrange}{Process 1}}
    \vfill
    \begin{center}
        \begin{tikzpicture}
            \node[box=myGreen] (SP1) at (0, 0) {Sub-Process 1};
            \node[box=myGreen] (SP2) at (0, -5) {Sub-Process 2};
            \node[box=myGreen] (SP3) at (0, -10) {Sub-Process 3};
            \draw[connect] (SP1) -- (SP2);
            \draw[connect] (SP2) -- (SP3);
            \draw[connect] (SP3.east) -- ++(2, 0) -- ++(0, 5) -- (SP2);
            \draw[connect] (SP2.west) -- ++(-2, 0) -- ++(0, 5) -- (SP1);
        \end{tikzpicture}
    \end{center}
    \vfill
\end{document}

结果是

在此处输入图片描述 在此处输入图片描述 在此处输入图片描述

相关内容