
¿Alguien sabe por qué, con el siguiente código, no consigo que mi línea azul pase de (0,0) a (0.5,0)?
Para mí la abscisa 1 debería multiplicarse por 0.5, dada por \pgfmathresult
, resultado de la condición \pgfmathifthenelse
pero ese no es el caso...
\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}
Respuesta1
Definitivamente me mantendría alejado de ese uso, pero aquí el problema es que la \pgfmathresult
definición no sobrevive tanto tiempo. Por lo tanto, su valor actual debe utilizarse rápidamente. Porque muchos comandos de dibujo también lo usan internamente.
\pgfmathsetmacro\mytemp{ifthenelse(1,"0.5*",)};
\draw[blue] (0,0)--++(\mytemp1,0);
obras. En cambio, es mucho más intuitivo y además sin ningún código problemático de expansión.
\pgfmathsetmacro\mytemp{ifthenelse(1,0.5,1)};
\draw[blue] (0,0)--++(\mytemp*1,0);
Esto también equivale a
\draw[blue] (0,0) --++({ifthenelse(1,0.5,1)*(1cm)},0);