BEARBEITEN

BEARBEITEN

Ich denke, das wäre eine gute Frage, wie man ein angepasstes Flussdiagramm (Ihr eigenes) in MS Word in LaTeX überträgt. Nun, ich habe eine World-Datei angehängt und versuche, diese in LaTex zu konvertieren. Das Speichern unter „Typ“ LaTeX hat nicht funktioniert und ein unsinniges PDF erzeugt. Was wäre also der beste Weg?

Bildbeschreibung hier eingeben

Ich weiß nicht, wie ich hier eine Word-Datei anhängen kann. Deshalb habe ich einen Schnappschuss davon eingefügt.

Eine Möglichkeit besteht darin, dies in LaTeX neu zu tippen, aber ich traue mich nicht, das zu tun (ich habe Schwierigkeiten, diese Pfeile zu haben). Wenn ich dies als Abbildung in die LaTeX-Quelldatei einfüge, stimmen die Schriftarten eindeutig nicht mit den anderen Angaben auf dem Papier überein. Daher möchte ich das konvertieren (vielleicht als einfachste Möglichkeit).

Antwort1

Alans Antwortfunktioniert einwandfrei, aber mit der aktuellen Version von Forest muss nicht edge pathvon Grund auf neu definiert werden. Stattdessen können wir die edgesBibliothek mit der Option verwenden forked edges. Darüber hinaus können wir eliminieren, growth parent anchor=eastda es nichts bewirkt (auch nicht in der alten Version von Forest), und wir können die Anker parentund childrenanstelle von eastund verwenden west, um den Code flexibler zu gestalten.

parent anchor=children,
child anchor=parent,
forked edges,
edge={->,>=latex},

Tatsächlich grow=eastreicht es allein aus, sodass wir parent anchorauf child anchordie Spezifikationen ganz verzichten können.

Dies gibt uns den folgenden Code für dieselbe Ausgabe, die Alan in seiner Antwort gezeigt hat.

\documentclass[tikz,multi,border=10pt]{standalone}
\usepackage[edges]{forest}
\begin{document}
\begin{forest}
  for tree={
    grow=east,
    math content,
    edge={->,>=latex},
  },
  forked edges
  [\tau>\tau^0
    [A_x<\tau<A_l
    ]
    [D
      [E]
      [F]
    ]
    [\tau<A_x
      [{\zeta^n=\zeta^n-1}
      ]
    ]
  ]
\end{forest}
\end{document}

Bei genauerem Hinsehen könnten die Zeilen allerdings besser sein:

perverser Pfeil

Die Standarddefinition von forked edgesist

  forked edges/.style={
    for tree={parent anchor=children},
    for descendants={child anchor=parent,forked edge}
  },

Versuchen wir also, es so neu zu definieren, dass es forked edgenur verwendet wird, wenn ein Knoten mehr als ein untergeordnetes Element hat, indem wir diese Neudefinition hinzufügen:

\forestset{
  forked edges/.style={
    for tree={parent anchor=children},
    for descendants={
      child anchor=parent,
      if={n_children("!u")==1}{}{
        forked edge
      },
    }
  },
}

Das ist besser:

weniger pervers

Der Pfeil ist jedoch immer noch abgewinkelt - er ist nicht ganz horizontal. Was wir tun müssen, ist eine Alternative edge pathfür den Fall zu definieren, dass es genau ein Kind gibt.

Die Standardkante wird vom übergeordneten Anker des übergeordneten Knotens (!u.parent anchor)zum untergeordneten Anker des untergeordneten Knotens gezeichnet (.child anchor). Wir möchten, dass der Anfang des Pfeils horizontal mit ausgerichtet ist (.child anchor). (Wir könnten den Endpunkt natürlich auch mit dem übergeordneten Anker des übergeordneten Knotens ausrichten.)

\forestset{
  forked edges/.style={
    for tree={parent anchor=children},
    for descendants={
      child anchor=parent,
      if={n_children("!u")==1}{
        edge path'={
          (!u.parent anchor |- .child anchor) -- (.child anchor)
        },
      }{
        forked edge,
      },
    }
  },
}

Dadurch entsteht der gesuchte horizontale Pfeil:

ungeknickter Pfeil

Dies ist jedoch möglicherweise nicht die beste Lösung. Wenn die Größe der übergeordneten und untergeordneten Knoten zu unterschiedlich ist, kann dies zu einer seltsamen Ausrichtung führen. Vielleicht sollten wir Forest stattdessen anweisen, das untergeordnete Element am übergeordneten Element auszurichten, sodass der untergeordnete Anker des untergeordneten Elements mit dem übergeordneten Anker des übergeordneten Elements übereinstimmt.

\forestset{
  forked edges/.style={
    for tree={parent anchor=children},
    for descendants={
      child anchor=parent,
      if={n_children("!u")==1}{
        !u.calign=child edge,
      }{
        forked edge,
      },
    }
  },
}

macht den Trick.

Im Moment sieht das Ergebnis so aus:

Zwischenbaum

Das ist zwar besser, aber es wäre schön, wenn wir das mittlere Kind am übergeordneten Element ausrichten könnten, wenn das übergeordnete Element eine ungerade Anzahl von Kindern hat. Zum Beispiel, wenn Ddie Kante von an der Linie ausgerichtet wäre, die vom Stammknoten gezogen wird.

Das ist etwas schwieriger, aber nicht viel. Wir können den calign=child edgeTrick erneut anwenden und das mittlere Kind als „primäres“ Kind seines Elternteils festlegen.

Wir können dies in die Präambel am Anfang unserer forestUmgebung einfügen:

\begin{forest}
  for tree={
    ...
    if={isodd(n_children())}{
      calign primary child/.pgfmath={(n_children()+1)/2},
      calign=child edge,
    }{},
  },

Da jeder Knoten mit genau einem Kind eine ungerade Anzahl von Kindern hat, können wir die Neudefinition von auch weglassen, forked edgesda wir jetzt sowieso einen geraden Pfeil erhalten:

letzter Baum

\documentclass[tikz,multi,border=10pt]{standalone}
\usepackage[edges]{forest}
\begin{document}
\begin{forest}
  for tree={
    grow=east,
    math content,
    edge={->,>=latex},
    if={isodd(n_children())}{
      calign primary child/.pgfmath={(n_children()+1)/2},
      calign=child edge,
    }{}
  },
  forked edges
  [\tau>\tau^0
    [A_x<\tau<A_l
    ]
    [D
      [E]
      [F]
    ]
    [\tau<A_x
      [{\zeta^n=\zeta^n-1}
      ]
    ]
  ]
\end{forest}
\end{document}

Griechischen Code schamlos stehlen vonMarco:

\begin{forest}
  for tree={
    grow'=east,
    math content,
    edge={->,>=latex},
    if={isodd(n_children())}{
      calign primary child/.pgfmath={(n_children()+1)/2},
      calign=child edge,
    }{}
  },
  forked edges
  [\tau>\tau^0
    [\tau<A_x
      [{\zeta^n=\zeta^{n-1}}]
      [{\zeta^n=\zeta^{n-1}}]
      [{\zeta^n=\zeta^{n-1}}]
    ]
    [A_x<\tau<A_l
      [\sigma<C_{a}(T-A_{x})
        [{\zeta^n=\zeta^{n-1}}]
        [{\zeta^n=\zeta^{n-1}}]
        [{\zeta^n=\zeta^{n-1}}]
      ]
      [\sigma>C_{a}(T-A_{x})
        [{\xi^{n}=\frac{\xi^{0}}{2}\cos \left ( a_{A}\left (\Gamma-A_{x}-\frac{\sigma}{C_{a}}  \right ) \right )}]
        [{\xi_{s}^{n}=\xi_{s}^{n}-\frac{\xi_{s}^{n}}{\xi_{s}^{n}}-(\xi^{0}-\xi^{n})}]
        [{\xi_{s}^{n}=\xi_{s}^{n}-\frac{\xi_{s}^{n}}{\xi_{s}^{n}}-(\xi^{0}-\xi^{n})}]
      ]
    ]
  ]
\end{forest}

mehr Baum

BEARBEITEN

Ihr Code erzeugt „Lücken“, weil [[<something>]]er einen leeren Knoten und dann einen Knoten mit erzeugt [<something>]. Um den leeren Knoten zu entfernen, sagen Sie einfach [<something>].

\documentclass{article}
\usepackage{forest-1}
\begin{document}
\begin{forest}
  for tree={
    grow=east,
    parent anchor=east,
    child anchor=west,
    math content,
    edge={->, >={latex}},
    edge path={\noexpand\path[\forestoption{edge}] (!u.parent anchor) -- +(5pt,0pt) |- (.child anchor) \forestoption{edge label};}
  }
  [T>T^0
    [T>A_f
      [C_a(T-A_f) <\sigma <C_a (T-A_s)
          [  {\zeta_s^n=\zeta_s^0-\frac{\zeta_s^0}{\zeta^0}(\zeta^0-\zeta^n)} ]
          [  {\zeta_T^n=\zeta_T^0-\frac{\zeta_T^0}{\zeta^0}(\zeta^0-\zeta^n)} ]
          [{\zeta^n=\frac{\zeta^0}{2}(cos \big (\alpha_A(T-A_s-\frac{\sigma}{C_a})\big )+1)} ]
      ]
      [\sigma<C_a(T-A_s)
        [  {\zeta^n=\zeta^{n-1}} ]
        [  {\zeta_s^n=\zeta_s^{n-1}} ]
        [  {\zeta_T^n=\zeta_T^{n-1}} ]
      ]
    ]
    [A_s<T<A_f
      [\sigma<C_a(T-A_s)
            [  {\zeta_s^n=\zeta_s^0-\frac{\zeta_s^0}{\zeta^0}(\zeta^0-\zeta^n)} ]
            [  {\zeta_T^n=\zeta_T^0-\frac{\zeta_T^0}{\zeta^0}(\zeta^0-\zeta^n)} ]
            [{\zeta^n=\frac{\zeta^0}{2}(cos \big (\alpha_A(T-A_s-\frac{\sigma}{C_a})\big )+1)}]
        [\sigma>C_a(T-A_s)
            [  {\zeta^n=\zeta^{n-1}} ]
            [  {\zeta_s^n=\zeta_s^{n-1}} ]
            [  {\zeta_T^n=\zeta_T^{n-1}} ]
        ]
      ]
    ]
    [T<A_s
      [  {\zeta^n=\zeta^{n-1}} ]
      [  {\zeta_s^n=\zeta_s^{n-1}} ]
      [  {\zeta_T^n=\zeta_T^{n-1}} ]
    ]
  ]
\end{forest}
\end{document}

weniger Lücken

Beachten Sie, dass Sie mit Version 1Tunmüssen Sie angeben parent anchor=east, child anchor=westund ändern edge path. Es gibt kein forked edges. Außerdem ist es nicht einfach, den Knick zu beseitigen, wenn nur ein Kind vorhanden ist, da calign=child edgees in Versionen vor 2.01 fehlerhaft ist. Sie könnten es trotzdem tun, aber es wäre viel einfacher, es zu aktualisieren, als den Fehler zu umgehen. Dies ist kein Problem, wenn Ihr Baum keine einzigen Kinder hat, aber wenn Sie andere Bäume haben, könnte es eines sein. Aus ähnlichen Gründen ist es auch nicht einfach, die Kanten auszurichten. Sie müssten etwas mit tun, edge pathdamit es funktioniert.

Mit dem aktuellen Paket hingegen lässt sich Ihr Baum ganz einfach so anpassen und der Code ist auch einfacher:

ausgerichteter Baum

\documentclass{article}
\usepackage[edges]{forest}
\begin{document}
\begin{forest}
  for tree={
    grow'=east,
    math content,
    edge={->,>=latex},
    if={isodd(n_children())}{
      calign primary child/.pgfmath={(n_children()+1)/2},
      calign=child edge,
    }{}
  },
  forked edges
  [T>T^0
    [T>A_f
      [C_a(T-A_f) <\sigma <C_a (T-A_s)
          [  {\zeta_s^n=\zeta_s^0-\frac{\zeta_s^0}{\zeta^0}(\zeta^0-\zeta^n)} ]
          [  {\zeta_T^n=\zeta_T^0-\frac{\zeta_T^0}{\zeta^0}(\zeta^0-\zeta^n)} ]
          [{\zeta^n=\frac{\zeta^0}{2}(cos \big (\alpha_A(T-A_s-\frac{\sigma}{C_a})\big )+1)} ]
      ]
      [\sigma<C_a(T-A_s)
        [  {\zeta^n=\zeta^{n-1}} ]
        [  {\zeta_s^n=\zeta_s^{n-1}} ]
        [  {\zeta_T^n=\zeta_T^{n-1}} ]
      ]
    ]
    [A_s<T<A_f
      [\sigma<C_a(T-A_s)
            [  {\zeta_s^n=\zeta_s^0-\frac{\zeta_s^0}{\zeta^0}(\zeta^0-\zeta^n)} ]
            [  {\zeta_T^n=\zeta_T^0-\frac{\zeta_T^0}{\zeta^0}(\zeta^0-\zeta^n)} ]
            [{\zeta^n=\frac{\zeta^0}{2}(cos \big (\alpha_A(T-A_s-\frac{\sigma}{C_a})\big )+1)}, calign with current]
        [\sigma>C_a(T-A_s)
            [  {\zeta^n=\zeta^{n-1}} ]
            [  {\zeta_s^n=\zeta_s^{n-1}} ]
            [  {\zeta_T^n=\zeta_T^{n-1}} ]
        ]
      ]
    ]
    [T<A_s
      [  {\zeta^n=\zeta^{n-1}} ]
      [  {\zeta_s^n=\zeta_s^{n-1}} ]
      [  {\zeta_T^n=\zeta_T^{n-1}} ]
    ]
  ]
\end{forest}
\end{document}

Antwort2

Dies ist mit nicht sehr schwierig forest. Das folgende Beispiel soll Ihnen den Einstieg erleichtern.

\documentclass{article}
\usepackage{forest}
\begin{document}

\begin{forest}for tree={
    grow=east
    parent anchor=east,
    child anchor=west,
    math content,
    edge path={\noexpand\path[\forestoption{edge},->, >={latex}] 
         (!u.parent anchor) -- +(5pt,0pt) |- (.child anchor)
         \forestoption{edge label};}}
[\tau>\tau^0  [A_x<\tau<A_l ] [D [E ] [F ]][\tau<A_x [  {\zeta^n=\zeta^n-1} ]]]
\end{forest}
\end{document}

Ausgabe des Codes

Antwort3

Bedenken Sie, dass dies überhaupt nicht der richtige Ansatz ist, aber ich bin kein Experte und dies ist der einzige Weg, den ich kenne.

\documentclass[border=0.5cm]{standalone}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
    % \draw [help lines] (0,0) grid (13,13);
    \draw [thick] (0,0) -- (0,10);
    \draw [thick,-latex] (0,5) -- + (0.5,0) node [right] {$A<T<A_{f}$};
    \draw [thick,-latex] (2.8,5) -- + (0.5,0);
    \draw [thick] (3.3,3.5) -- (3.3,6.5);
    \draw [thick,-latex] (3.3,3.5) -- + (0.5,0) node [right] {$\sigma<C_{a}(T-A_{x})$};
    \draw [thick,-latex] (3.3,6.5) -- + (0.5,0) node [right] {$\sigma>C_{a}(T-A_{x})$};
    \draw [thick,-latex] (0,10) -- + (0.5,0) node [right] {$T<A$};
    \draw [thick,-latex] (1.8,10) -- + + (0.5,0);
    \draw [thick] (2.3,9) -- (2.3,11);
    \draw [thick,-latex] (2.3,9) -- + (0.5,0) node [right] {$\xi^{n}=\xi^{n-1}$};
    \draw [thick,-latex] (2.3,10) -- + (0.5,0) node [right] {$\xi^{n}=\xi^{n-1}$};
    \draw [thick,-latex] (2.3,11) -- + (0.5,0) node [right] {$\xi_{T}^{n}=\xi_{T}^{n-1}$};
    \draw [thick,-latex] (6.5,6.5) -- + (0.5,0);
    \draw [thick] (7,5.8) -- + (0,1.4);
    \draw [thick,-latex] (7,5.8) -- + (0.5,0) node [right] {$\xi^{n}=\xi^{n-1}$};
    \draw [thick,-latex] (7,6.5) -- + (0.5,0) node [right] {$\xi^{n}=\xi^{n-1}$};
    \draw [thick,-latex] (7,7.2) -- + (0.5,0) node [right] {$\xi_{T}^{n}=\xi_{T}^{n-1}$};
    \draw [thick,-latex] (6.5,3.5) -- + (0.5,0);
    \draw [thick] (7,2.5) -- + (0,2);
    \draw [thick,-latex] (7,2.5) -- + (0.5,0) node [right] {$\xi^{n}=\frac{\xi^{0}}{2}\cos \left ( a_{A}\left (\Gamma-A_{x}-\frac{\sigma}{C_{a}}  \right ) \right )$};
    \draw [thick,-latex] (7,3.5) -- + (0.5,0) node [right] {$\xi_{s}^{n}=\xi_{s}^{n}-\frac{\xi_{s}^{n}}{\xi_{s}^{n}}-(\xi^{0}-\xi^{n})$};
    \draw [thick,-latex] (7,4.5) -- + (0.5,0) node [right] {$\xi_{s}^{n}=\xi_{s}^{n}-\frac{\xi_{s}^{n}}{\xi_{s}^{n}}-(\xi^{0}-\xi^{n})$};
\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen