For some reason, I could never get Richard Zach’s Ptolemaic Astronomy diagrams to work correctly, so I set out to write my own macros for TikZ that would allow me to draw Lewis system of sphere diagrams like these.
These aren’t perfect by any means, but they are a decent first start. As far as I can tell, they are built in a similar fashion to Zach’s. The macros are available at the end of this post. Just copy/paste them into your preamble to use.
To get a handle on the syntax, first note that you can specify coordinates in a TikZ drawing using degrees and distance from (0,0). (P.S. Make sure you enclose everything here within the \begin{tikzpicture} \end{tikzpicture} environment!) Thus, we have:
\draw[dotted] (0,0) circle (2cm); \draw (0,0) to (90:2.5); \draw (0,0) to (0:2.5); \draw (0,0) to (180:2.5); \draw (0,0) to (270:2.5); \node at (90:3) ; \node at (0:3) ; \node at (180:3) ; \node at (270:3) ;
The macro \sphere{n} draws a system of spheres with n elements. Thus, \sphere{3} produces:
The way the macros work, you always need to have \sphere{n} before any commands to draw propositions, represented by arcs that intersect the spheres. The syntax for the proposition command is \prop{x}{y}{z} where x is the degree where you want the proposition arc to start, y is the degree where you want it to end, and z is which sphere number you want it to intersect (starting with 0 for the first sphere, 1 for the next sphere, and so on). So, for instance, \prop{65}{30}{0} draws a proposition arc starting at 65 degrees, intersecting the innermost circle, to 30 degrees. Here, I also draw the degree guide-lines so you can see the relative positions of the start and end of the proposition arc:
\sphere \prop \draw (0,0) to (90:2.5); \draw (0,0) to (0:2.5); \node at (90:3) ; \node at (0:3) ;
Here is another example:
\sphere \prop \prop \prop
There is an optional argument to change the style of the proposition arcs:
\sphere \prop[dashed] \prop[thick] \prop[very thick]
You can also shade propositions that intersect. To do that, I’ve made a different macro: \propshade. This one takes 7 parameters: \propshade[color]{a}{b}{c}{d}{e}{f}{g}
color specifies the color of the shaded region; this defaults to gray if not specified.
a, b, c are the in, out, and sphere depth coordinates of the first proposition.
d, e, f are the in, out, and sphere depth coordinates of the second proposition.
g is the outermost sphere you want to shade.
Here is an example:
\sphere \propshade
And one more:
\sphere \propshade \node at (65:2) {\small{\bf A}}; \node at (40:2) {\small{\bf B}};
The macros are not super flexible, but they should give you at least a few options for drawing some decent-looking Lewis system of sphere diagrams. I hope you find them useful!
Macros
Paste this text in your preamble to get started! Note: this requires TikZ: make sure you also add \usepackage{tikz}. Happy sphering!
%Spheres \newcommand{\sphere}[1]{ \foreach \x in {0,1,...,#1} \draw[dotted] (0,0) circle (\x*.5 cm); \def\sp{#1} } %Proposition \newcommand{\prop}[4][-]{ \pgfmathsetmacro\mytemp{((\sp - (#4/2) - 2)*4)/10} \draw[#1] (#2:\sp-1) .. controls ({(#2 + #3)/2}: #4/2 - .2 - \mytemp ) .. (#3:\sp-1); } %Intersective propositions \newcommand{\propshade}[8][black!20!white]{ \pgfmathsetmacro\mytemp{((\sp - (#4/2) - 2)*4)/10} \pgfmathsetmacro\mytemps{((\sp - (#7/2) - 2)*4)/10} \begin{scope} \clip (0,0) circle (#8cm); \clip (#2:\sp-1) .. controls ({(#2 + #3)/2}: #4/2 - .2 - \mytemp ) .. (#3:\sp-1); \clip (#5:\sp-1) .. controls ({(#5 + #6)/2}: #7/2 - .2 - \mytemps ) .. (#6:\sp-1); \fill[#1] (-\sp,-\sp) rectangle (\sp,\sp); \end{scope} \draw (#2:\sp-1) .. controls ({(#2 + #3)/2}: #4/2 - .2 - \mytemp ) .. (#3:\sp-1); \draw (#5:\sp-1) .. controls ({(#5 + #6)/2}: #7/2 - .2 - \mytemps ) .. (#6:\sp-1); }