
Alguém sabe por que, com o código a seguir, minha linha azul não passa de (0,0) para (0,5,0)?
Para mim a abcissa 1 deveria ser multiplicada por 0,5, dada por \pgfmathresult
, resultado da condição \pgfmathifthenelse
mas não é o 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}
Responder1
Eu definitivamente ficaria longe desse uso, mas aqui o problema é que a \pgfmathresult
definição não sobrevive por tanto tempo. Portanto, seu valor atual precisa ser usado rapidamente. Porque muitos comandos de desenho também o utilizam internamente.
\pgfmathsetmacro\mytemp{ifthenelse(1,"0.5*",)};
\draw[blue] (0,0)--++(\mytemp1,0);
funciona. Em vez disso, muito mais intuitivo e também sem qualquer código problemático de expansão é
\pgfmathsetmacro\mytemp{ifthenelse(1,0.5,1)};
\draw[blue] (0,0)--++(\mytemp*1,0);
Isso também equivale a
\draw[blue] (0,0) --++({ifthenelse(1,0.5,1)*(1cm)},0);