Erstellen eines Flussdiagramms für die Gliederung einer Abschlussarbeit in TeX

Erstellen eines Flussdiagramms für die Gliederung einer Abschlussarbeit in TeX

Ich möchte für die Gliederung meiner Abschlussarbeit ein Flussdiagramm in LaTeX erstellen, das wie in der folgenden Abbildung aussieht. Ich habe versucht, den folgenden Code anzupassen, aber ich kam bei der Anordnung von C, D und E nicht weiter. Ich frage mich, ob mir jemand helfen kann. Vielen Dank im Voraus!

Bearbeitet:

\begin{figure}
\centering 
\begin{tikzpicture}[node distance=1.5cm]
\node (introduction) [structure] {Thesis};
\node (methodology) [structure, below =1.5cm of introduction] {A};
\node (theoretical) [structure, below =1.5cm of methodology] {B};
\node (model) [structure, below of=theoretical] {C};
\node (interviews) [structure,  below of=model] {D};
\node (results) [structure, below of=interviews] {E};
\node (discussion) [structure, below =of results] {F};
%arrows
\draw [arrow] (introduction) -- (methodology);
\draw [arrow] (methodology) -- (theoretical);
\draw [arrow] (theoretical) -- (model);
\draw [arrow] (model) -- (interviews);
\draw [arrow] (interviews) -- (results);
\draw [arrow] (results) -- (discussion);
    \end{tikzpicture}
\caption{OUTLINE} 
\end{figure}   
%%%%%%%%%%%%%%%%%%%%%%% 

Bildbeschreibung hier eingeben

Antwort1

Die Breite Bist sehr manuell, aber für dieses einfache Beispiel nicht sehr kompliziert.

Code

\documentclass[tikz]{standalone}
\usetikzlibrary{arrows.meta, chains, ext.paths.ortho}
\begin{document}
\begin{tikzpicture}[
  node distance = 10mm and 5mm,
  box/.style    = {
    rectangle, draw, font=\strut, minimum width=25mm, minimum height=10mm},
  boxie/.style  = {box, minimum width=15mm},
  arr/.style    = -Triangle,
  start chain   = ch going below, every join/.append style=arr]
\node[box, on chain] {Thesis};
\node[box, on chain, join] {A};
\node[box, on chain, join, minimum width = 3*15mm + 2*5mm + 2\pgflinewidth] {B};
\node[boxie, on chain, join] {D};
\scoped[start branch=left going base left]
  \node[boxie, on chain, join=with ch-3 by only vertical second]{C};
\scoped[start branch=right going base right]
  \node[boxie, on chain, join=with ch-3 by only vertical second]{E};

\node[box, on chain, join,
                     join=with ch/left-end  by vertical horizontal,
                     join=with ch/right-end by vertical horizontal] {F};
\end{tikzpicture}
\end{document}

Ausgabe

Bildbeschreibung hier eingeben

Antwort2

Hm, irgendwie scheint die Syntax falsch zu sein. Daher habe ich beschlossen, einiges davon und einige Auswahlmöglichkeiten in LaTeX zu zeigen, anstatt Ihren Code zu reparieren. Grundlegende Themen:

  • zumindest die erste Note über absolute Koordinaten positionieren
  • im Beispiel habe ich den 2. auch durch absolute Koordinaten platziert
  • Es ist bequemer, die relative Positionierung zu verwenden, hier über below, leftundright
  • Ich habe die Pfeile nach Methodik ein wenig variiert
  • Sie können sie alle wie Th.c tun, und es wird einfach gut aussehen
  • zu Th.d zeigt Ihnen einige andere Verbindungspunkte; Sie können diese auch in absoluten Koordinaten verschieben
  • Th.c to Results ahmt Ihre Skizze nach
  • Auf der anderen Seite kann eine Kurve so aussehen

Wenn Sie es also noch nicht getan haben, verbringen Sie etwas Zeit mit der minimalen Einführung unterhttps://www.ctan.org/pkg/pgf. Ergebnisse

\documentclass[10pt,border=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning}% needed for relative positioning

\begin{document}
% demonstarting some choices
\tikz{
    % ~~~ nodes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    %     absolute coordinates
    \node [draw] (T) at (0,0)       {Thesis};% [draw] will draw the box around the node
    \node [draw] (A) at (0, -1)     {Introduction};
    %     relative coordinates from now on
    \node [draw] (B) [below=of A]   {Methodology};
    
    \node [draw] (D) [below=of B]   {Theoretical d};
    \node [draw] (C) [left=of D]    {Theoretical c};
    \node [draw] (E) [right=of D]   {Theoretical e};

    \node [draw] (F) [below=of D]   {Results};
    
    % ~~~ arrows ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    \draw [->] (T) -- (A);% straight
    \draw [->] (A) -- (B);
    \draw [->] (B) -- (D);
    \draw [->] (D) -- (F);
    
    \draw [->] (B) -- (C);
    \draw [->] (B.east) -- (E.north east);
    
    \draw [->] (C) |- (F);% first down, then horizontally
    \draw [->] (E) to [bend left] (F);
}

\end{document}

Antwort3

Ich habe etwas erstellt, das als Ausgangspunkt dienen könnte. Ein echter Zauberer würde es wahrscheinlich nicht so lösen, aber es funktioniert.

In die Präambel musste ich etwas schreiben wie

\usetikzlibrary{positioning,shapes,shadows,arrows,calc,arrows.meta}
\tikzstyle{structure} = [rectangle, minimum width=3cm, minimum height=1cm, align=center, text width=2.5cm, draw=black, very thick]
\tikzstyle{arrow}=[-,ultra thick,{-Stealth[]}]

Mit diesen Definitionen erzeugt der folgende Code eine Zeichnung, die Ihrer etwas ähnelt:

\begin{tikzpicture}[node distance=1.5cm]
\node (introduction) [structure] {Thesis};
\node (methodology) [structure, below of=introduction, yshift=-0.5cm] {A};
\node (theoretical) [structure, below of=methodology, yshift=-0.5cm] {B};
\node (model) [structure, below of=theoretical, xshift=-4cm, yshift=-0.5cm] {C};
\node (interviews) [structure, right of=model, xshift=2.5cm] {D};
\node (results) [structure, right of=interviews, xshift=3cm] {E};
\node (discussion) [structure, below of=interviews, yshift=(-0.5cm)] {F};

%lines
\draw [arrow] (introduction.south) -- (methodology.north);
\draw [arrow] (methodology.south) -- (theoretical.north);
\draw [arrow] ($(theoretical.south west)!.3!(theoretical.south)$) -- ++(0.0,-0.5) -| (model.north);
\draw [arrow] (theoretical.south) -- ++(0,-0.5) -| (interviews.north);
\draw [arrow] ($(theoretical.south)!.7!(theoretical.south east)$) -- ++(0.0,-0.5) -| (results.north);
\draw [arrow] (model.east) -- (interviews.west);
\draw [arrow] (interviews.east) -- (results.west);
\draw [arrow] (model.south) -- ++(0.0,-0.5)-| ($(discussion.north west)!.3!(discussion.north)$);
\draw [arrow] (interviews) -- ++(0,-1) -| (discussion);
\draw [arrow] (results) -- ++(0,-1) -| ($(discussion.north)!.7!(discussion.north east)$);
\end{tikzpicture}

verwandte Informationen