编辑

编辑

我想在 Latex 中将相交的圆添加到一起,并从更大的圆中移除该区域。我的代码如下:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tikzsymbols}
\usetikzlibrary{shapes,backgrounds,patterns}

\title{picture}
\author{john }
\date{April 2016}

\begin{document}


\def\cutThis{(3.5,0.7) circle (1cm) (5,0) circle (1cm)}

\begin{tikzpicture}

\fill[yellow, even odd rule] (4,0) circle (2cm) \cutThis;

\end{tikzpicture}


\maketitle

\section{Introduction}

\end{document}

但是这不起作用,因为两个圆圈相交的区域是黄色的。如果有人能帮助我,那就太好了。

答案1

最简单的方法就是在填充黄色圆圈后用白色填充圆圈。如果那不是一个选择,事情就没那么简单了,但下面的方法或多或少是可行的。也就是说,它是可行的,但你可能会得到伪影,这取决于你的观察者。(我按照你在截图中看到的那样做。)

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

% code for inverse clipping from Paul Gaborit's answer at http://tex.stackexchange.com/a/59168/

\tikzset{%
  invclip/.style={%
    clip,insert path={%
      {%
        [reset cm]
        (-16383.99999pt,-16383.99999pt) rectangle (16383.99999pt,16383.99999pt)
      }%
    }%
  },
}
\begin{document}
\begin{tikzpicture}
  \begin{scope}
    \begin{pgfinterruptboundingbox}
      \path[invclip] (3.5,0.7) circle (1cm) (5,0) circle (1cm)  (3.5,0.7) circle (1cm);
    \end{pgfinterruptboundingbox}
    \fill[yellow, even odd rule] (4,0) circle (2cm)  (3.5,0.7) circle (1cm);
  \end{scope}
\end{tikzpicture}
\end{document}

反了

编辑

对于维恩图,有一些专门设计的软件包可供使用,以使这变得简单。文图基于 TikZ,而文氏基于MetaPost。

由于这些是为维恩图设计的,因此它们确实假设最外面的区域是矩形。我不确定在这种情况下这是否是个问题。无论如何,这里有几个使用第一个包的示例来说明它在 2 组和 3 组中的用法。

\documentclass[border=10pt,tikz,multi]{standalone}
\usepackage{venndiagram}
\begin{document}
\begin{venndiagram2sets}[labelA={}, labelB={}, shade=yellow]
  \fillNotAorB
\end{venndiagram2sets}
\begin{venndiagram3sets}[labelA={}, labelB={}, labelC={}, shade=yellow]
  \fillNotABC
\end{venndiagram3sets}
\end{document}

这产生了

非 A 且非 B

非 A 非 B 非 C

稍微调整一下第二张图

\begin{venndiagram3sets}[labelA={}, labelB={}, labelC={}, shade=yellow, tikzoptions={draw=none}]
  \fillNotABC
\end{venndiagram3sets}

我们可以得到

非 A 且非 B 且非 C 未绘制

相关内容