순서도에서 화살표 경로 코딩하기

순서도에서 화살표 경로 코딩하기

Zarko의 코드를 일부 변경했습니다.여기나만의 순서도를 만들어 보세요.

\documentclass[a4paper,11pt,twoside]{book}
\usepackage[a4paper,left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm]{geometry}
\usepackage{amsmath, amsthm, amssymb, amsfonts}

\usepackage[english,greek]{babel}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
% shapes
\usetikzlibrary{shapes}
%arrows
\usetikzlibrary{arrows,arrows.meta}
%decorations
\usetikzlibrary{decorations.text,decorations.pathreplacing,patterns,shadows.blur,fadings}
% miscellaneous
\usetikzlibrary{calc,quotes,positioning,fpu,angles,fit,spy,chains}

\begin{document}

    \begin{tikzpicture}[
  node distance = 8mm and 16mm,
  start chain = A going below,
  base/.style = {draw, minimum width=32mm, minimum height=8mm,
    align=center, on chain=A},
  startstop/.style = {ultra thick,double,base, rectangle, rounded corners, fill=white},
  process/.style = {ultra thick,base, rectangle, fill=white},
  io/.style = {ultra thick,base, trapezium, 
    trapezium left angle=70, trapezium right angle=110,
    fill=white},
  decision/.style = {ultra thick,base, diamond, fill=white},
  every edge quotes/.style = {auto=right}]
  ]
  \node [startstop]       {Έναρξη};     % <-- A-1
  \node [io]              {Εισαγωγή}; %A-2
  \node [decision]        {Ερώτηση}; %Α-3
  \node [io]              {Απάντηση}; %A-4
  \node [startstop]       {Τέλος};      % <-- A-5
  \node [process, right=of A-3]    {Κάτι};     % <-- A-6

  \draw [arrows=-Stealth] 
  (A-1) edge          (A-2)
  (A-2) edge   (A-3)
  (A-3) edge  ["όχι"]     (A-4)
    (A-3) edge  ["ναι"]     (A-6)
  (A-4) edge    (A-5)
  (A-6) |- ($(A-1.south east)!0.5!(A-2.north east)$)
  -| ([xshift=7mm] A-2.north)
  ;
  \end{tikzpicture}
\end{document}

이것이 어떻게 생겼는지입니다.

여기에 이미지 설명을 입력하세요

A-3문제는 (다이아몬드 "Ερώτισι") 에서 A-2(평행사변형 "ΕισαγΩγή") 까지 화살표를 그리는 방법을 모른다는 것입니다.A-6 .나는 다음과 같은 것을 원합니다 :

여기에 이미지 설명을 입력하세요

내가 어떻게 해?

답변1

다음을 수행하여 코드를 가능한 한 적게 수정했습니다.

  1. every join/.style=-Stealth체인을 다시 구성하지 않고도 화살표를 자동으로 그리는 옵션을 추가했습니다 .
  2. 노드 A-6을 체인에 결합하지 않고, 추적하여 좌표로 변환하지 않고 노드 A-2의 오른쪽 상단에 배치했습니다.

    \node [on chain,coordinate, above right=3mm and 20 mm of A-2]{}; % <-- A-6

  3. 따라서 (A-6)이 체인에 연결되지 않았기 때문에 루프에 대한 화살표를 만듭니다. \draw [arrows=-Stealth] (A-3) -| node[pos=.25,below]{Κάτι}(A-6)-| (A-2.30);
  4. 화살표는 이미 체인에 의해 만들어졌기 때문에 더 이상 아무것도 그리지 않고 라벨만 배치합니다. \path (A-3) --node[left]{όχι} (A-4);

스크린샷

\documentclass[a4paper,11pt,twoside]{book}
\usepackage[a4paper,left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm]{geometry}
\usepackage{amsmath, amsthm, amssymb, amsfonts}
\usepackage[utf8]{inputenc}
%\usepackage[greek]{babel}

% babel dont work for me, i took these 5 lines from the answer of Zarko
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{greek}
\setromanfont{Minion Pro} %% Select your favourite font
\setotherlanguage{english}

\usepackage{tikz}
% shapes
\usetikzlibrary{shapes}
%arrows
\usetikzlibrary{arrows,arrows.meta}
%decorations
\usetikzlibrary{decorations.text,decorations.pathreplacing,patterns,shadows.blur,fadings}
% miscellaneous
\usetikzlibrary{calc,quotes,positioning,fpu,angles,fit,spy,chains}

\begin{document}

    \begin{tikzpicture}[
  node distance = 8mm and 16mm,
  start chain = A going below,
  base/.style = {draw, minimum width=32mm, minimum height=8mm,
    align=center, on chain=A,join},
  startstop/.style = {ultra thick,double,base, rectangle, rounded corners, fill=white},
  process/.style = {ultra thick,base, rectangle, fill=white},
  io/.style = {ultra thick,base, trapezium, 
    trapezium left angle=70, trapezium right angle=110,
    fill=white},
  decision/.style = {ultra thick,base, diamond, fill=white},
  every edge quotes/.style = {auto=right},
  every join/.style=-Stealth]
  ]
  \node [startstop]       {Έναρξη};     % <-- A-1
  \node [io]              {Εισαγωγή}; %A-2
  \node [decision]        {Ερώτηση}; %Α-3
  \node [io]              {Απάντηση}; %A-4
  \node [startstop]       {Τέλος};      % <-- A-5
  \node [on chain,coordinate, above right=3mm and 20 mm of A-2]{};     % <-- A-6

  \draw [arrows=-Stealth] 
  (A-3) -| node[pos=.25,below]{Κάτι}(A-6)-| (A-2.30);
  \draw  (A-3) --node[left]{όχι} (A-4);
  \end{tikzpicture}
\end{document}

답변2

A-3노드 "A-6"을 제거하고 에서 까지 화살표를 그리기만 하면 됩니다 A-2. 나는 또한 로딩 tikz라이브러리와 이미지에 대한 약간 단순화/단축된 코드를 재배치할 기회를 얻었습니다 .

\documentclass[a4paper,11pt,twoside]{book}
\usepackage[a4paper,
            margin=2.5cm]{geometry}
\usepackage{amsmath, amsthm, amssymb}

\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{greek}
\setromanfont{Minion Pro} %% Select your favorite font
\setotherlanguage{english}

\usepackage{tikz}
\usetikzlibrary{angles, arrows, arrows.meta,
                calc, chains,
                decorations.text, decorations.pathreplacing,
                fadings, fit, 
                patterns, positioning,
                quotes,
                shapes, shadows.blur,
                spy}

\begin{document}
\centering
    \begin{tikzpicture}[
node distance = 8mm and 4mm,
  start chain = A going below,
  base/.style = {draw, minimum width=32mm, minimum height=8mm,
                  align=center, on chain=A, join=by -Stealth},
startstop/.style = {ultra thick,double,base, rectangle, rounded corners, fill=white},
  process/.style = {ultra thick,base, rectangle, fill=white},
    io/.style = {trapezium, trapezium stretches,
                 trapezium left angle=70, trapezium right angle=110,       
                 base, ultra thick, fill=white},
  decision/.style = {ultra thick,base, diamond, fill=white},
every edge quotes/.style = {auto=right}
                        ]
  \node [startstop]       {Έναρξη};     % <-- A-1
  \node [io]              {Εισαγωγή};  
  \node [decision]        {Ερώτηση};  
  \node [io]              {Απάντηση};  
  \node [startstop]       {Τέλος};      % <-- A-5

\coordinate[above left=of A-2.east] (aux);
\draw [arrows=-Stealth]
        (A-3.east)  to  ["ναι"] ++ (1,0) |- (aux) -- (aux |- A-2.north);
\path   (A-3)       to  ["όχι"]     (A-4);
    \end{tikzpicture}
\end{document}

여기에 이미지 설명을 입력하세요

편집 1:XeLaTeX 엔진으로 컴파일되었습니다.

편집 2:MWE에 있는 모든 라이브러리의 라이브러리는 실제로 다음 항목에만 사용됩니다.

\usetikzlibrary{arrows.meta,
                chains,
                positioning,
                quotes,
                shapes
                }

관련 정보