3
1

Wie kann man in TikZ Fallunterscheidungen vornehmen?

Beispielmuster:

Wenn n gleich 1 dann "eins"

Wenn n gleich 2 dann "zwei"

Wenn n ... dann ... (Ausgab oder weitere Routine)

Sonst ... (Ausgab oder weitere Routine)

gefragt 12 Nov '15, 04:43

rix's gravatar image

rix
39071823
Akzeptiert-Rate: 0%

bearbeitet 12 Nov '15, 04:47

1

Könntest Du bitte ein Beispiel angeben, wie das verwendet werden soll?

(12 Nov '15, 11:10) saputello

Eine Möglichkeit ist ifthenelse als mathematische Funktion.

Open in Online-Editor
\documentclass{article}
\usepackage{tikz}
\newcommand{\test}{%
  \pgfmathparse{
    ifthenelse(\n==1,"eins",
    ifthenelse(\n==2,"zwei",
    ifthenelse(\n==3,"drei",
                     "was anderes"))}
  \pgfmathresult}
\begin{document}
\begin{tikzpicture}
  \foreach \n in {1,...,4}
    \node at (0,-\n) {\test};
\end{tikzpicture}
\end{document}

Die Fallunterscheidung lässt sich in \pgfmathparse noch kürzer schreiben:

Open in Online-Editor
\pgfmathparse{
   \n==1 ? "eins" :
  (\n==2 ? "zwei" :
  (\n==3 ? "drei" :
           "was anderes"))}

Ausgabe des Beispiels:

Ausgabe

Eine alternative if ... then ... else ... Syntax bietet tikzmath:

Open in Online-Editor
\usetikzlibrary{math}
\newcommand{\test}{%
  \tikzmath{
     if \n==1
       then { let \ausgabe = eins;}
     else {
       if \n==2
         then { let \ausgabe = zwei;}
       else {
         let \ausgabe = was anderes;
       };
     };
  }%
  \ausgabe}
Permanenter link

beantwortet 12 Nov '15, 07:50

stefan's gravatar image

stefan ♦♦
18.3k163148
Akzeptiert-Rate: 50%

bearbeitet 12 Nov '15, 08:02

expl3 bietet die Funktion \int_case:nnTF an, mit welcher man (vollständig expandierbar) beliebige Fälle unterscheiden kann.

Open in Online-Editor
\documentclass{article}
\usepackage{tikz,xparse}
\ExplSyntaxOn

\DeclareExpandableDocumentCommand \test { m }
 {
  \int_case:nnF { #1 }
   {
    { 1 } { eins }
    { 2 } { zwei }
    { 3 } { drei }
   }
   { was ~ anderes }
 }

\ExplSyntaxOff
\begin{document}
\begin{tikzpicture}
  \foreach \n in {1,...,4}
    \node at (0,-\n) {\test{\n}};
\end{tikzpicture}
\end{document}

alt text

Permanenter link

beantwortet 24 Jan '16, 23:10

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

Es kommt sehr darauf an, welche Werte tatsächlich auftreten können und wozu das Ergebnis verwendet werden soll. Wenn die Fallunterscheidung nur natürliche Zahlen (einschl. 0) umfassen muss, dass kann man unabhängig von tikz das TeX-Primitv \ifcase für die Fallunterscheidung verwenden:

Open in Online-Editor
\documentclass{article}
\usepackage{tikz}
\newcommand{\test}{%
  \ifcase \n
    null%
  \or
    eins%
  \or
    zwei%
  \or
    drei%
  \else
    was anderes%
  \fi
}
\begin{document}
\begin{tikzpicture}
  \foreach \n in {1,...,4}
    \node at (0,-\n) {\test};
\end{tikzpicture}
\end{document}
Permanenter link

beantwortet 12 Nov '15, 11:10

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

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
×3
×1
×1
×1

gestellte Frage: 12 Nov '15, 04:43

Frage wurde gesehen: 12,004 Mal

zuletzt geändert: 24 Jan '16, 23:10