Seite 1 von 1

Linienlängen mit TikZ

Verfasst: Mi 29. Mai 2019, 19:04
von ThoRie
Hallo ich habe mal eine Frage zu einem Code:
\documentclass{article}
\usepackage{tikz}
\usepackage{amsmath}
\begin{document}
\begin{tikzpicture}
\node[inner sep=.5cm] (B) at (0,0){\footnotesize $\begin{array}{rl}
u&=f(0)+\dfrac{f(1)-f(0)}{1-0}\cdot x\\
u'&=f(1)-f(0)=\dfrac{\text{d}u}{\text{d}x}\\
\text{d}x&=\dfrac{1}{f(1)-f(0)}\cdot \text{d}u
\end{array}$};
\draw (B.north west) -- (B.west);
\draw (B.north west) -- (B.north);
\draw (B.south east) -- (B.east);
\draw (B.south east) -- (B.south);
\end{tikzpicture}
\end{document}
Und zwar nutze ich diese Form der Grafiken für Nebenrechnungen. Zu der TikZ-Umgebung habe ich auch keine Alternative, da ich diese mittels overlay gezielt an eine freie Stelle packen kann. Diesen Teil habe ich hier jetzt nur raus genommen, da es mit dem Problem nichts zu tun hat.
Also kommen wir jetzt erstmal zum eigentlichen "Problem":

Es geht dabei um diese Ecken, die ich da drum ziehe. Die sollen in jedem dieser Bilder eben genau diese Positionierung haben. Allerdings möchte ich diese gern relativ frei in ihrer Länge beeinflussen, dass sie dann auch optisch passend sind. Wichtig ist aber vor allem einmal, dass sie alle gleich lang werden.

Eine Möglichkeit, sie zu verlängern ist mir mit der library "calc" zwar durchaus bekannt, aber ich will sie eben nicht nur verlängern können, sondern auch nach belieben verkürzen.

Vielleicht kennt da jemand einen Weg.

Die Lösung, so eine besteht, muss auch nicht unbedingt besonders elegant sein oder möglichst wenig Code haben. Sie soll einfach nur funktionieren :)

Verfasst: Mi 29. Mai 2019, 19:53
von ThoRie
Okay, das pgf-Manual hat Aufschluss gegeben.

Verfasst: Mi 29. Mai 2019, 20:01
von Bartman
Auch ohne den Einsatz der erwähnten TikZ-Bibliothek kann das Beispiel noch ein paar Änderungen vertragen:
\documentclass[tikz, border=5pt]{standalone}
\usepackage{amsmath}

\begin{document}
\begin{tikzpicture}
\node[inner sep=.5cm, font=\footnotesize] (B) {%
    $\begin{aligned}
    u&=f(0)+\dfrac{f(1)-f(0)}{1-0}\cdot x\\
    u'&=f(1)-f(0)=\dfrac{\text{d}u}{\text{d}x}\\
    \text{d}x&=\dfrac{1}{f(1)-f(0)}\cdot \text{d}u
    \end{aligned}$%
};
\draw 
    (B.north) -| (B.west)
    (B.south) -| (B.east)
;
\end{tikzpicture}
\end{document}

Verfasst: Mi 29. Mai 2019, 22:25
von ThoRie
Fast hätte ich meine Kollegialität vergessen. Hier mal meine, wie ich finde sehr elegante Lösung. Wobei ich dazu sagen muss, dass das in dieser Form nur Sinn macht, wenn man das öfter nutzt:
\documentclass[tikz, border=5pt]{standalone} 
\usepackage{amsmath} 
\usetikzlibrary{calc}
\newcommand{\nebenrechnung}[2]{
\coordinate (#1nw) at (#1.north west);
\coordinate (#1n) at (#1.north);
\coordinate (#1w) at (#1.west);
\coordinate (#1sw) at (#1.south east);
\coordinate (#1s) at (#1.south);
\coordinate (#1e) at (#1.east);
\coordinate (#1re) at ($ (#1nw)!#2cm!(#1n) $);
\coordinate (#1ru) at ($ (#1nw)!#2cm!(#1w) $);
\coordinate (#1li) at ($ (#1sw)!#2cm!(#1s) $);
\coordinate (#1ho) at ($ (#1sw)!#2cm!(#1e) $);
\draw (#1nw) -- (#1re);
		\draw (#1nw) -- (#1ru);
		\draw (#1sw) -- (#1li);
		\draw (#1sw) -- (#1ho);
		}
\begin{document} 
\begin{tikzpicture} 
\node[inner sep=.5cm] (B) {% 
    \footnotesize% 
    $\begin{aligned} 
    u&=f(0)+\dfrac{f(1)-f(0)}{1-0}\cdot x\\ 
    u'&=f(1)-f(0)=\dfrac{\text{d}u}{\text{d}x}\\ 
    \text{d}x&=\dfrac{1}{f(1)-f(0)}\cdot \text{d}u 
    \end{aligned}$% 
}; 
\nebenrechnung{B}{.5} 
\end{tikzpicture} 
\end{document}
Der springende Punkt, der das ganze bei häufiger Anwendung sinnvoll macht ist der \newcommand. Dadurch kann ich jederzeit diesen "Rahmen" erzeugen, sobald ich eine benannte node hab. Die optionalen Argumente sind jetzt
  • #1...Name der node
    #2...Linienlänge in cm
Vielleicht nützt das ja auch jemandem etwas, der vielleicht nicht unbedingt Nebenrechnungen erzeugen will, sondern dem diese Form von nodes gefällt :)