\pgfmathifthenelse 无法正常工作

\pgfmathifthenelse 无法正常工作

有人能帮助我理解为什么这段代码编译为蓝色方格而不是空白文档吗?

\documentclass[12pt]{article}

\usepackage{pgfmath}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
    \foreach \i in {0, 1, 2, 3}
    \foreach \j in {0, 1, 2, 3} {
        \pgfmathparse{0 ? 0 : 0}

        \draw[white, fill=blue, opacity=\pgfmathresult] (\j, \i) rectangle ++(1, 1);
    }
\end{tikzpicture}

\end{document}

网格

在我的计算机和 Overleaf 上,我得到的结果都是一个网格,但它应该是空的。我可以使用类似的模式(即使用 ifthenelse,然后将结果用作不透明度)来制作更“复杂”的图表,但由于某种原因,将其应用于这个更简单的情况失败了,我不明白为什么。

立方体

答案1

您想为此使用特定的宏。

\documentclass[12pt]{article}

\usepackage{pgfmath}
\usepackage{tikz}

\begin{document}

\bigskip

\begin{tikzpicture}
    \foreach \i in {0, 1, 2, 3}
    \foreach \j in {0, 1, 2, 3} {
        %\pgfmathsetmacro{\myopacity}{0 ? 0 : 0}
        \pgfmathsetmacro{\myopacity}{(\i+\j)/10}
        \draw[white, fill=blue, opacity=\myopacity] (\j, \i) rectangle ++(1, 1);
    }
\end{tikzpicture}

\end{document}

我使用可变不透明度只是为了测试。

在此处输入图片描述

相关内容