答案1
draw
您可以使用和参数为圆形和矩形添加一些选项到原始代码中fill
。可以使用包即时修改代码xpatch
,类似于维恩图轮廓。
然后,您可以将这些参数中使用的命令设置为与要绘制的图表相对应的值。使用draw=none
和空标签可以从图表中删除一个圆圈,fill=white
如果矩形填充了 ,则使圆圈可见fill=lightgray
。要恢复绘制“正常”图表,您需要将宏重置为默认值。
请注意,#6 不需要任何修改,这可以通过将提供的键设置overlap
为负值来完成。
梅威瑟:
\documentclass{article}
\usepackage{venndiagram}
\usepackage{xpatch}
\def\framefill{none}
\def\afill{none}
\def\bfill{none}
\def\adraw{black}
\def\bdraw{black}
\makeatletter
% patch drawing of A and B
\xpatchcmd{\endvenndiagram2sets}
{%
\draw (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
\draw (\@venn@Bx,\@venn@By) circle (\@venn@radius);
}
{
\draw [draw=\adraw, fill=\afill] (\@venn@Ax,\@venn@Ay) circle (\@venn@radius);
\draw [draw=\bdraw, fill=\bfill] (\@venn@Bx,\@venn@By) circle (\@venn@radius);
}
{\typeout{patch ok}}{\typeout{patch failed}}
% patch frame
\xpatchcmd{\endvenndiagram2sets}
{\draw (venn bottom left) rectangle (\@venn@w,\@venn@h);}
{\draw [fill=\framefill] (venn bottom left) rectangle (\@venn@w,\@venn@h);}
{\typeout{patch ok}}{\typeout{patch failed}}
\makeatother
\begin{document}
\begin{venndiagram2sets}
\fillA \fillB
\end{venndiagram2sets}
\begin{venndiagram2sets}
\fillACapB
\end{venndiagram2sets}
\begin{venndiagram2sets}[overlap=-0.75cm]
\fillA \fillB
\end{venndiagram2sets}
\def\bdraw{none}
\begin{venndiagram2sets}[labelB={}]
\fillA
\end{venndiagram2sets}
\def\framefill{lightgray}
\def\afill{white}
\begin{venndiagram2sets}[labelB={$A^c$}]
\end{venndiagram2sets}
\def\afill{none}
\def\adraw{none}
\begin{venndiagram2sets}[labelA={},labelB={}]
\end{venndiagram2sets}
\end{document}
结果: