%%
%% This is file `venndiagram.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% venndiagram.dtx  (with options: `venndiagram.sty,package')
%% 
%%  venndiagram.dtx
%%  Copyright 2012 Nicola Talbot
%% 
%%  This work may be distributed and/or modified under the
%%  conditions of the LaTeX Project Public License, either version 1.3
%%  of this license of (at your option) any later version.
%%  The latest version of this license is in
%%    http://www.latex-project.org/lppl.txt
%%  and version 1.3 or later is part of all distributions of LaTeX
%%  version 2005/12/01 or later.
%% 
%%  This work has the LPPL maintenance status `maintained'.
%% 
%%  The Current Maintainer of this work is Nicola Talbot.
%% 
%%  This work consists of the files venndiagram.dtx and venndiagram.ins and the derived file venndiagram.sty.
%% 
%% \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{venndiagram}[2012/10/24 v1.0 (NLCT) Venn diagrams]
\RequirePackage{xkeyval}
\RequirePackage{tikz}
\RequirePackage{etoolbox}
\usetikzlibrary{intersections}
\newcommand*{\@venn@label@A}{$A$}
\newcommand*{\@venn@label@B}{$B$}
\newcommand*{\@venn@label@C}{$C$}
\newcommand*{\@venn@shade}{lightgray}
\newcommand*{\@venn@label@OnlyA}{}
\newcommand*{\@venn@label@OnlyB}{}
\newcommand*{\@venn@label@OnlyC}{}
\newcommand*{\@venn@label@OnlyAB}{}
\newcommand*{\@venn@label@OnlyAC}{}
\newcommand*{\@venn@label@OnlyBC}{}
\newcommand*{\@venn@label@ABC}{}
\newcommand*{\@venn@label@NotABC}{}
\newcommand*{\@venn@label@NotAB}{}
\newcommand*{\@venn@label@AB}{}
\newcommand*{\@venn@radius}{1.2cm}
\newcommand*{\@venn@hgap}{0.5cm}
\newcommand*{\@venn@vgap}{0.5cm}
\newcommand*{\@venn@overlap}{0.75cm}
\newcommand*{\@venn@tikzoptions}{}
\newlength\@venn@Ax
\newlength\@venn@Ay
\newlength\@venn@Bx
\newlength\@venn@By
\newlength\@venn@Cx
\newlength\@venn@Cy
\newlength\@venn@w
\newlength\@venn@h
\define@key{venn}{shade}{\def\@venn@shade{#1}}
\define@key{venn}{labelA}{\def\@venn@label@A{#1}}
\define@key{venn}{labelB}{\def\@venn@label@B{#1}}
\define@key{venn}{labelC}{\def\@venn@label@C{#1}}
\define@key{venn}{labelOnlyA}{\def\@venn@label@OnlyA{#1}}
\define@key{venn}{labelOnlyB}{\def\@venn@label@OnlyB{#1}}
\define@key{venn}{labelOnlyC}{\def\@venn@label@OnlyC{#1}}
\define@key{venn}{labelOnlyAB}{\def\@venn@label@OnlyAB{#1}}
\define@key{venn}{labelOnlyAC}{\def\@venn@label@OnlyAC{#1}}
\define@key{venn}{labelOnlyBC}{\def\@venn@label@OnlyBC{#1}}
\define@key{venn}{labelABC}{\def\@venn@label@ABC{#1}}
\define@key{venn}{labelNotABC}{\def\@venn@label@NotABC{#1}}
\define@key{venn}{labelAB}{\def\@venn@label@AB{#1}}
\define@key{venn}{labelNotAB}{\def\@venn@label@NotAB{#1}}
\define@key{venn}{radius}{\def\@venn@radius{#1}}
\define@key{venn}{hgap}{\def\@venn@hgap{#1}}
\define@key{venn}{vgap}{\def\@venn@vgap{#1}}
\define@key{venn}{overlap}{\def\@venn@overlap{#1}}
\define@key{venn}{tikzoptions}{\def\@venn@tikzoptions{#1}}

\newenvironment{venndiagram3sets}[1][]%
{%
  \disable@keys{venn}{labelAB,labelNotAB}%
  \setkeys{venn}{#1}%
  \pgfmathsetlength{\@venn@Cx}{\@venn@hgap + 2*\@venn@radius
    -0.5*\@venn@overlap}%
  \pgfmathsetlength{\@venn@Cy}{\@venn@vgap+\@venn@radius}%
  \pgfmathsetlength{\@venn@Ax}{\@venn@hgap+\@venn@radius}%
  \pgfmathsetlength{\@venn@Ay}{\@venn@Cy
    + (\@venn@radius - 0.5*\@venn@overlap)*1.73205}%
  \pgfmathsetlength{\@venn@Bx}{\@venn@hgap+3*\@venn@radius
    -\@venn@overlap}%
  \setlength{\@venn@By}{\@venn@Ay}%
  \pgfmathsetlength{\@venn@w}{2*\@venn@hgap+4*\@venn@radius
     -\@venn@overlap}%
  \pgfmathsetlength{\@venn@h}{2*\@venn@vgap+4*\@venn@radius
     -\@venn@overlap}%
  \def\fillA{\path[fill=\@venn@shade] (\@venn@Ax,\@venn@Ay)
    circle (\@venn@radius);}%
  \def\fillB{\path[fill=\@venn@shade] (\@venn@Bx,\@venn@By)
    circle (\@venn@radius);}%
  \def\fillC{\path[fill=\@venn@shade] (\@venn@Cx,\@venn@Cy)
    circle (\@venn@radius);}%
  \def\fillAll{\path[fill=\@venn@shade] (0,0)
    rectangle (\@venn@w,\@venn@h);}%
  \def\fillNotA{\path[fill=\@venn@shade,even odd rule]
    (0,0) rectangle (\@venn@w,\@venn@h)
    (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);}%
  \def\fillNotB{\path[fill=\@venn@shade,even odd rule]
    (0,0) rectangle (\@venn@w,\@venn@h)
    (\@venn@Bx,\@venn@By) circle (\@venn@radius);}%
  \def\fillNotC{\path[fill=\@venn@shade,even odd rule]
    (0,0) rectangle (\@venn@w,\@venn@h)
    (\@venn@Cx,\@venn@Cy) circle (\@venn@radius);}%
  \def\fillOnlyA{%
    \begin{scope}
    \path[name path=A] (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
    \path[name path=BC] (\@venn@Bx,\@venn@By) circle (\@venn@radius)
      (\@venn@Cx,\@venn@Cy) circle (\@venn@radius);
    \path[name intersections={of=A and BC,name=ABintersect}]
      (ABintersect-1) ;
    \pgfgetlastxy{\@venn@AB@xi}{\@venn@AB@yi}
    \path (ABintersect-2);
    \pgfgetlastxy{\@venn@AB@xii}{\@venn@AB@yii}
    \pgfmathparse{atan2(\@venn@AB@xi-\@venn@Ax,\@venn@AB@yi-\@venn@Ay)}
    \let\@venn@start@i=\pgfmathresult
    \pgfmathparse{360+atan2(\@venn@AB@xii-\@venn@Ax,\@venn@AB@yii-\@venn@Ay)}
    \let\@venn@end@i=\pgfmathresult
    \path[name path=B] (\@venn@Bx,\@venn@By) circle (\@venn@radius);
    \path[name path=C] (\@venn@Cx,\@venn@Cy) circle (\@venn@radius);
    \path[name intersections={of=B and C,name=BCintersect}]
      (BCintersect-1);
    \pgfgetlastxy{\@venn@BC@x}{\@venn@BC@y}
    \pgfmathparse{atan2(\@venn@AB@xii-\@venn@Cx, \@venn@AB@yii-\@venn@Cy)}
    \let\@venn@start@ii=\pgfmathresult
    \pgfmathparse{atan2(\@venn@BC@x-\@venn@Cx, \@venn@BC@y-\@venn@Cy)}
    \let\@venn@end@ii=\pgfmathresult
    \pgfmathparse{atan2(\@venn@BC@x-\@venn@Bx, \@venn@BC@y-\@venn@By)}
    \let\@venn@start@iii=\pgfmathresult
    \pgfmathparse{atan2(\@venn@AB@xi-\@venn@Bx, \@venn@AB@yi-\@venn@By)-360}
    \let\@venn@end@iii=\pgfmathresult
    \path[fill=\@venn@shade] (ABintersect-1)
     arc[radius=\@venn@radius,
         start angle=\@venn@start@i,end angle=\@venn@end@i]
     arc[radius=\@venn@radius,
         start angle=\@venn@start@ii,end angle=\@venn@end@ii]
     arc[radius=\@venn@radius,
         start angle=\@venn@start@iii,end angle=\@venn@end@iii]
     -- cycle;
    \end{scope}
  }%
  \def\fillOnlyB{%
    \begin{scope}
    \path[name path=B] (\@venn@Bx,\@venn@By) circle (\@venn@radius);
    \path[name path=AC] (\@venn@Ax,\@venn@Ay) circle (\@venn@radius)
      (\@venn@Cx,\@venn@Cy) circle (\@venn@radius);
    \path[name intersections={of=B and AC,name=BAintersect,sort by=B}]
      (BAintersect-1);
    \pgfgetlastxy{\@venn@BA@xi}{\@venn@BA@yi}
    \path (BAintersect-4);
    \pgfgetlastxy{\@venn@BA@xii}{\@venn@BA@yii}
    \pgfmathparse{atan2(\@venn@BA@xi-\@venn@Bx,\@venn@BA@yi-\@venn@By)}
    \let\@venn@start@i=\pgfmathresult
    \pgfmathparse{atan2(\@venn@BA@xii-\@venn@Bx,\@venn@BA@yii-\@venn@By)}
    \let\@venn@end@i=\pgfmathresult
    \path[name path=A] (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
    \path[name path=C] (\@venn@Cx,\@venn@Cy) circle (\@venn@radius);
    \path[name intersections={of=A and C,name=ACintersect}]
      (ACintersect-2);
    \pgfgetlastxy{\@venn@AC@x}{\@venn@AC@y}
    \pgfmathparse{atan2(\@venn@BA@xii-\@venn@Cx, \@venn@BA@yii-\@venn@Cy)}
    \let\@venn@start@ii=\pgfmathresult
    \pgfmathparse{atan2(\@venn@AC@x-\@venn@Cx, \@venn@AC@y-\@venn@Cy)}
    \let\@venn@end@ii=\pgfmathresult
    \pgfmathparse{atan2(\@venn@AC@x-\@venn@Ax, \@venn@AC@y-\@venn@Ay)}
    \let\@venn@start@iii=\pgfmathresult
    \pgfmathparse{atan2(\@venn@BA@xi-\@venn@Ax, \@venn@BA@yi-\@venn@Ay)}
    \let\@venn@end@iii=\pgfmathresult
    \path[fill=\@venn@shade] (BAintersect-1)
     arc[radius=\@venn@radius,
         start angle=\@venn@start@i,end angle=\@venn@end@i]
     arc[radius=\@venn@radius,
         start angle=\@venn@start@ii,end angle=\@venn@end@ii]
     arc[radius=\@venn@radius,
         start angle=\@venn@start@iii,end angle=\@venn@end@iii]
     -- cycle ;
    \end{scope}
  }%
  \def\fillOnlyC{%
    \begin{scope}
    \path[name path=C] (\@venn@Cx,\@venn@Cy) circle (\@venn@radius);
    \path[name path=BA] (\@venn@Bx,\@venn@By) circle (\@venn@radius)
      (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
    \path[name intersections={of=C and BA,name=CBintersect,sort by=C}]
      (CBintersect-1);
    \pgfgetlastxy{\@venn@CB@xi}{\@venn@CB@yi}
    \path (CBintersect-4);
    \pgfgetlastxy{\@venn@CB@xii}{\@venn@CB@yii}
    \pgfmathparse{atan2(\@venn@CB@xi-\@venn@Cx,\@venn@CB@yi-\@venn@Cy)}
    \let\@venn@start@i=\pgfmathresult
    \pgfmathparse{atan2(\@venn@CB@xii-\@venn@Cx,\@venn@CB@yii-\@venn@Cy)-360}
    \let\@venn@end@i=\pgfmathresult
    \path[name path=B] (\@venn@Bx,\@venn@By) circle (\@venn@radius);
    \path[name path=A] (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
    \path[name intersections={of=B and A,name=BAintersect}]
      (BAintersect-2);
    \pgfgetlastxy{\@venn@BA@x}{\@venn@BA@y}
    \pgfmathparse{atan2(\@venn@CB@xii-\@venn@Ax, \@venn@CB@yii-\@venn@Ay)}
    \let\@venn@start@ii=\pgfmathresult
    \pgfmathparse{atan2(\@venn@BA@x-\@venn@Ax, \@venn@BA@y-\@venn@Ay)}
    \let\@venn@end@ii=\pgfmathresult
    \pgfmathparse{atan2(\@venn@BA@x-\@venn@Bx, \@venn@BA@y-\@venn@By)}
    \let\@venn@start@iii=\pgfmathresult
    \pgfmathparse{atan2(\@venn@CB@xi-\@venn@Bx, \@venn@CB@yi-\@venn@By)}
    \let\@venn@end@iii=\pgfmathresult
    \path[fill=\@venn@shade] (CBintersect-1)
     arc[radius=\@venn@radius,
         start angle=\@venn@start@i,end angle=\@venn@end@i]
     arc[radius=\@venn@radius,
         start angle=\@venn@start@ii,end angle=\@venn@end@ii]
     arc[radius=\@venn@radius,
         start angle=\@venn@start@iii,end angle=\@venn@end@iii]
     -- cycle;
    \end{scope}
  }%
  \def\fillNotABC{%
    \begin{scope}
    \path[name path=A] (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
    \path[name path=B] (\@venn@Bx,\@venn@By) circle (\@venn@radius);
    \path[name path=C] (\@venn@Cx,\@venn@Cy) circle (\@venn@radius);
    \path[name intersections={of=A and B,name=ABintersect}]
      (ABintersect-1);
    \pgfgetlastxy{\@venn@AB@x}{\@venn@AB@y}
    \path[name intersections={of=A and C,name=ACintersect}]
      (ACintersect-1);
    \pgfgetlastxy{\@venn@AC@x}{\@venn@AC@y}
    \path[name intersections={of=C and B,name=CBintersect}]
      (CBintersect-1);
    \pgfgetlastxy{\@venn@CB@x}{\@venn@CB@y}
    \pgfmathparse{atan2(\@venn@AB@x-\@venn@Ax, \@venn@AB@y-\@venn@Ay)}
    \let\@venn@start@i=\pgfmathresult
    \pgfmathparse{atan2(\@venn@AC@x-\@venn@Ax, \@venn@AC@y-\@venn@Ay)+360}
    \let\@venn@end@i=\pgfmathresult
    \pgfmathparse{atan2(\@venn@AC@x-\@venn@Cx,\@venn@AC@y-\@venn@Cy)}
    \let\@venn@start@ii=\pgfmathresult
    \pgfmathparse{atan2(\@venn@CB@x-\@venn@Cx,\@venn@CB@y-\@venn@Cy)+360}
    \let\@venn@end@ii=\pgfmathresult
    \pgfmathparse{atan2(\@venn@CB@x-\@venn@Bx,\@venn@CB@y-\@venn@By)}
    \let\@venn@start@iii=\pgfmathresult
    \pgfmathparse{atan2(\@venn@AB@x-\@venn@Bx,\@venn@AB@y-\@venn@By)}
    \let\@venn@end@iii=\pgfmathresult
   \path[fill=\@venn@shade]
     (0,0) rectangle (\@venn@w,\@venn@h)
     (ABintersect-1)
     arc[radius=\@venn@radius,
         start angle=\@venn@start@i,end angle=\@venn@end@i]
     arc[radius=\@venn@radius,
         start angle=\@venn@start@ii,end angle=\@venn@end@ii]
     arc[radius=\@venn@radius,
         start angle=\@venn@start@iii,end angle=\@venn@end@iii]
     -- cycle;
    \end{scope}
  }%
  \def\fillANotB{%
    \begin{scope}
      \clip (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
      \path[fill=\@venn@shade,even odd rule]
        (\@venn@Ax,\@venn@Ay) circle (\@venn@radius)
        (\@venn@Bx,\@venn@By) circle (\@venn@radius);
    \end{scope}
  }%
  \def\fillBNotA{%
    \begin{scope}
      \clip (\@venn@Bx,\@venn@By) circle (\@venn@radius);
      \path[fill=\@venn@shade,even odd rule]
        (\@venn@Bx,\@venn@By) circle (\@venn@radius)
        (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
    \end{scope}
  }%
  \def\fillANotC{%
    \begin{scope}
      \clip (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
      \path[fill=\@venn@shade,even odd rule]
        (\@venn@Ax,\@venn@Ay) circle (\@venn@radius)
        (\@venn@Cx,\@venn@Cy) circle (\@venn@radius);
    \end{scope}
  }%
  \def\fillCNotA{%
    \begin{scope}
      \clip (\@venn@Cx,\@venn@Cy) circle (\@venn@radius);
      \path[fill=\@venn@shade,even odd rule]
        (\@venn@Cx,\@venn@Cy) circle (\@venn@radius)
        (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
    \end{scope}
  }%
  \def\fillBNotC{%
    \begin{scope}
      \clip (\@venn@Bx,\@venn@By) circle (\@venn@radius);
      \path[fill=\@venn@shade,even odd rule]
        (\@venn@Bx,\@venn@By) circle (\@venn@radius)
        (\@venn@Cx,\@venn@Cy) circle (\@venn@radius);
    \end{scope}
  }%
  \def\fillCNotB{%
    \begin{scope}
      \clip (\@venn@Cx,\@venn@Cy) circle (\@venn@radius);
      \path[fill=\@venn@shade,even odd rule]
        (\@venn@Cx,\@venn@Cy) circle (\@venn@radius)
        (\@venn@Bx,\@venn@By) circle (\@venn@radius);
    \end{scope}
  }%
  \def\fillACapB{%
    \begin{scope}
      \clip (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
      \path[fill=\@venn@shade]
        (\@venn@Bx,\@venn@By) circle (\@venn@radius);
    \end{scope}
  }%
  \let\fillBCapA\fillACapB
  \def\fillACapC{%
    \begin{scope}
      \clip (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
      \path[fill=\@venn@shade]
        (\@venn@Cx,\@venn@Cy) circle (\@venn@radius);
    \end{scope}
  }%
  \let\fillCCapA\fillACapC
  \def\fillBCapC{%
    \begin{scope}
      \clip (\@venn@Bx,\@venn@By) circle (\@venn@radius);
      \path[fill=\@venn@shade]
        (\@venn@Cx,\@venn@Cy) circle (\@venn@radius);
    \end{scope}
  }%
  \let\fillCCapB\fillBCapC
  \def\fillACapBNotC{%
    \begin{scope}
      \clip (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
      \clip (\@venn@Bx,\@venn@By) circle (\@venn@radius);
      \path[fill=\@venn@shade,even odd rule]
        (\@venn@Bx,\@venn@By) circle (\@venn@radius)
        (\@venn@Cx,\@venn@Cy) circle (\@venn@radius);
    \end{scope}
  }%
  \let\fillBCapANotC\fillACapBNotC
  \def\fillACapCNotB{%
    \begin{scope}
      \clip (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
      \clip (\@venn@Cx,\@venn@Cy) circle (\@venn@radius);
      \path[fill=\@venn@shade,even odd rule]
        (\@venn@Cx,\@venn@Cy) circle (\@venn@radius)
        (\@venn@Bx,\@venn@By) circle (\@venn@radius);
    \end{scope}
  }%
  \let\fillCCapANotB\fillACapCNotB
  \def\fillBCapCNotA{%
    \begin{scope}
      \clip (\@venn@Bx,\@venn@By) circle (\@venn@radius);
      \clip (\@venn@Cx,\@venn@Cy) circle (\@venn@radius);
      \path[fill=\@venn@shade,even odd rule]
        (\@venn@Cx,\@venn@Cy) circle (\@venn@radius)
        (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
    \end{scope}
  }%
  \let\fillCCapBNotA\fillBCapCNotA
  \def\fillACapBCapC{%
    \begin{scope}
      \clip (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
      \clip (\@venn@Cx,\@venn@Cy) circle (\@venn@radius);
      \path[fill=\@venn@shade]
        (\@venn@Bx,\@venn@By) circle (\@venn@radius);
    \end{scope}
  }%
  \let\fillACapCCapB\fillACapBCapC
  \let\fillBCapACapC\fillACapBCapC
  \let\fillBCapCCapA\fillACapBCapC
  \let\fillCCapACapB\fillACapBCapC
  \let\fillCCapBCapA\fillACapBCapC
  \ifdefempty{\@venn@tikzoptions}%
  {%
    \def\@venn@dobegin{\begin{tikzpicture}}%
  }%
  {%
    \edef\@venn@dobegin{\noexpand\begin{tikzpicture}%
       [\expandonce\@venn@tikzoptions]}%
  }%
  \@venn@dobegin
  \path (0,0) coordinate (venn bottom left)
        (0,\@venn@h) coordinate (venn top left)
        (\@venn@w,\@venn@h) coordinate (venn top right)
        (\@venn@w,0) coordinate (venn bottom right);
}%
{%
    \draw (0,0) rectangle (\@venn@w,\@venn@h);
    \draw (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
    \draw (\@venn@Bx,\@venn@By) circle (\@venn@radius);
    \draw (\@venn@Cx,\@venn@Cy) circle (\@venn@radius);
    \draw (\@venn@Ax,\@venn@Ay) node[above,left] (labelOnlyA) {\@venn@label@OnlyA};
    \draw (\@venn@Bx,\@venn@By) node[above,right] (labelOnlyB) {\@venn@label@OnlyB};
    \draw (\@venn@Cx,\@venn@Cy) node[below] (labelOnlyC) {\@venn@label@OnlyC};
    \draw (\@venn@vgap,\@venn@hgap) node (labelNotABC) {\@venn@label@NotABC};
    \draw (\@venn@Ax,\@venn@Ay+\@venn@radius)
      node[below] (labelA) {\@venn@label@A};
    \draw (\@venn@Bx,\@venn@By+\@venn@radius)
      node[below] (labelB) {\@venn@label@B};
    \draw (\@venn@Cx,\@venn@vgap) node[above] (labelC) {\@venn@label@C};
    \draw (\@venn@Cx,0.5*\@venn@h) node (labelABC) {\@venn@label@ABC};
    \draw (\@venn@Cx,\@venn@Ay) node[above] (labelOnlyAB) {\@venn@label@OnlyAB};
    \draw (\@venn@Ax,\@venn@Ay) ++(-60:\@venn@radius-0.5*\@venn@overlap)
      node[below left] (labelOnlyAC) {\@venn@label@OnlyAC};
    \draw (\@venn@Bx,\@venn@By) ++(-120:\@venn@radius-0.5*\@venn@overlap)
      node[below right] (labelOnlyBC) {\@venn@label@OnlyBC};
    \@postvennhook
  \end{tikzpicture}
}
\newcommand*{\@postvennhook}{}
\newcommand*{\setpostvennhook}[1]{\def\@postvennhook{#1}}
\newenvironment{venndiagram2sets}[1][]%
{%
  \disable@keys{venn}{labelABC,labelOnlyC,labelOnlyAC,labelOnlyBC,%
    labelNotABC,labelC,labelOnlyAB}%
  \setkeys{venn}{#1}%
  % Calculate centre of A
  \pgfmathsetlength{\@venn@Ax}{\@venn@hgap+\@venn@radius}%
  \pgfmathsetlength{\@venn@Ay}{\@venn@vgap+\@venn@radius}%
  \pgfmathsetlength{\@venn@Bx}{\@venn@hgap+3*\@venn@radius
    -\@venn@overlap}%
  \setlength{\@venn@By}{\@venn@Ay}%
  \pgfmathsetlength{\@venn@w}{2*\@venn@hgap+4*\@venn@radius
     -\@venn@overlap}%
  \pgfmathsetlength{\@venn@h}{2*\@venn@vgap+2*\@venn@radius}%
  \def\fillA{\path[fill=\@venn@shade] (\@venn@Ax,\@venn@Ay)
    circle (\@venn@radius);}%
  \def\fillB{\path[fill=\@venn@shade] (\@venn@Bx,\@venn@By)
    circle (\@venn@radius);}%
  \def\fillAll{\path[fill=\@venn@shade] (0,0)
    rectangle (\@venn@w,\@venn@h);}%
  \def\fillOnlyA{%
    \begin{scope}
    \path[name path=A] (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
    \path[name path=B] (\@venn@Bx,\@venn@By) circle (\@venn@radius);
    \path[name intersections={of=A and B,name=ABintersect}]
      (ABintersect-1) ;
    \pgfgetlastxy{\@venn@AB@xi}{\@venn@AB@yi}
    \path (ABintersect-2);
    \pgfgetlastxy{\@venn@AB@xii}{\@venn@AB@yii}
    \pgfmathparse{atan2(\@venn@AB@xi-\@venn@Ax,\@venn@AB@yi-\@venn@Ay)}
    \let\@venn@start@i=\pgfmathresult
    \pgfmathparse{360+atan2(\@venn@AB@xii-\@venn@Ax,\@venn@AB@yii-\@venn@Ay)}
    \let\@venn@end@i=\pgfmathresult
    \pgfmathparse{atan2(\@venn@AB@xii-\@venn@Bx, \@venn@AB@yii-\@venn@By)}
    \let\@venn@start@ii=\pgfmathresult
    \pgfmathparse{atan2(\@venn@AB@xi-\@venn@Bx, \@venn@AB@yi-\@venn@By)-360}
    \let\@venn@end@ii=\pgfmathresult
    \path[fill=\@venn@shade] (ABintersect-1)
     arc[radius=\@venn@radius,
         start angle=\@venn@start@i,end angle=\@venn@end@i]
     arc[radius=\@venn@radius,
         start angle=\@venn@start@ii,end angle=\@venn@end@ii]
     -- cycle;
    \end{scope}
  }%
  \def\fillOnlyB{%
    \begin{scope}
    \path[name path=A] (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
    \path[name path=B] (\@venn@Bx,\@venn@By) circle (\@venn@radius);
    \path[name intersections={of=A and B,name=ABintersect}]
      (ABintersect-1) ;
    \pgfgetlastxy{\@venn@AB@xi}{\@venn@AB@yi}
    \path (ABintersect-2);
    \pgfgetlastxy{\@venn@AB@xii}{\@venn@AB@yii}
    \pgfmathparse{atan2(\@venn@AB@xi-\@venn@Bx,\@venn@AB@yi-\@venn@By)}
    \let\@venn@start@i=\pgfmathresult
    \pgfmathparse{atan2(\@venn@AB@xii-\@venn@Bx,\@venn@AB@yii-\@venn@By)}
    \let\@venn@end@i=\pgfmathresult
    \pgfmathparse{atan2(\@venn@AB@xii-\@venn@Ax, \@venn@AB@yii-\@venn@Ay)}
    \let\@venn@start@ii=\pgfmathresult
    \pgfmathparse{atan2(\@venn@AB@xi-\@venn@Ax, \@venn@AB@yi-\@venn@Ay)}
    \let\@venn@end@ii=\pgfmathresult
    \path[fill=\@venn@shade] (ABintersect-1)
     arc[radius=\@venn@radius,
         start angle=\@venn@start@i,end angle=\@venn@end@i]
     arc[radius=\@venn@radius,
         start angle=\@venn@start@ii,end angle=\@venn@end@ii]
     -- cycle;
    \end{scope}
  }%
  \def\fillNotA{\path[fill=\@venn@shade,even odd rule]
    (0,0) rectangle (\@venn@w,\@venn@h)
    (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);}%
  \def\fillNotB{\path[fill=\@venn@shade,even odd rule]
    (0,0) rectangle (\@venn@w,\@venn@h)
    (\@venn@Bx,\@venn@By) circle (\@venn@radius);}%
  \def\fillNotAorB{%
    \begin{scope}
    \path[clip]
    (0,0) rectangle (\@venn@w,\@venn@h)
    (\@venn@Bx,\@venn@By) circle (\@venn@radius)
     ;
    \path[fill=\@venn@shade,even odd rule]
    (0,0) rectangle (\@venn@w,\@venn@h)
    (\@venn@Ax,\@venn@Ay) circle (\@venn@radius)
    ;
    \end{scope}
   }%
  \def\fillNotAorNotB{%
    \path[fill=\@venn@shade,nonzero rule]
    (0,0) rectangle (\@venn@w,\@venn@h)
    (\@venn@Ax,\@venn@Ay) circle (\@venn@radius)
    (0,0) rectangle (\@venn@w,\@venn@h)
    (\@venn@Bx,\@venn@By) circle (\@venn@radius)
    ;
   }%
  \def\fillANotB{%
    \begin{scope}
      \clip (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
      \path[fill=\@venn@shade,even odd rule]
        (\@venn@Ax,\@venn@Ay) circle (\@venn@radius)
        (\@venn@Bx,\@venn@By) circle (\@venn@radius);
    \end{scope}
  }%
  \def\fillBNotA{%
    \begin{scope}
      \clip (\@venn@Bx,\@venn@By) circle (\@venn@radius);
      \path[fill=\@venn@shade,even odd rule]
        (\@venn@Bx,\@venn@By) circle (\@venn@radius)
        (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
    \end{scope}
  }%
  \def\fillACapB{%
    \begin{scope}
      \clip (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
      \path[fill=\@venn@shade]
        (\@venn@Bx,\@venn@By) circle (\@venn@radius);
    \end{scope}
  }%
  \let\fillBCapA\fillACapB
  \ifdefempty{\@venn@tikzoptions}%
  {%
    \def\@venn@dobegin{\begin{tikzpicture}}%
  }%
  {%
    \edef\@venn@dobegin{\noexpand\begin{tikzpicture}%
      [\expandonce\@venn@tikzoptions]}%
  }%
  \@venn@dobegin
  \path (0,0) coordinate (venn bottom left)
        (0,\@venn@h) coordinate (venn top left)
        (\@venn@w,\@venn@h) coordinate (venn top right)
        (\@venn@w,0) coordinate (venn bottom right);
}%
{%
    \draw (venn bottom left) rectangle (\@venn@w,\@venn@h);
    \draw (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
    \draw (\@venn@Bx,\@venn@By) circle (\@venn@radius);
    \draw (\@venn@Ax,\@venn@Ay) node[above,left] (labelOnlyA)
       {\@venn@label@OnlyA};
    \draw (\@venn@Bx,\@venn@By) node[above,right] (labelOnlyB)
       {\@venn@label@OnlyB};
    \draw (\@venn@vgap,\@venn@hgap) node (labelNotAB) {\@venn@label@NotAB};
    \draw (\@venn@Ax,\@venn@Ay+\@venn@radius)
      node[below] (labelA) {\@venn@label@A};
    \draw (\@venn@Bx,\@venn@By+\@venn@radius)
      node[below] (labelB) {\@venn@label@B};
    \draw (0.5*\@venn@w,0.5*\@venn@h) node (labelAB) {\@venn@label@AB};
    \@postvennhook
  \end{tikzpicture}
}
\endinput
%%
%% End of file `venndiagram.sty'.
