Wie kann ich die Ecken mit A, B, C, D bezeichnen? \foreach \anchor/\placement ist doch zu viel des Guten, oder?

Open in Online-Editor
\documentclass[headheight=19pt]{scrartcl}
%------------------------------------------------------------------------------
\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage[norndcorners,customcolors,nofill]{hf-tikz} 
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{shapes.geometric} % LATEX and plain TEX when using Tik Z
\usetikzlibrary[shapes.geometric] % ConTEXt when using Tik Z

%------------------------------------------------------------------------------
\tikzset{
  winkel/.style={draw=gray,angle eccentricity=.6,angle radius=0.6cm},
  mybox/.style={draw=gray,fill=white,align=left,text width=.9\linewidth}
}
\newbox\mytikzbox 
\newcommand{\tikzBox}[2][\mytikzbox]{% 
   \sbox#1{\pgfinterruptpicture#2\endpgfinterruptpicture}}

%------------------------------------------------------------------------------
\usepackage{blindtext}% für Fülltext
\begin{document}
    \begin{center}
    \begin{tikzpicture}
      \tikzBox{%
        \begin{tikzpicture}[auto]
        \tikzset{every node/.style={trapezium, draw}}
        \node[trapezium left angle=75, trapezium right angle=45]
at (0,1) {};

       \end{tikzpicture}
      }
      \node[mybox,rounded corners,font=\bfseries]
          {\parbox[t]{.6\linewidth}{%
              Dieses Beispiel funktioniert nicht. Wie vieles andere auch.
              }%
            \parbox[t]{.5\linewidth}{\centering%
            \raisebox{\dimexpr-\height+\ht\strutbox\relax}{\usebox\mytikzbox}}};
      \end{tikzpicture}
    \end{center}
\end{document}

gefragt 07 Okt '15, 00:09

runix's gravatar image

runix
1.0k247486
Akzeptiert-Rate: 0%


Damit Du einen Node beschriften kannst, musst Du ihm zunächst einen Namen geben. Bitte lies dazu in der Dokumentation im Abschnitt Nodes and Their Shapes den Unterabschnitt Syntax of the Node Command.

Zum Beschriften der Ecken eines Nodes nutzt man sinnvoller Weise dessen bereits definierte Anker (anchor). Welche das für eine konkrete Form sind, kann man in der Doku nachschlagen. Für die Trapezecken sind das bottom left corner etc.

Open in Online-Editor
\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{tikzpicture}[
    auto,
    mytrapez/.style={
      trapezium,
      draw,
      trapezium left angle=75,
      trapezium right angle=45
    }
  ]
  \node[
    mytrapez,
    minimum width=4cm,
    minimum height=2cm
  ](Trapez){};
  \node[below left]at(Trapez.bottom left corner){A};
  \node[below right]at(Trapez.bottom right corner){B};
  \node[above right]at(Trapez.top right corner){C};
  \node[above left]at(Trapez.top left corner){D};
\end{tikzpicture}
\end{document}

alt text

Allerdings würde ich das tatsächlich mit einer \foreach Schleife (siehe Abschnitt Repeating Things: The Foreach Statement in der Dokumentation) machen:

Open in Online-Editor
\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\begin{document}
\begin{tikzpicture}[
    auto,
    mytrapez/.style={
      trapezium,
      draw,
      trapezium left angle=75,
      trapezium right angle=45
    }
  ]
  \node[
    mytrapez,
    minimum width=4cm,
    minimum height=2cm
  ](Trapez){};
  \foreach \placement/\anchor/\text in {%
      below left/bottom left corner/A,
      below right/bottom right corner/B,
      above right/top right corner/C,
      above left/top left corner/D%
    }\node[\placement]at(Trapez.\anchor){\text};
\end{tikzpicture}
\end{document}

Wenn die Eckpunkte des Trapezes für weitere Sachen benötigt werden, würde ich allerdings an diesen Koordinaten setzen und deren Beschriftung über die Option label vornehmen. Das hat den Vorteil, dass im weiteren Code zum Beispiel A statt Trapez.bottom left corner verwendet werden kann, siehe zum Beispiel Senkrechte Linie zeichnen Geometric shape und calc. Dabei sieht man auch den Vorteil der \foreach Schleife: es muss gegenüber dem vorhergehenden Beispiel nur eine Zeile angepasst werden. Ohne die Schleife wären es vier.

Open in Online-Editor
\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{shapes.geometric}

\begin{document}
\begin{tikzpicture}[
    auto,
    mytrapez/.style={
      trapezium,
      draw,
      trapezium left angle=75,
      trapezium right angle=45
    }
  ]
  \node[
    mytrapez,
    minimum width=4cm,
    minimum height=2cm
  ](Trapez){};
  \foreach \placement/\anchor/\text in {%
      below left/bottom left corner/A,
      below right/bottom right corner/B,
      above right/top right corner/C,
      above left/top left corner/D%
    }\coordinate[label=\placement:\text](\text)at(Trapez.\anchor);
\end{tikzpicture}
\end{document}

Zusammengefasst mit zwei weiteren Fragen ergibt sich

Open in Online-Editor
\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{shapes.geometric}

\begin{document}
\begin{tikzpicture}[
    auto,
    mytrapez/.style={
      trapezium,
      draw,
      trapezium left angle=75,
      trapezium right angle=45
    }
  ]
  \node[
    mytrapez,
    minimum width=4cm,
    minimum height=2cm
  ](Trapez){};
  \foreach \placement/\anchor/\text in {%
      below left/bottom left corner/A,
      below right/bottom right corner/B,
      above right/top right corner/C,
      above left/top left corner/D%
    }\coordinate[label=\placement:\text](\text)at(Trapez.\anchor);
%
% Lot von C auf die Strecke AB ( http://texwelt.de/wissen/fragen/14661 )
  \draw[red](C) -- ($(A)!(C)!(B)$);
%
% Beschriftung der Trapezseiten ( http://texwelt.de/wissen/fragen/14662 )
  \foreach[remember=\name as \lastname (initially A)]
    \name/\text in {B/a,C/b,D/c,A/d}
    \path[swap](\lastname)--node{\text}(\name);
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 07 Okt '15, 08:16

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

bearbeitet 07 Okt '15, 11:43

Wie kann ich denn mit Hilfe deiner Schleife die rote Strecke beschriften? Ich kann zwar ein wenig programmieren, verstehe aber dieses Konstrukt nicht so recht.

(07 Okt '15, 11:41) runix
1

Mit der Schleife werden die Trapezseiten beschriftet. Wenn Du die rote Linie (Höhe) beschriften möchtest, dann erledige das beim Zeichnen von dieser. Schau Dir dazu nochmal das zweite Beispiel in meiner Antwort auf TikZ Linienfarbe ändern an.

(07 Okt '15, 11:48) esdd

Hab's hinbekommen. Soll ich es als Antwort posten?

(07 Okt '15, 11:57) runix

@runix Nein, da es keine richtige Antwort auf die Eingangsfrage ist. Die eine Codezeile kannst Du aber gern hier unten drunter als Kommentar schreiben.

(07 Okt '15, 12:03) esdd

Die entsprechende Zeile: \draw[red](C) --node[swap]{$h$} ($(A)!(C)!(B)$);

(07 Okt '15, 12:05) runix

Wenn ich deiner Schleife nur ausgewählte Seiten beschriften möchte, kriege ich ein Problem in folgender Zeile:

\name/\text in {B/a,D/c} Das c ist nun nicht mehr dort, wo es sein soll. Wenn ich aber \name/\text in {B/a,C/b,D/c} setze sieht es gut aus.

(07 Okt '15, 12:08) runix
1

Ich habe in dem Code absichtlich die Links zu den anderen Fragen drin. Da stehen jeweils weitere Varianten.

Eventuell kann man die Schleife anders machen, aber in jedem Fall kannst Du die Beschriftungen einzeln setzen: \path(A)--node[swap]{a}(B);

(07 Okt '15, 12:15) esdd

Bei der anderen Frage habe ich jetzt noch ein Beispiel ergänzt, bei dem nur einige der Seiten in einer Schleife beschriftet werden.

(07 Okt '15, 12:24) esdd

Was genau bewirken minimum height und minimum width? Wenn ich an den Parametern rumspiele, ändert sich irgendwie nicht so viel.

(09 Okt '15, 00:17) runix

@runix: Genau das, was man vermuten würde und was auch in der Anleitung steht: This option allows … to specify a minimum size that the node should have. If the node actually needs to be bigger because of a longer text, it will be larger, but if the text is empty, then the node will have minimum size. Also: RTFM!

Wenn ich die Angaben ändere verändert sich in der Tat auch die Größe des Trapez. Das funktioniert natürlich nur im Rahmen der angegebenen Winkel. Außerdem fällt das bei der Klasse standalone nicht unbedingt auf. Mit article aber sofort.

(09 Okt '15, 08:11) saputello

@runix: Neben RTFM hast Du vermutlich auch ein wenig den Überblick über Deine eigenen Fragen verloren: Was die beiden Optionen machen, habe ich doch bei Deiner Frage Geometric Shape sogar mit Beispiel erklärt?? Vielleicht kannst Du dort den Titel der Frage auch noch passender formulieren, damit man das leichter findet.

(09 Okt '15, 09:25) esdd
Ergebnis 5 von 11 show 6 more comments
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:

×731
×6

gestellte Frage: 07 Okt '15, 00:09

Frage wurde gesehen: 8,046 Mal

zuletzt geändert: 09 Okt '15, 09:25