TiKz und \pgfmathifthenelse

TiKz und \pgfmathifthenelse

Weiß jemand, warum mit dem folgenden Code meine blaue Linie nicht von (0,0) nach (0,5,0) verläuft?

Für mich sollte die Abszisse 1 mit 0,5 multipliziert werden, gegeben durch das \pgfmathresultErgebnis der Bedingung \pgfmathifthenelse, aber das ist nicht der Fall ...

\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{positioning}
\usetikzlibrary{calc}

\newcommand{\origin}{
\node (O) at (0,0){$\times$};
\node at (1,0){$\times$};
\node at (O){O};}

\begin{document}
\begin{tikzpicture}
\origin
\pgfmathifthenelse{1}{"0.5*"}{}
\draw[blue] (0,0)--++(\pgfmathresult1,0);
\end{tikzpicture}
\end{document}

Antwort1

Ich würde mich definitiv von einer solchen Verwendung fernhalten, aber hier besteht das Problem darin, dass die \pgfmathresultDefinition nicht so lange überlebt. Daher muss ihr aktueller Wert schnell verwendet werden. Weil viele Zeichenbefehle sie auch intern verwenden.

\pgfmathsetmacro\mytemp{ifthenelse(1,"0.5*",)};
\draw[blue] (0,0)--++(\mytemp1,0);

funktioniert. Viel intuitiver und auch ohne erweiterungsproblematischen Code ist stattdessen

\pgfmathsetmacro\mytemp{ifthenelse(1,0.5,1)};
\draw[blue] (0,0)--++(\mytemp*1,0);

Dies entspricht auch

 \draw[blue] (0,0) --++({ifthenelse(1,0.5,1)*(1cm)},0);

Bildbeschreibung hier eingeben

verwandte Informationen