Tikz:流程图如何在一行上写标签

Tikz:流程图如何在一行上写标签

我正在使用 TikZ 设计流程图。在此流程图中,我有两种类型的框:

  • 一个普通的矩形
  • 钻石盒子(作为决定)

对于决策框,我需要在连接菱形和下面的框的线上方写上选择的结果:“是”或“否”。

我发布了一个流程,这样您就可以看到我是如何构建该流程的。

\documentclass[x11names]{article}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,chains} 
%%%<
\usepackage{verbatim}
\usepackage[active,tightpage]{preview}
\usetikzlibrary{positioning} %----permette il posizionamento relativo dei nodi
\usepackage[latin1]{inputenc} %----permette l' uso dei caratteri accentati
\usepackage[italian]{babel} %-----permette la sillabazione secondo le regole italiane
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{5mm}%    
\begin{document}https://preview.overleaf.com/public/xntbjwvtpkxb/images/4bb96421dbe314bc6c6e75376a3e10fc25eee129.jpeg 
% =================================================
% Set up a few colours questi sono i colori poi usati per le linee i connettori e il riempimento di alcune forme, variando il numero del colore, varia il coloreetc. tipo: riga di colore lcfree
\colorlet{lcfree}{Green3} 
\colorlet{lcnorm}{Blue3}
\colorlet{lccong}{Red3}

\providecommand{\cmark}[2][]{\relax} %------crea il comando \cmark utilizzato in seguito
% ----------------QUESTO PEZZO INDICA COME FARE LA CATENA ---!!!!!!!---
% Start the picture
\begin{tikzpicture}[%
    >=triangle 60,              % Nice arrows;variando i simboli > e =, cambia la forma della freccia
    start chain=going below,    % General flow is top-to-bottom unisce i blocchi andando da sopra a sotto
    node distance=16mm and 60mm, % Global setup of box spacing 16mm verticale 60 orizzontale
    every join/.style={norm},   % Default linetype for connecting boxes utilizzando lo stile norm/free/cong definiti a riga 87
    ]
% ------------------------------------------------------------------
%in questa area vengono definiti gli stili delle forme da inserire nelle griglie.Questi stili vengono poi usati per dare forma ai vari nodi, usando il nome dello stile come primo parametro del nodo. es. \node [proc, join...]
% A few box styles 
% <on chain> *and* <on grid> reduce the need for manual relative
% positioning of nodes
\tikzset{
%--il parametro align= allinea il testo all interno della forma (left, center, right)
    base/.style={draw, on chain, on grid, align=center, minimum height=4ex},
    proc/.style={base, rectangle, text width=8em},
    test/.style={base, diamond, aspect=2, text width=5em},
    term/.style={proc, rounded corners},
% coord node style is used for placing corners of connecting lines
  coord/.style={coordinate, on chain, on grid, node distance=6mm and 25mm},
% nmark node style is used for coordinate debugging marks
  nmark/.style={draw, cyan, circle, font={\sffamily\bfseries}},
%======================fine definizione stili delle forme
% Connector line styles for different parts of the diagram. qui si definiscono gli stili dei connettori. Il colore del connettore (lcnorm, lcfree, lccong) sono a loro volta definiti ella sezione (set up a few color alcune righe sopra)
  norm/.style={->, draw, lcnorm},
  free/.style={->, draw, lcfree},
  cong/.style={->, draw, lccong},
  it/.style={font={\small\itshape}} %questo DOVREBBE configurafre un font
}
% ----------------------------------inizio posizionamento forme--------
% Start by placing the nodes il parametro join serve a collegare il nodo con il precedente. per i collegamenti specifici (tipo nodo sssc0003 a nodo sssc0004, vedere il codice che inizia con: "All the other connections... alle righe succesive
%------*********inizio posizionamento delle forme I colonna******--------------------
% Use join to connect a node to the previous one ------uso di join per connettere i nodi ai blocchi precedenti--------------
\node [proc, densely dotted, it] (sspO0001) {Presentazione domanda};
\node [test, join] (sspo0002) {Domanda formalmente completa?};
\node [proc, join] (sspo0011) {Comunicazione avvio procedimento e convocazione CdS (endo > 90 gg.)};
\node [proc, join] (sspo0013) {trasmissione verbale conferenza o provvedimento finale};

\node [term, join] (sspo0099)    {chiusura procedimento};
%-----------------------------fine I colonna---------------
%---------------inizio II  e III colonna------------------------------
\node [proc ] (ssri-cap) [left=of sspO0001] {Comunicazione apertura pratica al reg imprese};
\node [proc, join] (ssri-cep) [left=of ssri-cap]  {comunicazione esito pratica al registro delle imrese};

%-----seconda colonna----------------------------
\node [proc, ] (sspo0003)[left=of sspo0011] {Comunicazione avvio procedimento e trasmissione richiesta pareri / atti};
\node [test, join] (sspo0004) {istanza necessita di integrazione da parte di utenti terzi?};
\node [proc, join] (sspo0005) {richiesta documentaz. integrativa (interruzione)};
\node [proc, join] (sspo0006) {ricezione documentazione integrativa};
\node [proc, join] (sspo0007) {trasmissione integrazione alle P.A.};
\node [test, join] (sspo0008) {ricezione pareri/atti nei termini?};
\node [test, join] (sspo0009) {parere positivo endoprocedimento?};
Presentazione osservazioni (10gg)
\node [proc, join] (sspo0010) {rilascio e trasmissione provvedimento};
\node [proc, join] (sssc9999) {chiusura procedimento};
\node [proc, ] (sspo0019) [right=of sspo0010]{Comunicazione motivi ostativi all'accoglimento istanza (art.10bis L.241/90)};
\node [test, join] (sspo0020) {Presentazione osservazioni (10gg)};
\node [test, join] (sspo0021) {Superamento dei motivi ostativi};
%-----terza colonna----------------------------
\node [test, ] (sspo0014)[right=of sspo0011] {irregolarit\'a formali?};
\node [proc, join] (sspo0015) {Richiesta documentazione mancante};
\node [proc, join] (sspo0017) {archiviazione istanza per carenza documentazione};
\node [proc, ] (sspo0016) [right=of sspo0015]{ricevimento documentazione mancante};
%\node [proc, join] (sssc9999) {chiusura procedimento};
\node [proc, ] (sspo005B)[left=of sspo0005] {richiesta doc. integrativa (sospensione)};
\node [proc, ] (sspo0018)[left=of sspo0008] {richiesta doc. integrativa (sospensione)};
%-------------------fine posizionamento nodi-----------------------------------https://preview.overleaf.com/public/rtkznwdyqxfw/images/909eaf975d88a4b576808e04852f55af05dd11cd.jpeg
%============disegno delle linee e scrittura esito=======
\draw [->,lcnorm] (sspO0001.west) -- (ssri-cap);
%------------------------------------------
\draw[->](sspo0002.east) -| (sspo0014) node[midway,above] {SI};
%--------------------------------------------
\draw[->] (sspo0004) -| (sspo005B);
\draw[->] (sspo005B) |- (sspo0006);
\draw [*->,lcnorm] (sspo0008) -- (sspo0018);
\draw[->] (sspo0011) -- (sspo0003);
\draw[->] (sspo0020.west) |- (sssc9999);
\draw[->] (sspo0021.west) -| (sssc9999.south);
\draw[->] (sspo0021.south) -| (sspo0010.south east);
\draw[->] (sspo0009.east) -| (sspo0019);
\draw[->] (sspo0014.west) |- (sspo0017);
\draw[->] (sspo0015) -- (sspo0016);
\draw[->] (sspo0016) |- (sspo0002.north);
 \end{tikzpicture}
% =================================================
\end{document} 

我做了一个测试(在sspo0002.east),但我不明白它如何用于其他节点。

有人能帮我吗?

答案1

垂直对齐节点之间的链接由 自动绘制join。我不知道如何在连接上定义标签/节点,但您可以在使用命令绘制这些标签后放置它们\path

\path (sspo0002) -- (sspo0011) node[midway,left] {SI};

作为您的代码的示例:

\documentclass[tikz,border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows,chains} 
%%%<
\usetikzlibrary{positioning} 
\usepackage[latin1]{inputenc}
\usepackage[italian]{babel} 
\begin{document}

\colorlet{lcfree}{green} 
\colorlet{lcnorm}{blue}
\colorlet{lccong}{red}

\providecommand{\cmark}[2][]{\relax} 

\begin{tikzpicture}[%
    >=triangle 60,
    start chain=going below,
    node distance=16mm and 60mm,
    every join/.style={norm},
    ]
% positioning of nodes
\tikzset{
    norm/.style={->, draw, lcnorm},
    base/.style={draw, on chain, on grid, align=center, minimum height=4ex},
    proc/.style={base, rectangle, text width=8em},
    test/.style={base, diamond, aspect=2, text width=5em},
    it/.style={font={\small\itshape}} %questo DOVREBBE configurafre un font
}
%
\node [proc, densely dotted, it] (sspO0001) {Presentazione domanda};
\node [test, join] (sspo0002) {Domanda formalmente completa?};
\node [proc, join] (sspo0011) {Comunicazione avvio procedimento e convocazione CdS (endo > 90 gg.)};


\path (sspo0002) -- (sspo0011) node[midway,left] {SI};

\end{tikzpicture}
\end{document} 

在此处输入图片描述

相关内容