Wie kann man mehr als einen optionalen Parameter in eigenen Makros einbauen? Der Beispielbefehl sollte wie folgt aufgebaut sein: \dreieck[Hintergrundfarbe][Linienfarbe]{Größe}{Liniendicke} Standardwerte: Schwarze Linien und weißer / durchsichtiger Hintergrund

Open in Online-Editor
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{tikz}

\newcommand{\dreieck}[2]{\begin{tikzpicture}[
  scale = {#1 * 1.2}, 
  line width = #2, 
  rounded corners = {#2 * 0.1}]
  \draw (90: 1) -- (210: 1) -- (330: 1) -- cycle;
\end{tikzpicture}}

\begin{document}

\dreieck{3}{.8mm}

\end{document}

gefragt 29 Nov '15, 19:35

rix's gravatar image

rix
3452419
Akzeptiert: 93%

bearbeitet 30 Nov '15, 02:05

saputello's gravatar image

saputello
18.4k22352

Das Paket xparse ist da nützlich. Allerdings verheddert man sich bei sowas schnell in einer Unzahl an Optionen, da immer wieder Ausnahmen kommen. Am Ende ist man nur durcheinander.

(30 Nov '15, 01:43) Johannes

Bitte beachte korrektes Markdown für Inline-Code, weil sonst die Darstellung nicht korrekt ist und auch der Backslash fehlt.

(30 Nov '15, 01:49) saputello

Bei mehreren optionalen Argumenten empfiehlt sich die Verwendung von benannten Argumenten in Form einer Liste. pgf/tikz enthält dazu das Paket pgfkeys.

In Deinem konkreten Beispiel kann man aber auch einfach das optionale Argument an \draw weiterreichen und damit alle Optionen angeben, die diese Anweisung versteht:

Open in Online-Editor
\documentclass{article}
\usepackage[ngerman]{babel}
\usepackage{tikz}

\newcommand{\dreieck}[3][]{%
  \begin{tikzpicture}[
    scale = {#2 * 1.2}, 
    line width = #3, 
    rounded corners = {#3 * 0.1}
  ]
  \draw[#1] (90: 1) -- (210: 1) -- (330: 1) -- cycle;
  \end{tikzpicture}%
}

\begin{document}

\dreieck{3}{.8mm}

\dreieck[fill=red,draw=blue]{3}{.8mm}

\end{document}

zwei Dreiecke

Permanenter link

beantwortet 30 Nov '15, 02:03

saputello's gravatar image

saputello
18.4k22352

Dankeschön. Ist wohl tatsächlich die einfachste Lösung. Es würde mich trotzdem interessieren, wie man das auch anders machen kann. :)

(30 Nov '15, 11:46) rix
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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

Zugeordnete Themen:

×17
×15
×6
×6

Frage gestellt: 29 Nov '15, 19:35

Frage wurde angeschaut: 1,106 Mal

Zuletzt aktualisiert: 30 Nov '15, 11:46