仅对 foreach 中的第一个元素应用阴影

仅对 foreach 中的第一个元素应用阴影

我想将相同的阴影应用于多个矩形。以下是我使用的代码的 MWE(针对 3 个矩形的示例):

\documentclass{article}

\usepackage[letterpaper,textwidth=8.5in,textheight=11in]{geometry}
\usepackage{lscape}

\usepackage{tikz}
\usetikzlibrary{fadings}

\begin{document}
\pagestyle{empty}
\begin{landscape}
\begin{figure}
\centering
\begin{tikzpicture}[scale=1]

\coordinate(A) at (1.5,4);

\foreach \x in {0,1,2}
\shadedraw [thick, left color=white, right color=black] (A) ++(6*\x,0) rectangle +(1,-0.35); 

\end{tikzpicture}
\end{figure}
\end{landscape}
\end{document}

尽管如此,我通过这段代码得到了以下结果:

在此处输入图片描述

只有第一个矩形是阴影...我该如何解决这个问题?

答案1

这确实相当深奥,但该操作(A) ++(x,y)实际上是将算作(A)路径的一部分,而您看到的是整个褪色条带被打孔并通过 3 个孔查看。因为即使您没有在中间绘制任何东西,它们实际上也会(A)考虑褪色。

您可以通过([xshift=6*\x cm]A)或使用 calc 库语法($(A)+(6*\x,0)$)等来修复它。只要您不修改路径 pen,就可以了。

在此处输入图片描述

答案2

只是玩玩...

\documentclass[tikz,border=5pt]{standalone}

\usetikzlibrary{fadings}

\begin{document}
  \begin{tikzpicture}

    \coordinate(A) at (1.5,4);
    \foreach \x in {0,1,2}
    \shadedraw [thick, left color=white, right color=black] (A) ++(6*\x,0) rectangle +(1,-0.35);

    \coordinate(b0) at (-4.5,2);
    \path [draw, thick, left color=white, right color=black] foreach \x [count=\i] in {0,1,2} {(b\x |- b0) ++(6,0) coordinate (b\i) rectangle ++(1,-0.35)};

    \coordinate(C) at (1.5,0);
    \foreach \x [count=\i] in {0,1,2}
      \shadedraw [thick, left color=white, right color=black] ([xshift=6*\x cm]C) rectangle +(1,-0.35);

    \coordinate(D) at (1.5,-2);
    \foreach \x in {0,1,2}
    \path (D) ++(6*\x,0) node [minimum height=3.5mm, minimum width=10mm, inner sep=0pt, anchor=north west, thick, draw, left color=white, right color=black] {};

  \end{tikzpicture}
\end{document}

玩

相关内容