Linienlängen mit TikZ

Tabellen und Grafiken erstellen und anordnen


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

Linienlängen mit TikZ

Beitrag von ThoRie »

Hallo ich habe mal eine Frage zu einem Code:

Code: Alles auswählen

\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 :)

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

Beitrag von ThoRie »

Okay, das pgf-Manual hat Aufschluss gegeben.

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

Beitrag von Bartman »

Auch ohne den Einsatz der erwähnten TikZ-Bibliothek kann das Beispiel noch ein paar Änderungen vertragen:

Code: Alles auswählen

\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}
Zuletzt geändert von Bartman am Sa 1. Jun 2019, 11:15, insgesamt 1-mal geändert.

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

Beitrag 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:

Code: Alles auswählen

\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 :)

Antworten