【问题标题】:Weird diagrams using chains within tikz在 tikz 中使用链的奇怪图表
【发布时间】:2022-01-02 20:14:30
【问题描述】:

我正在尝试使用 LaTeX 中的 tikz 包复制我使用 Microsoft Visio 制作的一些图表。基本图表相对容易构建,但是当要添加两个以上的节点时,它变得非常棘手......我似乎找不到任何文档证明我需要居中和对齐节点就像我在 Visio 中所做的那样。

这些是 MS Visio 图表:

但这就是我现在使用 Tikz 得到的:

这是一个最小的可重现示例:

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage{tikz}
\usepackage{svg}
\usepackage{amsmath}

\usetikzlibrary{shapes.geometric, arrows, chains}

%%
%%TikZ Settings
\tikzstyle{main} = [rectangle, minimum width=3cm, minimum height=0.6cm,text centered, text width=3cm, draw=black, fill=black!30]
\tikzstyle{arrow} = [thick,->,>=stealth]

\begin{document}

%The "Remediação" diagram

\begin{tikzpicture}[node distance=1.5cm]

    \node (principal) [main] {Remediação};
    \coordinate[below of=principal] (a);
    \begin{scope}[start chain=going right]
    \node (rem-vuln-c-patch) [main, on chain, below of=principal, left of=a] {Remediação de Vulnerabilidade Normal com \textit{patch}};
    \node (rem-vuln-c-c-patch) [main, on chain] {Remediação de Vulnerabilidade Crítica com \textit{patch}};
    \node (rem-vuln-config) [main, on chain] {Remediação de Vulnerabilidade por má configuração};
    \node (gest-vuln-s-patch) [main, on chain] {Gestão de Vulnerabilidade sem \textit{patch}};
    \end{scope}
    
    \node(gest-risco) [main, align=center, below of=rem-vuln-c-c-patch] {Gestão de Risco};
    
    \draw [arrow] (principal) -| (rem-vuln-c-patch);
    \draw [arrow] (principal) -| (rem-vuln-c-c-patch);
    \draw [arrow] (principal) -| (rem-vuln-config);
    \draw [arrow] (principal) -| (gest-vuln-s-patch);
    \draw [arrow] (gest-vuln-s-patch) |- (gest-risco);
    \draw [arrow] (gest-risco) -| (rem-vuln-c-patch);
    \draw [arrow] (gest-risco) -- (rem-vuln-c-c-patch);
    
\end{tikzpicture}

% The "Balanço" diagram

\begin{tikzpicture}[node distance=1.5cm]

    \node (principal) [main] {Balanço};
    \coordinate[below of=principal] (a);
    \begin{scope}[start chain=going right]
    \node (lic-apr) [main, on chain, below of=principal, left of=a] {Lições aprendidas};
    \node (reu-retro) [main, on chain] {Reunião de Retrospetiva};
    \node (cri-rel-exec) [main, on chain] {Criação do relatório executivo};
    \end{scope}
    
    \draw [arrow] (principal) -| (lic-apr);
    \draw [arrow] (principal) -| (reu-retro);
    \draw [arrow] (principal) -| (cri-rel-exec);
    
\end{tikzpicture}

\end{document}

【问题讨论】:

  • 你能做一个可编译的minimal reproducible example吗?
  • @samcarter_is_at_topanswers.xyz 这是一个特定的问题。我不能比这更概括它,因为这与定位以及链和图表中的节点数量有关。我能做的最好的事情就是用字母交换真实的文本,但我认为它不会有太大变化
  • 当然是具体的,但是你可以添加一个可编译的文档,包括一个文档类和必要的包。
  • @samcarter_is_at_topanswers.xyz 哦,确定!我刚刚更新了这些信息。

标签: latex diagram tikz xelatex overleaf


【解决方案1】:

使用树可能比使用链更容易:

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage{tikz}
\usepackage{svg}
\usepackage{amsmath}

\usetikzlibrary{shapes.geometric, arrows, chains,positioning}

%%
%%TikZ Settings
\tikzstyle{main} = [rectangle, minimum width=3cm, minimum height=2cm,text centered, text width=3cm, draw=black, fill=black!30]
\tikzstyle{arrow} = [thick,->,>=stealth]

\begin{document}

%The "Remediação" diagram

\begin{tikzpicture}[
  level distance=3cm,
  sibling distance=4cm,
  edge from parent path={[thick,->](\tikzparentnode.south) -- ++(0,-1cm) -| (\tikzchildnode.north)}
]

  \node[main,minimum height=0.6cm] (principal) {Remediação}
    child { node[main] (rem-vuln-c-c-patch)  {Remediação de Vulnerabilidade Crítica com \textit{patch}} }
    child { node[main] (rem-vuln-c-patch)  {Remediação de Vulnerabilidade Normal com \textit{patch}} }
    child { node[main] (rem-vuln-config)  {Remediação de Vulnerabilidade por má configuração} }
    child { node[main] (gest-vuln-s-patch) {Gestão de Vulnerabilidade sem \textit{patch}} };
    
  \node(gest-risco) [main, align=center, below=4.5cm of principal,minimum height=0.6cm] {Gestão de Risco};
    
  \draw[->,thick] (gest-risco) -| (rem-vuln-c-c-patch);
  \draw[->,thick] (gest-risco) -| (gest-vuln-s-patch);
  \draw[->,thick] ([xshift=-1.0cm]gest-risco.north) -| ([xshift=1.8cm]rem-vuln-c-patch);

\end{tikzpicture}



\end{document}

【讨论】:

  • 确实有帮助!谢谢!
  • @MiguelSantana 不客气!
猜你喜欢
  • 1970-01-01
  • 2020-08-06
  • 2018-05-01
  • 2020-01-22
  • 1970-01-01
  • 2017-04-22
  • 1970-01-01
  • 2018-11-09
  • 1970-01-01
相关资源
最近更新 更多