Zur Zeit erweitere ich ein TikZ-Trapez (Eingangsfrage mit Code: Trapezförmige Tabelle); und würde gerne wissen, wie ich

Open in writeLaTeX
\path [name intersections = {of=O1--U1 and L1--R1, by=11}]; \node at (11) {11};
\path [name intersections = {of=O2--U2 and L1--R1, by=21}]; \node at (21) {21};
\path [name intersections = {of=O3--U3 and L1--R1, by=31}]; \node at (31) {31};
\path [name intersections = {of=O4--U4 and L1--R1, by=41}]; \node at (41) {41};
\path [name intersections = {of=O5--U5 and L1--R1, by=51}]; \node at (51) {51};
\path [name intersections = {of=O6--U6 and L1--R1, by=61}]; \node at (61) {61};
\path [name intersections = {of=O1--U1 and L2--R2, by=12}]; \node at (12) {12};
\path [name intersections = {of=O2--U2 and L2--R2, by=22}]; \node at (22) {22};
\path [name intersections = {of=O3--U3 and L2--R2, by=32}]; \node at (32) {32};
\path [name intersections = {of=O4--U4 and L2--R2, by=42}]; \node at (42) {42};
\path [name intersections = {of=O5--U5 and L2--R2, by=52}]; \node at (52) {52};
...

über eine for -Schleife oder soetwas vereinfachen könnte?

gefragt 01 Mär '14, 20:31

rix's gravatar image

rix
3452419
Akzeptiert: 93%

zurückgesetzt 02 Mär '14, 06:27

@rix Bitte poste Folgefragen nicht als "Antwort", sondern als neue Frage, mit dem Button "Stelle eine Frage" rechts oben. Ich habe wieder die Nicht-Antwort in eine Frage umgewandelt: Kann ich den Inhalt eines Node nachträglich ändern?. Wir helfen Dir gern, Lösungen zu erarbeiten, dafür wäre es nett, wenn Du die zugegeben neuartige klare Aufteilung in Frage-Antwort mit verwendest.

(02 Mär '14, 09:26) stefan ♦♦

Sowas geht mit \foreach, auch mit mehreren Variablen. Da hier kein testbares Komplettbeispiel in der Frage ist, arbeite ich mit meinem Beispiel zur vorangehenden Frage. Dort kann ich die Zwischenlinien vereinfachen:

Open in writeLaTeX
\foreach \x / \y in {E/F, G/H, I/J}
  \path [name path global/.expanded=\x--\y] (\x) -- (\y);

Die Syntax erkennt man ja. Es geht auch mit 3 und mehr Variablen. Das eingefügte global/.expanded ist eine Weg, damit man Pfadnamen in der Schleife bestimmen kann - normalerweise nicht nötig.

Entsprechend für die Schnittpunkte:

Open in writeLaTeX
\foreach \schnitt / \punkt in {E--F and G--H/K, E--F and I--J/L} {
  \path [name intersections/.expanded = {of=\schnitt, by=\punkt}];
  \node at (\punkt) {\punkt};
}

Auch hier: mit intersections/.expanded={...} erreiche ich, dass erst {...} expandiert wird, d.h. die Makros darin (meine Schleifenvariablen) intern mit \edef ausgewertet werden, bevor die Zuweisung intersections={...} erfolgt. Der Trick ist wie gesagt bei einfachem \foreach meist nicht nötig, hier weil es innerhalb von Optionen passiert.

Ein compilierbares Testbeispiel damit, der vorigen verlinkten Frage entsprechend - am Beginn sieht man nochmal die einfache Form der \foreach-Schleife:

Open in writeLaTeX
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc,intersections}
\begin{document}
\begin{tikzpicture}[every node/.append style={text depth=0.25ex, rectangle,
  rounded corners, minimum width=3em, minimum height=4ex, draw}]
  % Eckpunkte
  \foreach \punkt / \x / \y in {A/0/4, B/5/4, C/5/0, D/2/0}
    \node (\punkt) at (\x,\y) {\punkt};
  % Mittelpunkte obere und untere Seite
  \node (E) at ($ (A) !.5! (B) $) {E};
  \node (F) at ($ (D) !.5! (C) $) {F};
  % Dritteln linke Seite und sechte Seite
  \node (G) at ($ (A) !.3333! (D) $) {G};
  \node (H) at ($ (B) !.3333! (C) $) {H};
  \node (I) at ($ (A) !.6666! (D) $) {I};
  \node (J) at ($ (B) !.6666! (C) $) {J};
  % Zwischenlinien definieren
  \foreach \x / \y in {E/F, G/H, I/J}
    \path [name path global/.expanded=\x--\y] (\x) -- (\y);
  % Schnittpunkte der Zwischenlinien für die restlichen Gitterpunkte
  \foreach \schnitt / \punkt in {E--F and G--H/K, E--F and I--J/L} {
    \path [name intersections/.expanded = {of=\schnitt, by=\punkt}];
    \node at (\punkt) {\punkt};
  }
\end{tikzpicture}
\end{document}

Der Gewinn durch die \foreach-Schleifen zeigt sich dann, wenn, wie eingangs der Frage geschrieben, es sehr viele wiederholte Aufrufe gibt.

Permanenter link

beantwortet 02 Mär '14, 04:57

stefan's gravatar image

stefan ♦♦
5.8k12134

bearbeitet 02 Mär '14, 07:26

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×492
×15
×9

Frage gestellt: 01 Mär '14, 20:31

Frage wurde angeschaut: 2,482 Mal

Zuletzt aktualisiert: 02 Mär '14, 16:03