TiKz 和 \pgfmathifthenelse

TiKz 和 \pgfmathifthenelse

有人知道为什么使用以下代码时,我的蓝线没有从 (0,0) 移动到 (0.5,0)?

对我来说,横坐标 1 应该乘以 0.5,由\pgfmathresult条件得出,\pgfmathifthenelse但事实并非如此......

\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}

答案1

我绝对不会使用这种用法,但这里的问题是 \pgfmathresult定义不会存在那么长时间。因此需要快速使用它的当前值。因为许多绘图命令也在内部使用它。

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

有效。相反,更直观,并且没有任何扩展问题的代码是

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

这也相当于

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

在此处输入图片描述

相关内容