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

Open in writeLaTeX
Code, hier editierbar zum Übersetzen:
\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};
...
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

gefragt 02 Mär '14, 02:31

rix's gravatar image

rix
39081823
Akzeptiert-Rate: 0%

zurückgesetzt 02 Mär '14, 12: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, 15: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
Code, hier editierbar zum Übersetzen:
\foreach \x / \y in {E/F, G/H, I/J}
\path [name path global/.expanded=\x--\y] (\x) -- (\y);
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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
Code, hier editierbar zum Übersetzen:
\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};
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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
Code, hier editierbar zum Übersetzen:
\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}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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, 10:57

stefan's gravatar image

stefan ♦♦
18.4k163148
Akzeptiert-Rate: 50%

bearbeitet 02 Mär '14, 13:26

Deine Antwort
[Vorschau ausblenden]

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Frage-Themen:

×731
×21
×21

gestellte Frage: 02 Mär '14, 02:31

Frage wurde gesehen: 11,080 Mal

zuletzt geändert: 02 Mär '14, 22:03