Hallo, ich habe folgendes Anliegen. Ich möchte mein entworfenes Symbol nicht an jeder Stelle in einer tikZ-Umgebung neu zeichnen müssen. Daher hatte ich mir vorgestellt, dieses vorher mit irgendeiner Variable zu definieren, die ich dann bei Bedarf einfügen kann. Das Symbol sollte zusätzlich individuell mit Text gefüllt werden. z.B. Checkliste oder Formular XY

Ich freue mich über jeden Tipp :-)

Open in writeLaTeX
\documentclass[11pt]{scrreprt}
\usepackage[top=2cm,left=3cm,right=3cm,bottom=4cm]{geometry}
\usepackage{graphicx}
\usepackage{tabularx}
\usepackage{microtype} 
\usepackage{booktabs} 
\usepackage{paralist}           
\usepackage{tikz}
\usetikzlibrary{mindmap,trees}
\usetikzlibrary{matrix}
\usetikzlibrary{decorations.pathreplacing}
\usetikzlibrary{positioning,shadings}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{shapes.arrows}

\begin{document}

\begin{tikzpicture}
    \draw (0,0) -- (0,2);
    \draw (0,2) -- (2,2);
    \draw (2,2) -- (2,0);
    \draw [out=90, in=-60] (2,0) to (0,0);
\end{tikzpicture}

\end{document}

gefragt 13 Mai '14, 13:11

sascha's gravatar image

sascha
17171017
Akzeptiert-Rate: 50%

bearbeitet 13 Mai '14, 15:13

Henri's gravatar image

Henri
15.7k133943


Am besten macht man dies mit einem optionalen Argument zum neuen Makro.

Open in writeLaTeX
\documentclass{article}
\pagestyle{empty}% zum freistellen
\usepackage{tikz}
\newcommand\einheit[1][]{\tikz{
  \draw (0,0) -- (0,2) -- (2,2) -- (2,0) to[out=90, in=-60] (0,0);
  \node[text width=2cm,align=center] at (1,1) {#1};
}}
\begin{document}

\einheit\
\einheit[Checkliste]
\einheit[Formular]
\einheit[Ein zu langer Text f\"ur eine Zeile]

\end{document}

alt text


Mit der baseline Option lassen sich auch noch die Grundlinien ausrichten.

Open in writeLaTeX
\documentclass{article}
\pagestyle{empty}% zum freistellen
\usepackage{tikz}
\newcommand\einheit[1][]{\tikz[baseline=(X.base)]{
  \draw (0,0) -- (0,2) -- (2,2) -- (2,0) to[out=90, in=-60] (0,0);
  \node[text width=2cm,align=center] (X) at (1,1) {#1};
}}
\begin{document}

Text au\ss en
\einheit\
\einheit[Checkliste]
\einheit[Formular]
\einheit[Ein zu langer Text f\"ur eine Zeile]
herum

\end{document}

alt text

Permanenter link

beantwortet 13 Mai '14, 13:50

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

bearbeitet 13 Mai '14, 13:57

Vielen Dank schon mal aber beim einfügen in meine tikZ-Grafik erhalte ich stets eine Fehlermeldung!

(13 Mai '14, 14:40) sascha

Wenn man das Symbol nicht nur einzeln, sondern auch innerhalb größerer Abbildungen nutzen möchte, dann kann man sich ab der pgf/TikZ Version 3.0.0 ein pic dafür definieren. Das lässt sich dann für die Definition eines Makros wie bei @Henri verwenden, aber auch mehrfach in eine TikZ Umgebung einfügen.

Open in writeLaTeX
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}

\tikzset{
  symbol/.pic={%
    \node[
      minimum width=2cm, minimum height=2cm,
      inner xsep=0pt,text width=2cm,align=center
    ](-symb)at(1,1){\tikzpictext};% node bekommt Namen <picname>-symb
    \draw(-symb.south west) -- (-symb.north west) -- (-symb.north east) -- 
      (-symb.south east) to[out=90, in=-60] (-symb.south west);
  }
}

\newcommand\mysymbol[1][]{%
  \tikz[baseline=(X-symb.base)]\pic[pic text=\strut#1](X){symbol};%
}

\begin{document}
Zwei einzelne im Text \mysymbol[Text] und \mysymbol

Eine Zeichnung mit mehreren:

\begin{tikzpicture}
\path pic(s1){symbol} ++(3,0)pic[pic text=Formular](s2){symbol} 
  +(5,2)pic[pic text=längerer Text](s3){symbol}  +(5,-2)pic[pic text=Checkliste](s4){symbol};
% Verbindungen zeichnen
\path (s1-symb)edge(s2-symb)
      (s2-symb)edge(s3-symb)
            edge(s4-symb)
      (s3-symb)edge(s4-symb);
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 14 Mai '14, 01:50

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:

×731
×27

gestellte Frage: 13 Mai '14, 13:11

Frage wurde gesehen: 9,764 Mal

zuletzt geändert: 14 Mai '14, 17:07