如何使用“奇偶规则”来切出范围

如何使用“奇偶规则”来切出范围

我有一个预定义的几何图形 \big_area,想从中剪切出另一个预定义的部分 \cut_this_out 来填充它。我想从中剪切出整个“范围”,而不是形状的明确定义。

\def \cutout {(0,0) --++ (3.5,0) --++ (0,7) --++ (-3.5,0) --++(0,-7)}

\def \mycircle {(0,0) circle (10)}


\begin{tikzpicture}


%This works
\fill[even odd rule] \mycircle \cutout;

%This doesn't work
%\fill[even odd rule] \mycircle \begin{scope}[xshift=1cm] \cutout \end{scope};


\end{tikzpicture}

我该怎么做呢?

答案1

scopes带图书馆的一个选项

%\usetikzlibrary{scopes} %<---- Somewhere in the preamble

\begin{tikzpicture}
\def\big_area{(0,0) circle (3)}
\def\cut_this_out{(0,0) circle (1)}
%\draw[fill, even odd rule] \big_area \cut_this_out;

\draw[fill, even odd rule] \big_area {[shift={(3cm,2cm)}]\cut_this_out};
\end{tikzpicture}

为了您自己的理智,请不要在 TeX 宏名称中使用下划线。

答案2

为什么你不能这样做?也就是说,你为什么需要范围?对于你给出的例子来说,它肯定不是必需的。

\documentclass[tikz,border=10pt,multi]{standalone}
\begin{document}
\begin{tikzpicture}
  \draw[fill, even odd rule] (0,0) circle (3) [shift={(1cm,1cm)}](0,0) circle (1);
\end{tikzpicture}
\def \cutout {(0,0) --++ (3.5,0) --++ (0,7) --++ (-3.5,0) --++(0,-7)}
\def \mycircle {(0,0) circle (10)}
\begin{tikzpicture}
  \fill[even odd rule] \mycircle [xshift=1cm]\cutout;
\end{tikzpicture}
\end{document}

切出圆圈

切出矩形

相关内容