Pfeile in TikZ mergen

Tabellen und Grafiken erstellen und anordnen


ThoRie
Forum-Century
Forum-Century
Beiträge: 117
Registriert: Fr 12. Mai 2017, 11:57

Pfeile in TikZ mergen

Beitrag von ThoRie »

Hallo.

Ich habe ein Problem mit folgendem Code:

Code: Alles auswählen

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{intersections}
\begin{document}
\begin{tikzpicture}
\node (A) at (0,0){$6$};
\node (B) at (.5,0){$9$};
\node (C) at (1,0){$2$};
\node (D) at (1.5,0){$4$};
\node (E) at (2,0){$4$};
\node (F) at (3.5,0){$:$};
\node (G) at (4,0){$4$};
\node (H) at (4.5,0){$0$};
\node (I) at (5,0){$=$};
\node (J) at (5.5,0){$1$};
\node (K) at (6,0){$7$};
\node (L) at (6.5,0){$3$};
\node (M) at (7,0){$1$};
\node (N) at (7.15,-0.1){$,$};
\node (O) at (7.5,0){$1$};
\draw[red, name path = erste] (.25,0) ellipse (.55 and .25);
\draw[red,name path = zweite] (4,0) ellipse (.65 and .25);
\path[name path=quer1] (.25,0) -- (45:2cm);
\path[name path=quer2] (G) -- (6,2);
\path[name intersections={of= erste and quer1, by=eins}];
\path[name intersections={of= zweite and quer2, by=zwei}];
\draw[-Stealth,red] (eins) to[bend left=40] (J);
\draw[-Stealth,red] (zwei) to[bend left=40] (J);
\end{tikzpicture}
\end{document}
Wie unschwer zu erkennen ist, sind die Pfeile, die auf der 1 landen sollen nicht genau übereinander. Und da ich keine Lust habe, Ewigkeiten mit dem bend-Faktor rum zuprobieren, dachte ich, ich frage mal, ob es vielleicht einen Befehl gibt, der das automatisch macht, also sprich direkt einen einzigen Pfeil mit zwei unterschiedlichen Anfangspunkten zeichnet.

Vielleicht kennt da ja jemand einen Trick :)

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2142
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Ich finde die alternative Herangehensweise mit den Bibliotheken matrix und fit weniger aufwendig:

Code: Alles auswählen

\documentclass[tikz]{standalone}
\usetikzlibrary{arrows.meta, fit, matrix}

\begin{document}
\begin{tikzpicture}[
    selection/.style={
        draw=red, 
        rounded corners=5pt, 
        inner sep=0pt
    }
]
\matrix [matrix of math nodes] (m) {
    6 & 9 & 2 & 4 & 4 & [1.4cm] : & 4 & 0 & = & 1 & 7 & 3 & 1, & 1\\
};
\node [fit=(m-1-1) (m-1-2), selection] (one) {};
\node [fit=(m-1-6) (m-1-8), selection] (two) {};
\draw[-Stealth, red, bend left=40] 
    (one) to (m-1-10)
    (two) to (m-1-10)
;
\end{tikzpicture}
\end{document}
In diesem Beispiel wird nur ein Pfeil gezeichnet. Dabei dürfte es sich aber um einen Effekt handeln, der in diesem Zusammenhang zwar zu dem gewünschten Ergebnis führt, aber unter anderen Umständen ein Problem wäre.

ThoRie
Forum-Century
Forum-Century
Beiträge: 117
Registriert: Fr 12. Mai 2017, 11:57

Beitrag von ThoRie »

Das wäre zwar an sich eine mögliche Lösung, aber die sieht beim Reinzoomen auch nicht sehr viel besser aus.

Und zudem macht das in meinem Fall auch noch zusätzliche Probleme, da ich das in einem Beamer Dokument verwende und dort die uncover-Funktion nutze, was sich irgendwie damit beißt.

Aber trotzdem erstmal danke, so weiß ich zumindest mal, wie ich anderweitige Hervorhebungen in Gleichungen machen kann :)

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2142
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

ThoRie hat geschrieben:Und zudem macht das in meinem Fall auch noch zusätzliche Probleme, da ich das in einem Beamer Dokument verwende und dort die uncover-Funktion nutze, was sich irgendwie damit beißt.
Dann sag das bitte und mach daraus kein Staatsgeheimnis. Welches Problem gibt es mit dem \uncover-Befehl?

Code: Alles auswählen

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{arrows.meta, fit, matrix}

\begin{document}
\begin{frame}
\centering
\begin{tikzpicture}[
    selection/.style={
        draw=red, 
        rounded corners=5pt, 
        inner sep=0pt
    }
]
\matrix [
    matrix of math nodes, 
    ampersand replacement=\&
] (m) {
    6 \& 9 \& 2 \& 4 \& 4 \& 
    [1.4cm] : \& 4 \& 0 \& = \& 1 \& 7 \& 3 \& 1, \& 1\\
};
\uncover<2->{
    \node [fit=(m-1-1) (m-1-2), selection] (one) {};
    \node [fit=(m-1-6) (m-1-8), selection] (two) {};
    \draw [-Stealth, red, bend left=40] 
        (one) to (m-1-10)
        (two) to (m-1-10)
    ;
}
\end{tikzpicture}
\end{frame}
\end{document}

Antworten