\setcounter \ifthenelse und Wertübergabe als float

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: \setcounter \ifthenelse und Wertübergabe als float

Re: \setcounter \ifthenelse und Wertübergabe als float

von byxx » So 26. Feb 2023, 12:38

Großer Dank!!

Re: \setcounter \ifthenelse und Wertübergabe als float

von Bartman » So 26. Feb 2023, 01:05

Laut der Dokumentation des Pakets werden Zahlen verglichen, aber keine mathematischen Ausdrücke. Mit der Hilfe des Befehls \numexpr lässt sich in diesem Fall auch diese Hürde nehmen.
\ifthenelse{\numexpr\x + \offset\relax >\xAmount} {True}{False}
Die Änderung hätte Dir nichts gebracht, weil nicht nur der Zähler, sondern auch die Befehle \ifthenelse und \numexpr auf ganze Zahlen beschränkt sind.

Re: \setcounter \ifthenelse und Wertübergabe als float

von byxx » So 26. Feb 2023, 00:26

Hallo Bartman,
ist schick, ganz klar.
Kurzschreibweise einer ifthenelse? Wunderbar!

Warum funktionierte nach der \foreach nicht:
\ifthenelse{\x + \offset >\xAmount} {True}{False}
THX
BX

Re: \setcounter \ifthenelse und Wertübergabe als float

von Bartman » Sa 25. Feb 2023, 23:53

Teste mal folgendes:
\documentclass{article}
\usepackage{tikz}

\pgfmathsetmacro{\mySum}{0}
\newcommand\offset{0}
\newcommand\xAmount{1}

\newcommand{\drawBalls}[1]{
  \begin{tikzpicture}
  \foreach \x/\mytext/\mycolor in {#1}{
    \pgfmathsetmacro{\mySum}{\x + \offset}
    \pgfmathsetmacro{\currentX}{\mySum > \xAmount ? \mySum-10 : \mySum}
    \node[
      circle,  
      shading=ball, 
      ball color=\mycolor,
      minimum width=1cm, 
      text=white, 
      font=\itshape
    ] (ball) at (\currentX,0) {\mytext};
  }
  \end{tikzpicture}
}

\begin{document}
\drawBalls{1/Rot/red,3/Gelb/yellow,5/Grün/green}\par
\drawBalls{1.5/Text/red,3.4/in/yellow,5.7/Kugel/blue}
\end{document}

\setcounter \ifthenelse und Wertübergabe als float

von byxx » Sa 25. Feb 2023, 22:22

Guten Abend,

wenn ich in der Anwendung der \drawBalls im Dokument Komma-Zahlen(z.B. 2.3) für den Parameter \x übergebe , crashed die Grafik. Mit Ganzzahlen funktioniert es einwandfrei. Würde mich über die Lösung freuen.

Diese ursprüngliche Idee hatte -obwohl gut nachvollziehbar- nicht funktioniert:
 \ifthenelse{{\x + \offset} >\xAmount}{\def\currentX{\x+\offset-10}}{\def\currentX{\x + \offset}};
Der Dissenz scheint demnach gewissermassen darin zu liegen, dass der \setcounter zwar "hilft", jedes \x aus der \foreach zu checken, jedoch mit Komma-Zahlen naturgemäß nicht arbeiten kann...

Danke
BX

\documentclass{article}
\usepackage{tikz, ifthen, calc}
\newcounter{mySum}
\def\offset{0}
\def\xAmount{1}

\newcommand{\drawBalls}[1]{
  \begin{tikzpicture}
  \foreach \x/\mytext/\mycolor in {#1}{
\setcounter{mySum}{\x + \offset};
  \ifthenelse{\value{mySum} >\xAmount}{\def\currentX{\x+\offset-10}}{\def\currentX{\x + \offset}};
  \node[
    circle,  
    shading=ball, 
    ball color=\mycolor,
    minimum width=1cm, 
    text=white, 
    font=\itshape
  ] (ball) at (\currentX,0) {\mytext};}
  \end{tikzpicture}
}

\begin{document}
\drawBalls{1/Rot/red,3/Gelb/yellow,5/Gruen/green}

%%%%%%%%%%%%%%%%%%%%% Problem %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\drawBalls{1.5/Text/red,3.4/in/yellow,5.7/Kugel/blue} float Values (i.e: .3) are not working...



\end{document}

Nach oben