在 \ifthenelse 语句中引用 \pgfmathsetmacro 变量

在 \ifthenelse 语句中引用 \pgfmathsetmacro 变量

在定义 \ifthenelse 语句的检查条件时,如何正确引用使用 \pgfmathsetmacro 定义计算的值?

示例问题;随机分散圆圈内的节点......

使用 {1>0.5} 作为我的 \ifthenelse 检查条件,以下 Tikz 图片图按预期工作;

\documentclass{standalone}
\usepackage{ifthen, tikz, pgfplots} \usetikzlibrary{calc}
\begin{document}

    \begin{tikzpicture} 
        \foreach \i in {1,...,10}{
            \pgfmathsetmacro{\r}{random()}  
            \pgfmathsetmacro{\theta}{random()*360}
            \pgfmathsetmacro{\weight}{random()} 
            \pgfmathsetmacro{\x}{\r*sin(\theta)}    
            \pgfmathsetmacro{\y}{\r*cos(\theta)}
            \ifthenelse{1>0.5}{\node[circle, inner sep=1pt, fill=black] (\i) at (\x,\y) {};}{}
        }
    \end{tikzpicture}

\end{document}

但是,当考虑下面依赖于循环的 \ifthenelse 检查条件 {\weight>0.5} 时,我就没有那么幸运了;

\documentclass{standalone}
\usepackage{tikz, pgfplots} \usetikzlibrary{calc}
\begin{document}

    \begin{tikzpicture} 
        \foreach \i in {1,...,10}{
            \pgfmathsetmacro{\r}{random()}  
            \pgfmathsetmacro{\theta}{random()*360}
            \pgfmathsetmacro{\weight}{random()} 
            \pgfmathsetmacro{\x}{\r*sin(\theta)}    
            \pgfmathsetmacro{\y}{\r*cos(\theta)}
            \ifthenelse{\value{\weight}>0.5}{\node[circle, inner sep=1pt, fill=black] (\i) at (\x,\y) {};}{}
        }
    \end{tikzpicture}

\end{document}

这是语法错误,还是更复杂的问题?我无论如何也想不出为什么它不能正确编译...

答案1

由于似乎没有进一步的想法,我会将 percusse 的评论(以上)转换为可接受的答案,并关闭这个问题......

你不需要ifthen,例如使用,\pgfmathparse{(\weight>0.5)?1:0}\ifdim\pgfmathresult pt>0pt\node[circle, inner sep=1pt, fill=black] (\i) at (\x,\y) {};\fi

[所有荣誉归功于打击乐]

相关内容