![使用定义为节点的路径进行剪辑](https://linux22.com/image/465202/%E4%BD%BF%E7%94%A8%E5%AE%9A%E4%B9%89%E4%B8%BA%E8%8A%82%E7%82%B9%E7%9A%84%E8%B7%AF%E5%BE%84%E8%BF%9B%E8%A1%8C%E5%89%AA%E8%BE%91.png)
我用椭圆来表示集合,并想画出两个集合之间的差异:B - A(下图中的蓝色区域)。
请考虑以下代码:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes, positioning}
\begin{document}
\begin{tikzpicture}
\def\A{(0,0) ellipse (2cm and 3cm)}
\def\B{(2,0) ellipse (3cm and 2cm)}
\draw[red] \A;
\draw[green] \B;
\begin{scope}
\clip \B;
\fill[blue,even odd rule] \B \A;
\end{scope}
\end{tikzpicture}
\end{document}
产生:
但是,我使用 s 来定义省略号node
,因为我需要为它们指定名称。基本上,我的省略号定义为:
\node [draw,transform shape, fill=blue!5,draw=blue,line width=1pt,ellipse,minimum width=2cm,minimum height=1.5cm] (TP) at (1.2,2) {};
基本上,我使用\node
它来代替更简单的椭圆路径,因为我想要这个TP
名字。
\node
如果我尝试使用用而不是定义的椭圆来绘制集合差异(0,0) ellipse (2cm and 3cm)
,则编译会失败。
我有两个问题:
Q1 )我可以给上面代码中定义的省略号命名吗(即不使用
node
)?Q2)如何使用剪辑
\node
并获得与上图相同的结果?
有一个与此类似的问题,但我无法理解答案(太复杂): 使用节点剪切路径。
这是我正在使用的实际 tikz 图片:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes, positioning}
\begin{document}
\begin{tikzpicture}[scale=3]
% frame
\node [draw, transform shape, rectangle, minimum width=5cm, minimum height=3cm, anchor=south west] (F) at (0,0) {};
\node [below left] at (F.north east) {$U$};
\node [draw,transform shape, fill=blue!5,draw=blue,line width=1pt,ellipse,minimum width=2cm,minimum height=1.5cm] (TP) at (1.2,2) {};
\node [right] at (TP.west) {$A$};
\node [draw,transform shape,fill=red!5,draw=red,line width=1pt,ellipse,minimum width=2cm,minimum height=1.5cm] (TN) at (3.8,1) {};
\node [left] at (TN.east) {$B$};
\node [draw,transform shape,fill=green!5,draw=green, fill opacity=0.5, line width=1pt,ellipse,minimum width=2.5cm,minimum height=2cm] (COV) at (2.3,1.2) {};
\node [below right] at (COV.west) {$C$};
\end{tikzpicture}
\end{document}
从那张图片开始,我需要绘制:
A
C - A
我使用椭圆来定义它,\node
因为我需要它们的名称作为锚点。