Hallo ihr,

ich habe ein (kleines?) Problem. Ich möchte gerne einen Punkt im nach hinein beschriften.

Ich habe dazu mal folgendes (hoffentlich nicht zu großes) Beispiel. Mein Problem ist, dass ja die Beschriftung von Punkt Z6 zuerst 'geschrieben' wird und danach erst die Fläche gezeichnet wird. Ich versteh das jetzt so, dass die Fläche über dem Punkt liegt und ihn somit verdeckt. Kann man das irgendwie elegant ändern? Ich hab schon mit node und labels 'rumgespielt', aber nicht wirklich eine elegante Lösung gefunden...

Vielen Dank, Norbert

Öffne in Overleaf
\documentclass[border=1mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{intersections,angles,quotes,calc,through}
\begin{document}
\begin{tikzpicture} [
font=\footnotesize,
label distance=.05cm
]
\clip (-0.5,-1.5) rectangle (16,15);
\path
    % Grundfläche
(0,0)  coordinate(G1)       % links vorne
(10,0) coordinate(G2)       % rechts vorne
(15,5) coordinate(G3)       % rechts hinten
(5,5)  coordinate(G4)       % links hinten
% senkrechte Fläche
(4,4)    coordinate(E1)     % links mitte
(14,4)   coordinate(E2)     % rechts unten
(14,7.5) coordinate(E3)     % rechtsoben oben
(4,7.5)  coordinate(E4)     % links oben
% alle Z's...
(9.5,5)             coordinate(Z')  node[label=right:Z']{}
($(Z') + (0,3)$)    coordinate(Z1)  node[label=right:$Z\textsubscript{1}$]{}
($(Z') + (0,2.3)$)  coordinate(Z2)  node[label=right:$Z\textsubscript{2}$]{}
($(Z') + (0,1.5)$)  coordinate(Z3)  node[label=right:$Z\textsubscript{3}$]{}
($(Z') + (0,1)$)    coordinate(Z4)  node[label=right:$Z\textsubscript{4}$]{}
($(Z') + (0,0.4)$)  coordinate(Z5)  node[label=right:$Z\textsubscript{5}$]{}
($(Z') - (0,3)$)    coordinate(Z6)  node[label=right:$Z\textsubscript{6}$]{}
;
\draw 
% Rahmen vordere Fläche
(G1) -- (E1)
(G2) -- (G3)
% Senkrechte Fläche
(E1) -- (E2) -- (E3) -- (E4) -- cycle
(Z1) -- (Z')
;
\draw[line width=0.15mm, dashed]
% Verlängerung Seiten
(G3) -- ($(G3)!-1.5cm!(G2)$)
(E1) -- (G4)
(G4) -- ($(G4)!-1.5cm!(E1)$)
;
\draw[dashed]
% Mittellinie
(Z') -- ($(Z')!-5cm!(Z1)$)
(Z1) -- ($(Z1)!-1.5cm!(Z')$)
;
\draw[fill=gray!15,opacity=0.5] (E1)--(G1)--(G2)--(E2);
\draw[fill=gray!50,opacity=0.3] (E4)--(E1)--(E2)--(E3);
\draw[fill=white] (Z') circle [radius=.1em];
\end{tikzpicture}
\end{document}

gefragt 17 Aug '17, 13:43

Norbert32's gravatar image

Norbert32
2612
Akzeptiert-Rate: 0%

bearbeitet 31 Jul '18, 09:45

saputello's gravatar image

saputello
11.1k174365


Eigentlich sehe ich da kein Problem, denn der node wird ja trotzdem gezeichnet und ist auch zu sehen, nur eben hinter der Fläche:

Z6 im Hintergrund

Aber wenn nodes später gezeichnet werden sollen, dann verschiebe eben ihre Ausgabe weiter nach hinten. Es genügt ja, zunächst die Koordinaten festzulegen, beispielsweise:

Öffne in Overleaf
\documentclass[border=1mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{intersections,angles,quotes,calc,through}
\begin{document}
\begin{tikzpicture} [
font=\footnotesize,
label distance=.05cm
]
\clip (-0.5,-1.5) rectangle (16,15);
\path
    % Grundfläche
(0,0)  coordinate(G1)       % links vorne
(10,0) coordinate(G2)       % rechts vorne
(15,5) coordinate(G3)       % rechts hinten
(5,5)  coordinate(G4)       % links hinten
% senkrechte Fläche
(4,4)    coordinate(E1)     % links mitte
(14,4)   coordinate(E2)     % rechts unten
(14,7.5) coordinate(E3)     % rechtsoben oben
(4,7.5)  coordinate(E4)     % links oben
% alle Z's...
(9.5,5)             coordinate(Z')  node[label=right:Z']{}
($(Z') + (0,3)$)    coordinate(Z1)  node[label=right:$Z\textsubscript{1}$]{}
($(Z') + (0,2.3)$)  coordinate(Z2)  node[label=right:$Z\textsubscript{2}$]{}
($(Z') + (0,1.5)$)  coordinate(Z3)  node[label=right:$Z\textsubscript{3}$]{}
($(Z') + (0,1)$)    coordinate(Z4)  node[label=right:$Z\textsubscript{4}$]{}
($(Z') + (0,0.4)$)  coordinate(Z5)  node[label=right:$Z\textsubscript{5}$]{}
($(Z') - (0,3)$)    coordinate(Z6)  % node[label=right:$Z\textsubscript{6}$]{}% hier nur die Koordinate festlegen
;
\draw 
% Rahmen vordere Fläche
(G1) -- (E1)
(G2) -- (G3)
% Senkrechte Fläche
(E1) -- (E2) -- (E3) -- (E4) -- cycle
(Z1) -- (Z')
;
\draw[line width=0.15mm, dashed]
% Verlängerung Seiten
(G3) -- ($(G3)!-1.5cm!(G2)$)
(E1) -- (G4)
(G4) -- ($(G4)!-1.5cm!(E1)$)
;
\draw[dashed]
% Mittellinie
(Z') -- ($(Z')!-5cm!(Z1)$)
(Z1) -- ($(Z1)!-1.5cm!(Z')$)
;
\draw[fill=gray!15,opacity=0.5] (E1)--(G1)--(G2)--(E2);
\draw[fill=gray!50,opacity=0.3] (E4)--(E1)--(E2)--(E3);
\draw[fill=white] (Z') circle [radius=.1em];
\draw (Z6) node [label=right:$Z\textsubscript{6}$] {};% Kann man so natürlich auch mit den restlichen Zs machen
\end{tikzpicture}
\end{document}

Z6 im Vordergrund

Permanenter link

beantwortet 17 Aug '17, 14:00

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 17 Aug '17, 14:05

Hallo Ijon Tichy,

danke für den Tipp. Ich hatte mit node und label rumprobiert... Aber offensichtlich immer irgendwelche falschen Parameter oder Kombinationen verwerndet... :-( So klappt's auf jeden Fall!

Vielen Dank noch mal dafür!

(17 Aug '17, 15:19) Norbert32
1

@Norbert32: Danke geht bei uns durch Klick auf den Daumen hoch (das kann jeder für beliebig viele Fragen und Antworten, die er gut findet). Der Fragesteller selbst kann außerdem noch genau eine der Antworten mit Klick auf den Haken akzeptieren. Beides hilft der Orientierung von Fragestellern und nebenbei bekommt der Helfer automatisch Punkte. Siehe auch die FAQ.

(17 Aug '17, 15:23) saputello

Vielleicht doch noch eine Frage....

Ich bastel ja einen kleinen Kreis um den Punkt Z' rum.

draw[fill=white] (Z') circle [radius=.1em]; draw (Z6) node [label=right:$Ztextsubscript{6}$] {}

Geht das auch für Z6...? Also irgendwie ne Kombi aus beiden? Hab's verschiedentlich probiert, aber nicht hinbekommen...

Also irgendwie so was: draw[fill=white. irgendwie kleiner Kreis ] (Z') node [label=right:$Z'$] {} (Z6) node [label=right:$Ztextsubscript{6}$] {} ;

Danke schon mal... :-)

(17 Aug '17, 15:34) Norbert32

@Norbert32: Verstehe den Kommentar nicht: \draw (Z6) circle [radius=.1em] node [label=right:$Z\textsubscript{6}$] {}; funktioniert doch. BTW: Bitte achte auf korrektes Markdown für Inline-Code auch in Kommentaren (aber da bitte keinen Blockcode, weil der leider noch immer die Kommentarfunktion beschädigt): `\draw` erzeugt \draw, während \draw nur draw erzeugt. Ansonsten: Fragen bitte immer als Fragen stellen. In Ausnahmefällen auch mal die Frage editieren, um sie zu erweitern. In der Regel aber Folgefragen bevorzugen.

(17 Aug '17, 15:48) saputello

Hallo saputello,

erst mal Dank für deinen Hinweis mit den korrekten Inline-Code..

Nochmal zu meiner Frage..

'draw[fill=white] (Z') circle [radius=.1em];' 'draw[fill=white] (Z6) node [label=right:$Ztextsubscript{6}$] {};'

erzeugt Um Z' einen kleinen weißen Kreis. Ich möchte aber gerne für mehrere Punkte dieses erreichen.

Bisher mach ich das immer so:

'draw[fill=white] (Z') circle [radius=.1em];' 'draw[fill=white] (Z1) circle [radius=.1em];'

Man könnte das jetzt so wie du es empfohlen hast schreiben. Aber ich hatte die Hoffnung, dass es vielleicht kürzer geht.

VG, Norbert

(17 Aug '17, 16:19) Norbert32

@Norbert32: Du machst das mit dem Inline-Code noch immer falsch. Korrekt ist `\draw` nicht '\draw'! Ansonsten wiederhole ich mich: Fragen bitte als Fragen stellen und nicht in Kommentaren verbergen! Wir haben hier genug Platz für vielen Tausend Fragen. Du kannst auch gerne Fragen verlinken, wenn eine alte Frage oder Antwort für eine neue relevant ist. Aber bitte keine Fragen in Kommentaren verstecken! Ich empfehle, die Fragen in den Kommentaren hier zu löschen und stattdessen eine passende Frage zu stellen, falls noch keine existiert. Formuliere auch klar, was Du genau wissen willst.

(17 Aug '17, 18:13) saputello

Hallo saputello,

noch mal Danke für den Hinweis mit dem Inlinecode... Hab ich dann doch nicht richtig gelesen.

Ich hab mir jetzt auch mal die FAQ durchgelesen.. Und trotzdem noch eine Verständnisfrage... ;-)

Reicht es für das Verständnis der Frage aus, wenn ich auf meine Ursprungsfrage verlinke und dann darunter eine neue stelle? Oder ist es nicht sinnvoller ein neues kleines Script zu erstellen?

VG

(17 Aug '17, 20:05) Norbert32

@Norbert32: Vermutlich suchst Du \foreach. Also etwas wie \foreach \i in {1,...,6} \draw[fill=white] (Z\i) node [label=right:$Z\textsubscript{\i}$] {} circle [radius=.1em]; Wobei mich etwas irritiert, dass Du im Mathemodus \textsubscript verwendest und andererseits das Z' nicht im Mathemodus gesetzt wird. Ist das Absicht?

(18 Aug '17, 22:56) esdd
Ergebnis 5 von 8 show 3 more comments

Eine weitere Möglichkeit, wenn auch hier nicht wirklich nötig, ist die Verwendung von Layern. Dazu kann man neben dem Standardlayer main mittels \pgfdeclarelayer einen zusätzlichen definieren. Mit der Reihenfolge innerhalb des Arguments von \pgfsetlayers legt man die Reihenfolge der Layer fest.

Öffne in Overleaf
\documentclass[border=1mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture} [
  font=\footnotesize,
  label distance=.05cm
]
%\clip (-0.5,-1.5) rectangle (16,15);
\pgfdeclarelayer{foreground}
\pgfsetlayers{main,foreground}
\path
  % Grundfläche
  (0,0)  coordinate(G1)       % links vorne
  (10,0) coordinate(G2)       % rechts vorne
  (15,5) coordinate(G3)       % rechts hinten
  (5,5)  coordinate(G4)       % links hinten
  % senkrechte Fläche
  (4,4)    coordinate(E1)     % links mitte
  (14,4)   coordinate(E2)     % rechts unten
  (14,7.5) coordinate(E3)     % rechtsoben oben
  (4,7.5)  coordinate(E4)     % links oben
;
\begin{pgfonlayer}{foreground}
\draw[fill=white]
  % alle Z's...
  (9.5,5) coordinate(Z') node[label=right:$Z'$]{} circle[radius=.1em]
  foreach[count=\i] \y in {3,2.3,1.5,1,.4,-3}
    {+(0,\y) coordinate(Z\i) node[label=right:$Z_{\i}$]{} circle [radius=.1em]}
;
\end{pgfonlayer}
\draw 
  % Rahmen vordere Fläche
  (G1) -- (E1)
  (G2) -- (G3)
  % Senkrechte Fläche
  (E1) -- (E2) -- (E3) -- (E4) -- cycle
  (Z1) -- (Z')
;
\draw[line width=0.15mm, dashed]
  % Verlängerung Seiten
  (G3) -- ($(G3)!-1.5cm!(G2)$)
  (E1) -- (G4)
  (G4) -- ($(G4)!-1.5cm!(E1)$)
;
\draw[dashed]
% Mittellinie
  (Z') -- ($(Z')!-5cm!(Z1)$)
  (Z1) -- ($(Z1)!-1.5cm!(Z')$)
;
\draw[fill=gray!15,opacity=0.5] (E1)--(G1)--(G2)--(E2);
\draw[fill=gray!50,opacity=0.3] (E4)--(E1)--(E2)--(E3);
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 18 Aug '17, 23:37

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

Deine Antwort
Vorschau umschalten

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

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ügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×76
×33
×3

gestellte Frage: 17 Aug '17, 13:43

Frage wurde gesehen: 6,013 Mal

zuletzt geändert: 18 Aug '17, 23:37