I would like to draw six figures in a single page, in order to explain inclusion and intersection of sets.
I thought of 3 rows, 2 figures per each row. I'm trying the following way:
\documentclass{preamble}
\begin{document}
\pagestyle{empty}
\newcommand{\circumference}[3]{(#1,#2) circle (#3cm)}
\begin{table}[h] \centering
\begin{tabular}{cc}
\begin{tikzpicture}
\draw \circumference{0}{0}{1.5} node [below left]{$A$};
\draw \circumference{0}{0}{3} node [above right] at (2.1,2.4){$B$};
\draw node at (0,-4) {$A \contained B \equiv \forall x [A(x) \to B(x)]$};
\end{tikzpicture}
&
\begin{tikzpicture}
\draw \circumference{7}{-1.5}{1.5} node [left] {$A$};
\draw \circumference{9}{-1.5}{1.5} node [right] {$B$};
\draw [fill] \circumference{8}{-1.5}{0.025};
\draw node at (8,-4) {$A \between B \equiv \exists x [A(x) \land B(x)]$};
\end{tikzpicture}
\\
\begin{tikzpicture}
\draw \circumference{0}{-1}{1.5} node [left] {$A$};
\draw \circumference{2}{-1}{1.5} node [right] {$B$};
\draw \circumference{1}{-1}{2};
\draw node at (1,-4) {$A \cap B \contained C \equiv \forall x [A(x) \land B(x) \to C(x)]$};
\end{tikzpicture}
&
$ \forall x [A(x) \lor B(x) \contained C(x)]$
\end{tabular}
\end{table}
\end{document}
Here I haven't completed on purpose, for I'd like to know if this is the best way to do it. Shall I use other environments or treat diagrams as figures, so that I can label them with their corrispondent formula? Also, are there more elegant ways for what I'm doing?
Thanks. Any suggestion will be useful.
EDIT I made the following changes:
\documentclass{preamble}
\begin{document}
\pagestyle{empty}
\def\radius{1.5}
\newcommand{\ellipse}[4]{(#1,#2) ellipse (#3cm and #4cm)}
\newcommand{\circumference}[3]{(#1,#2) circle (#3cm)}
\begin{figure}[h] \centering \captionsetup[subfigure]{labelformat=empty}
\begin{tabular}{cc}
\subfloat[{$A \subseteq B \equiv \forall x [A(x) \to B(x)]$}]{\begin{tikzpicture}
\draw \circumference{0}{0}{\radius} node at (45:2) {$A$};
\draw \ellipse{0}{0}{3}{2} node at (45:2.8) {$B$};
\end{tikzpicture}
}
&
\subfloat[{$A \between B \equiv \exists x [A(x) \land B(x)]$}]{
\begin{tikzpicture}
\draw \circumference{-1}{0}{\radius} node at (150:2.7) {$A$};
\draw \circumference{1}{0}{\radius} node at (30:2.7) {$B$};
\draw [fill] \circumference{0}{0}{0.025};
\end{tikzpicture}
}
\\
\subfloat[{$A \cap B \subseteq C \equiv \forall x [A(x) \land B(x) \to C(x)]$}]{
\begin{tikzpicture}
\draw \circumference{-1}{0}{\radius} node at (150:2.7) {$A$};
\draw \circumference{1}{0}{\radius} node at (30:2.7) {$B$};
\draw \ellipse{0}{0}{1}{2} node at (63:2.1) {$C$};
\end{tikzpicture}
}
&
\subfloat[{$ A \cup B \subseteq C \equiv \forall x [A(x) \lor B(x) \to C(x)]$}]{
\begin{tikzpicture}
\draw \circumference{-1}{0}{\radius} node at (150:2.6) {$A$};
\draw \circumference{1}{0}{\radius} node at (30:2.6) {$B$};
\draw \ellipse{0}{0}{3}{2.5} node at (63:2.8) {$C$};
\end{tikzpicture}
}
\\
\subfloat[{$ A \subseteq B \cup C \equiv \forall x [A(x) \to B(x) \lor C(x)] $}]{
\begin{tikzpicture}
\draw \circumference{-1}{0}{\radius} node at (150:2.7) {$B$};
\draw \circumference{1}{0}{\radius} node at (30:2.7) {$C$};
\draw \ellipse{0}{0}{1.5}{0.8} node at (45:1.4) {$A$};
\end{tikzpicture}
}
&
\subfloat[{$ A \subseteq B \cap C \equiv \forall x [A(x) \to B(x) \land C(x)]$}]{
\begin{tikzpicture}
\draw \circumference{-1}{0}{\radius} node at (150:2.7) {$B$};
\draw \circumference{1}{0}{\radius} node at (30:2.7) {$C$};
\draw \ellipse{0}{0}{0.35}{0.65} node at (92:0.835) {$A$};
\end{tikzpicture}
}
\end{tabular}
\end{figure}
\end{document}
I'm wondering if there is any optimal solution for the following issues:
I'd like to label sets with letters A,B,C outside circles and ellipse automatically, with a suitable distance from the border of a set.
The ellipses are now slightly different. Is there any way to fix them?
Are my newcommands
\circumference
and\ellipse
actually useful? Is there any better option?
In summary, I think this is not the right way to write a code. Can you help me?
I tried definying commands such as
\def\firstcircle{(0,0) circle (1.5cm)}
\def\secondcircle{(0:2cm) circle (1.5cm)}
or
% some coordinates for the center of the circles
\coordinate (ceni);
\coordinate[xshift=\radius] (cenii);
% the circles
\draw (ceni) circle (\radius);
\draw (cenii) circle (\radius);
but I really can't come up with anything. Also, I can't find any documentation about (ceni)
. What is it for?
Where is it best to put the coordinate (0,0)
?
Finally, I can I copy-paste easily my code, so that I don't have to add 4 spaces " " to visualize it?
{}
button or the key combination Ctrl-K (for Kode...)