Duplikat zu Ist es möglich eigene Befehle mit mehr als einem optionalen Argument zu definieren?


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

Öffne in Overleaf
\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 30 Nov '15, 01:35

rix's gravatar image

rix
39071823
Akzeptiert-Rate: 0%

bearbeitet 29 Nov '17, 13:43

gast3's gravatar image

gast3
(ausgesetzt)

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, 07: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, 07:49) saputello

Die Frage wurde aus folgenden Grund "Duplikat einer anderen Frage" geschlossen gast3 29 Nov '17, 13:42


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, 08:03

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

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, 17:46) rix

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:

×27
×18
×13
×7

gestellte Frage: 30 Nov '15, 01:35

Frage wurde gesehen: 9,317 Mal

zuletzt geändert: 29 Nov '17, 13:43