Achtung! Der folgende Code ist kein Minimalbeispiel! Er funktioniert nicht. Exakt das ist der Grund meiner Frage: Wie kriege ich die mit Hilfe von Geometric Shape erzeugte Grafik in die Box?

Edit: MWE kompiliert zumindest. Die Lösung ist aber noch nicht optimal.

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}
\usetikzlibrary[shapes.geometric]

%------------------------------------------------------------------------------
\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}}

%------------------------------------------------------------------------------
\begin{document}
\begin{center}
  \begin{tikzpicture}
    \tikzBox{%
      \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[gray](C) --node[swap]{$h$} ($(A)!(C)!(B)$);
%
% Beschriftung der Trapezseiten (http://texwelt.de/wissen/fragen/14662)
\path(B)--node{$a$}(A);
\path(D)--node{$c$}(C);
\end{tikzpicture}

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

Der Versuch, das Beispiel in einem anderen Thread entsprechend zu modifizieren blieb erfolglos. Ich meine folgenden Thread und hätte gerne dass es auch hier so aussieht wie in der von Clemens erstellten Antwort. Antwort von Clemens

gefragt 07 Okt '15, 12:30

runix's gravatar image

runix
1.0k247486
Akzeptiert-Rate: 0%

bearbeitet 07 Okt '15, 14:21

2

Da fehlt lediglich das \end{tikzpicture}, also \tikzbox{\begin{tikzpicture}[<optionen>]<zeichnung>\end{tikzbox}}. Außerdem sind die beiden \parbox en zusammen breiter als \linewidth. Eigentlich dürften beide zusammen nicht breiter als die bei text width vorgegebene Textbreite für mybox sein.

(07 Okt '15, 13:17) esdd
3

Aber wie auch immer, wenn Du eigentlich den Vorschlag von @Clemens mit der tcolorbox verwenden willst, was sicher sehr sinnvoll ist, dann passe doch sein Beispiel an und erstelle damit ein MWE. Dazu kannst Du einfach die Zeichnung in seinem Beispiel durch die neue ersetzen. Bei den Optionen der tikzpicture Umgebung muss dann nur noch das baseline=(current bounding box.north) ergänzt werden.

(07 Okt '15, 13:18) esdd

@esdd, kannst du das als Antwort verfassen? Ich bin am Ergebnis dessen interessiert was durch @Clemens' Antwort erzeugt wurde, der Weg ist mir nicht so wichtig. Wenn ich dran herumwerkle, entstehen leider immernoch Fehler.

(07 Okt '15, 13:26) runix
2

Versuch es zunächst selbst und ersetze damit Dein obiges MWE. Du kannst dazu Deine Frage einfach editieren. Wenn ich Dir hier einfach den Code von @Clemens anpasse, hast Du bei der nächsten Zeichnung das gleiche Problem ;-)

(07 Okt '15, 13:35) esdd

Das MWE kompiliert. Das Ergebnis ist aber noch suboptimal.

(07 Okt '15, 14:15) runix

0.5\linewidth + 0.6\linewidth sind natürlich größer als \linewidth und damit zu groß. Das hat @esdd ja auch bereits in ihrem ersten Kommentar erwähnt. Einfacher wird es, wenn man die Box mit der Grafik einfach in ihrer natürlichen Größe verwendet und die \parbox für den Text mit der Restbreite angibt:

Open in Online-Editor
\documentclass[headheight=19pt]{scrartcl}
%------------------------------------------------------------------------------
\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{shapes.geometric}

%------------------------------------------------------------------------------
\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}}

%------------------------------------------------------------------------------
\begin{document}
\begin{center}
  \begin{tikzpicture}
    \tikzBox{%
      \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[gray](C) --node[swap]{$h$} ($(A)!(C)!(B)$);
%
% Beschriftung der Trapezseiten (http://texwelt.de/wissen/fragen/14662)
\path(B)--node{$a$}(A);
\path(D)--node{$c$}(C);
\end{tikzpicture}

    }
    \node[mybox,rounded corners,font=\bfseries]
        {\parbox[t]{\dimexpr\linewidth-\wd\mytikzbox}{%
            Blubblub
            }%
          \raisebox{\dimexpr-\height+\ht\strutbox\relax}{\usebox\mytikzbox}};
    \end{tikzpicture}
  \end{center}
\end{document}

\wd\irgendeinebox ist dabei die Breite des Box-Registers \irgendeinebox.

Übrigens könnte man \dimexpr einsparen, wenn man auch das Paket calc (nicht zu verwechseln mit der bereits geladenen, gleichnamigen tikz-Bibliothek) laden würde.

Außerdem habe ich mir erlaubt auch shapes.geometry nur einmal zu laden und hf-tikz wird für das Beispiel auch nicht benötigt. Würde es benötigt, könnte man sich stattdessen tikz sparen, weil hf-tikz das natürlich selbst bereits lädt.

Ergebnis

Permanenter link

beantwortet 07 Okt '15, 14:43

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

bearbeitet 07 Okt '15, 17:42

calc hast du doch geladen?!

(07 Okt '15, 17:04) runix

@runix: Aber nur als tikz-Library und nicht als Paket. Nur das Paket hat Einfluss auf \setlength, \raisebox, \parbox, \makebox, minipage etc.

(07 Okt '15, 17:37) saputello
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:

×730
×6

gestellte Frage: 07 Okt '15, 12:30

Frage wurde gesehen: 6,632 Mal

zuletzt geändert: 07 Okt '15, 21:15