summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/spectralsequences/examples
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2017-06-19 21:07:40 +0000
committerKarl Berry <karl@freefriends.org>2017-06-19 21:07:40 +0000
commit787b1d312f205766480ce986a9f98548cc396dae (patch)
treea01010a46833874f9247534568d49f35446a3cc7 /Master/texmf-dist/doc/latex/spectralsequences/examples
parent24274bfce4fb35c537447dace80be3d48d7c250b (diff)
spectralsequences (19jun17)
git-svn-id: svn://tug.org/texlive/trunk@44639 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/spectralsequences/examples')
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_A1_May_SS.pdfbin0 -> 94186 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_A1_May_SS.tex82
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_EO2_3.pdfbin0 -> 119695 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_EO2_3.tex74
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_KF3n.pdfbin0 -> 99030 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_KF3n.tex330
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_KRHFPSS.pdfbin0 -> 41807 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_KUHFPSS.pdfbin0 -> 41820 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_KUHFPSS.tex92
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_KZ3.pdfbin0 -> 75306 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_KZ3.tex139
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_anss3.pdfbin0 -> 48235 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_anss3.tex88
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_ass.pdfbin0 -> 436693 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_ass.tex359
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_duggarKRAHSS.pdfbin0 -> 30637 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_duggarKRAHSS.tex79
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_endofVFoS.pdfbin0 -> 165263 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_endofVFoS.tex139
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_hatcher.pdfbin0 -> 26910 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_hatcher.tex126
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_mayss.pdfbin0 -> 70950 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_mayss.tex129
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_tmfass.pdfbin0 -> 476705 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_tmfass.tex292
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_tmfmayss.pdfbin0 -> 265526 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/example_tmfmayss.tex242
27 files changed, 2171 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_A1_May_SS.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_A1_May_SS.pdf
new file mode 100644
index 00000000000..9367b1ce253
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_A1_May_SS.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_A1_May_SS.tex b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_A1_May_SS.tex
new file mode 100644
index 00000000000..7d1ab32c7f2
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_A1_May_SS.tex
@@ -0,0 +1,82 @@
+%%
+%% Package: spectralsequences.sty version 1.0
+%% Author: Hood Chatham
+%% Email: hood@mit.edu
+%% Date: 2017-06-18
+%% License: Latex Project Public License
+%%
+%% File: example_bo_May_SS.tex
+%%
+%% Draws the May spectral sequence computing Ext_{A(1)} ( F_2, F_2 ), which by a change of rings and a simple argument that the ASS has to collapse,
+%% is telling us pi_* bo. See the Green Book for reference.
+%% The main purpose of this example from my perspective is to illustrate the utility of class "tags".
+%%
+
+
+\documentclass{article}
+\usepackage{spectralsequences}
+\NewSseqGroup\tower {} {
+ \class(0,0)
+ \foreach\i in {1,...,11}{
+ \class(0,\i)
+ \structline(0,\i-1,-1)(0,\i,-1)
+ }
+}
+\NewSseqGroup\hvee {} {
+ \tower(0,0)
+ \foreach\i in {1,...,11}{
+ \class(\i,\i)
+ \structline(\i-1,\i-1,-1)(\i,\i,-1)
+ }
+}
+
+\begin{document}
+\begin{sseqdata}[
+ name=A1 May,
+ x range={0}{10}, y range={0}{10},
+ degree={-1}{1},
+ classes={fill, tooltip = {(\xcoord,\ycoord)}},
+ class labels={below=3pt},
+ run off differentials= ->,
+ no orphan edges,
+]
+\foreach\i in {0,1,2}{
+ \begin{scope}[xshift=4*\i,yshift=2*\i,tag prefix=\i.]
+ \hvee[tag=id](0,0)
+ \hvee[tag=h0h1](1,2)
+ \hvee[tag=h20](2,1)
+ \foreach\j in {1,...,10}{
+ \d1(2,\j,h20,h0h1)
+ }
+ \foreach\j in {1,...,10}{
+ \d1(2+\j,1+\j,h20,h0h1)
+ }
+ \end{scope}
+}
+
+
+\foreach\i in {0,...,7}{
+ \d2(4+\i,2+\i,1.id,0.id)
+}
+\class(12,6)
+\d2(12,6,,1)
+
+%\classoptions["h_0"](0,1)
+\classoptions["h_1"](1,1)
+\classoptions["h_{20}"](2,1)
+\classoptions["h_{20}^2"](4,2)
+\classoptions["h_{20}^3"](6,3)
+\classoptions["h_{20}^4"](8,4)
+\classoptions["h_{20}^5"](10,5)
+
+\doptions[shorten >=3pt]1(10,10,2.h20,2.h0h1)
+\end{sseqdata}
+
+\printpage[name=A1 May,page=1]
+\newpage
+\printpage[name=A1 May,page=2]
+\newpage
+\begin{sseqpage}[name=A1 May,page=3]
+\classoptions["h_0h_{20}^2"](4,3,1.id)
+\end{sseqpage}
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_EO2_3.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_EO2_3.pdf
new file mode 100644
index 00000000000..8b5dc4f6293
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_EO2_3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_EO2_3.tex b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_EO2_3.tex
new file mode 100644
index 00000000000..c4a5f3650e2
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_EO2_3.tex
@@ -0,0 +1,74 @@
+%%
+%% Package: spectralsequences.sty version 1.0
+%% Author: Hood Chatham
+%% Email: hood@mit.edu
+%% Date: 2017-06-18
+%% License: Latex Project Public License
+%%
+%% File: example_EO2_3.tex
+%%
+%% This is the homotopy fixed point spectral sequence for EO_2 at the prime 3. The maximal finite subgroup of the Morava stabilizer for E_{p-1} is
+%% of size 2p(p-1)^2 = 24, and so there is a norm element v in degree 24. There's also a bunch of trace classes on the zero line, but the trace map
+%% E_* --> H^*( G ; E_* ) is induced by the trace map E_n --> EO_n, so all of these classes are permanent cycles. They are hard to compute and we don't draw them.
+%% We also have classes \alpha and \beta coming from the stabilizer action, which are the images of \alpha_1 and \beta_1 in the ANSS.
+%% By looking at cobar representatives, we can see that v*\beta_1 is the image of \beta_{3/3}.
+%% Thus, the Toda differential in the ANSS d_3(\beta_{3/3}) = \alpha \beta^3 forces also that d_3(v) = \alpha \beta^2. Likewise, the Toda "Kudo" differential
+%% d_9( \alpha \beta_{3/3}^2 ) = \beta^7 gives us upon dividing by \beta twice that d_9(\alpha v^2) = \beta^5. At this point, there are no possible differentials.
+%% We see that v^3 survives so EO_n* is 72 = 2p^2(p-1)^2 periodic. The picture is exactly the same at other odd primes. At 2, this degenerates to the
+%% HFPSS for KO = KU^{hC_2} (see example_KUHFPSS).
+%%
+
+\documentclass{article}
+\usepackage{spectralsequences}
+\usepackage[landscape,margin=0cm,top=2cm]{geometry}
+
+\begin{document}
+\begin{sseqdata}[name=EO(2),Adams grading,
+ y range={0}{14},x range={0}{160},
+ xscale=0.15, x tick step=5,
+ classes={fill, tooltip={(\xcoord,\ycoord)}}
+]
+\foreach \v in {0,...,8}{
+ \foreach \b in {0,...,11}{
+ \foreach \a in {0,1}{
+ \class(3*\a + 10*\b+24*\v,\a+2*\b)
+ \ifnum\b>0\relax
+ \structline(3*\a+10*\b-10+24*\v,\a+2*\b-2) (3*\a + 10*\b+24*\v,\a+2*\b)
+ \fi
+ }
+ \structline(10*\b+24*\v,2*\b)(3 + 10*\b + 24*\v,2*\b+1)
+ \ifnum \v = \numexpr\v/3*3\relax
+
+ \else
+ \ifnum\b<9\relax
+ \d5(10*\b+24*\v,2*\b)
+ \fi
+ \fi
+ }
+}
+
+% v^2ab^2 is in degree 2*24 + 3 + 2*10 = 71, 5
+% b^{pn+1} = b^{7} is in degree 7*10 = 70,14
+\foreach \v in {2,5}{
+ \foreach \b in {0,...,6}{
+ \d9(\v*24 + 3 +10*\b,1+2*\b)
+ }
+}
+\end{sseqdata}
+\printpage[name=EO(2),page=0]
+\newpage
+\printpage[name=EO(2),page=5]
+\newpage
+\printpage[name=EO(2),page=9]
+\newpage
+\begin{sseqpage}[name=EO(2),page=10]
+\classoptions["a" left](3,1)
+\classoptions["b" right](10,2)
+\classoptions["ab" left](13,3)
+\classoptions["b^2" right](20,4)
+\classoptions["b^3" right](30,6)
+\classoptions["b^4" right](40,8)
+
+\classoptions["v^3" right](72,0)
+\end{sseqpage}
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_KF3n.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_KF3n.pdf
new file mode 100644
index 00000000000..7535a796aa9
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_KF3n.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_KF3n.tex b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_KF3n.tex
new file mode 100644
index 00000000000..dad6f608b58
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_KF3n.tex
@@ -0,0 +1,330 @@
+%%
+%% Package: spectralsequences.sty version 1.0
+%% Author: Hood Chatham
+%% Email: hood@mit.edu
+%% Date: 2017-06-18
+%% License: Latex Project Public License
+%%
+%% File: example_KF3n.tex
+%%
+%% This is a computation of the Z_3 cohomology of K(F_3,n). This was part of a way-too-hard problem on Haynes Algebraic Topology II problem set which asked to compute
+%% the smallest k>0 such that H_{n+k}(K(--,n);Z_p) : Ab --> Ab is not the zero functor and to compute what functor it is. One of the main ideas is to use the Bockstein
+%% spectral sequence, because it handles the badness of integral Kunneth for us too.
+%%
+
+\documentclass{article}
+\usepackage[margin=0.2in,top=0.4in,landscape]{geometry}
+\usepackage{spectralsequences}
+\usepackage{amssymb}
+\def\Z{\mathbb{Z}}
+\begin{document}
+\sseqset{
+ cohomological Serre grading,
+ title={Page \page},
+ class placement transform={scale=3, rotate=90},
+ class pattern=linear,
+ classes={draw=none},
+ class label handler = {\sseqnormalizemonomial{#1}},
+ bocksteinSS/.style={
+ page=0, y range={-1}{0},
+ no differentials, no labels, no y ticks, no title,
+ yscale=1.5, x axis extend end=40pt, y axis extend end = 40pt, x axis gap =50pt,
+ class label handler = {},
+ }
+ %class labels=above,
+}
+
+\begin{sseqdata}[name=K(Z/3;2),
+ x range={0}{8}, xscale=2.2, yscale=1.5,
+ x label={$H^*(K(\Z/3,2),\Z/3)$},
+ y label={$H^*(K(\Z/3,1),\Z/3)$},
+ right clip padding=20pt, x axis gap=20pt,
+]
+\foreach \x/\xlabel in
+ { 0/1, 2/\iota_2, 3/\beta\iota_2, 4/\iota_2^2, 5/\iota_2\beta\iota_2, 6/\iota_2^3,
+ 7/\iota_2^2\beta\iota_2, 7/P^1\beta\iota_2, 8/\iota_2^4, 8/\beta P^1\beta\iota_2 }
+\foreach \y/\ylabel in
+ { 0/1, 1/\alpha, 2/x, 3/\alpha x, 4/x^2, 5/\alpha x^2, 6/x^3} {
+ \class["\ylabel\xlabel"](\x,\y)
+}
+
+\class(9,0)\class(9,0)
+\class(9,1)
+\class(9,2)
+\class(9,3)
+\class(9,4)
+\class(9,5)
+
+\class(10,0)\class(10,0)\class(10,0)
+\class(10,2)\class(10,2)
+\class(10,4)\class(10,4)
+
+\class(11,0)\class(11,0)
+\class(11,2)
+
+\class(12,0)
+\class(13,0)
+\class(14,0)
+\class(15,0)
+%\class["(\beta\iota_2)^2"](6,0)
+
+
+\d2(0,1) %d2(a)=i
+
+
+
+\d3(0,2) %d3(x) = b(i)
+\d2(0,3) % d2(ax) = ix
+\d3(0,4) % d2(x^2) = xb(i)
+\d2(0,5) % d2(ax^2) = ix^2
+%\d7
+
+
+\d2(2,1) % d2(ai) = i^2
+\d2(2,3) % d2(axi) = xi^2
+\d2(2,5) % d2(ax^2i)=x^2i^2)
+
+\d2(3,1) % d2(abi)=ib(i)
+\d2(3,3)
+\d2(3,5)
+
+\d2(4,1) % d2(ai^2)=i^3
+\d2(4,3)
+\d2(4,5)
+
+\d2(5,1,,1) %d2(ai_2bi_2) = i_2^2 bi_2
+\d2(5,3,,1)
+\d2(5,5,,1)
+
+\d2(6,1,,1) %d2(ai_2^3) = i_2^4
+\d2(6,3,,1)
+\d2(6,5,,1)
+
+\d2(7,1,1) % d2(ai_2^2bi_2) = i_2^3 bi_2
+\d2(7,3,1)
+\d2(7,5,1)
+
+\d2(7,1,2) % d2(aP^1bi_2) = i_2 P^1bi_2
+\d2(7,3,2)
+\d2(7,5,2)
+
+\d3(7,2,2) % d3(x P^1bi_2) = bi_2 P^1bi_2
+\d3(7,4,2)
+
+\d2(8,1,1,2) % d2(a i_2^4) = i_2^5
+\d2(8,3,1,2)
+\d2(8,5,1,2)
+
+\d2(8,1,2,2) % d2(a bP^1bi_2) = i_2 bP^1bi_2
+\d2(8,3,2,2)
+\d2(8,5,2,2)
+
+\d3(8,2,2) % d3(x bP^1bi_2) = bi_2 bP^1bi_2
+\d3(8,4,2)
+
+
+\d5(3,4,,2) % d5(x^2i_2) = bP^1bi_2 -- Kudo differential
+
+\d7(0,6,,2) % d7(x^3) = P^1bi_2
+\d7(2,6,,2)
+\d7(3,6,,3)
+\d7(4,6,,2)
+\d7(5,6)
+\d7(6,6)
+\d7(7,6,1)
+\d7(7,6,2)
+\d7(8,6,1)
+\d7(8,6,2)
+
+
+\end{sseqdata}
+
+\printpage[name=K(Z/3;2),page=2]
+\newpage
+\printpage[name=K(Z/3;2),page=3]
+\newpage
+\printpage[name=K(Z/3;2),page=5]
+\newpage
+\printpage[name=K(Z/3;2),page=6]
+\newpage
+\printpage[name=K(Z/3;2),page=7]
+\newpage
+
+\begin{sseqpage}[
+ name=K(Z/3;2), bocksteinSS,
+ x axis extend end = 30pt, y axis gap=30pt,
+]
+\begin{scope}[background]
+\node[anchor=west] at (-2,0) { H^*(K(\Z/3,2),\Z/3)};
+\node[anchor=west] at (-2,-1) { H^*(K(\Z/3,2),\Z)};
+\end{scope}
+
+\draw[->] (2,0) to[bend left=30, "\beta^1"] (3,0);
+\draw[->] (4,0) to[bend left=30, "\beta^1"{pos = 0.55}] (5,0);
+\draw[->] (6,0) to[bend right=30, "\beta^2"'] (7,0,1);
+\draw[->] (7,0,2) to[bend left=30, "\beta^1"] (8,0,2);
+\draw[->] (8,0,1) to[bend right=30, "\beta^1"' {pos = 0.46}] (9,0);
+
+\class["\Z\{1\}"](0,-1)
+\class["\Z/3\{\beta\iota_3\}"](2,-1)
+\class["\Z/3\{\beta\iota_2^2\}"](5,-1)
+\class["\Z/9\{\beta\iota_2^3\}"](7,-1)
+\class["\Z/3\{\beta P^1\iota_2\}"](8,-1)
+\end{sseqpage}
+
+
+\newpage
+\begin{sseqdata}[name=K(Z/3;3),xscale=2.2,yscale=1.7,y axis gap=40pt,x axis gap=30pt, x range={0}{9},
+ x label={$H^*(K(\Z/3,2),\Z/3)$},
+ y label={$H^*(K(\Z/3,1),\Z/3)$}
+]
+
+\foreach \x/\ymax/\xlabel in { 0/6/1, 3/6/\iota_3, 4/3/{{\beta\iota_3}} }
+\foreach \y/\ylabel in { 0/1, 2/\iota_2, 3/{{\beta\iota_2}}, 4/\iota_2^2, 5/\iota_2{\beta\iota_2}, 6/\iota_2^3 } {
+ \class["\ylabel\xlabel"](\x,\y)
+}
+
+\sseqset{class label handler = {}}
+
+\class["P^1\beta\iota_2"](0,7)
+\class["\iota_2^2\beta\iota_2"](0,7)
+\class["\beta P^1\beta\iota_2"](0,8)
+\class["\iota_2^4"](0,8)
+
+
+\class["P^1\iota_3"](7,0)
+\class["\iota_3\beta\iota_3"](7,0)
+\class["\beta P^1\iota_3"](8,0)
+\class["(\beta\iota_3)^2"](8,0)
+\class["P^1\beta\iota_3"](8,0)
+\class["\beta P^1\beta\iota_3"](9,0)
+
+
+\d3(0,2)
+\d4(0,3)
+\d3(0,4)
+\d3(0,5)
+\d7(0,6,,1)
+\d3(0,7,2)
+\d8(0,7,1,3)
+\d3(0,8,2)
+\d9(0,8,1)
+\d5(3,4,,1)
+
+\d3(4,2,,2)
+\d4(4,3,,2)
+\end{sseqdata}
+
+\printpage[name=K(Z/3;3),page=3]
+\newpage
+\printpage[name=K(Z/3;3),page=4]
+\newpage
+\printpage[name=K(Z/3;3),page=5]
+\newpage
+\printpage[name=K(Z/3;3),page=7]
+\newpage
+\printpage[name=K(Z/3;3),page=9]
+\newpage
+
+\begin{sseqpage}[ name=K(Z/3;3), bocksteinSS ]
+\begin{scope}[background]
+\node[anchor=west] at (-2.2,0) { H^*(K(\Z/3,3),\Z/3)};
+\node[anchor=west] at (-2.2,-1) { H^*(K(\Z/3,3),\Z)};
+\end{scope}
+
+\draw[->] (3,0) to[bend left=30, "\beta^1"] (4,0);
+\draw[->] (7,0,1) to[bend right=30, "\beta^1"' {pos=0.6}] (8,0,1);
+\draw[->] (7,0,2) to[bend left=30, "\beta^1" {pos=0.43}] (8,0,2);
+\draw[->] (8,0,3) to[bend left=30, "\beta^1"{pos=0.37}] (9,0);
+
+\class["\Z\{1\}"](0,-1)
+\class["\Z/3\{\beta\iota_3\}"](4,-1)
+\class["\Z/3\{\beta P^1\iota_3\}"](8,-1)
+\class["\Z/3\{\beta(\iota_3\beta\iota_3)\}"](8,-1)
+\class["\Z/3\{\beta P^1\beta\iota_3\}"](9,-1)
+\end{sseqpage}
+
+
+
+\begin{sseqdata}[name=K(Z/3;4),
+ xscale=2,yscale=1.5,y axis gap=20pt,x axis gap=30pt, x range={0}{10},
+ x label = {$H^*(K(\Z/3,3),\Z/3)$},
+ y label = {$H^*(K(\Z/3,4),\Z/3)$},
+ class label handler = {}
+]
+
+\class["1"](0,0)
+\class["\iota_3"](0,3)
+\class["\beta\iota_3"](0,4)
+\class["P^1\iota_3"](0,7)
+\class["\beta P^1\iota_3"](0,8)
+\class["\iota_3\beta\iota_3"](0,7)
+\class["(\beta\iota_3)^2"](0,8)
+\class["P^1\beta\iota_3"](0,8)
+\class["\beta P^1\beta\iota_3"](0,9)
+
+
+\class["\iota_4"](4,0)
+\class["\iota_3\iota_4"](4,3)
+\class["\beta\iota_3\iota_4"](4,4)
+
+\class["\beta\iota_4"](5,0)
+\class["\iota_3\beta\iota_4"](5,3)
+\class["\beta\iota_3\beta\iota_4"](5,4)
+
+\class["\iota_4^2"](8,0)
+\class["P^1\iota_4"](8,0)
+
+\class["\iota_4 \beta\iota_4"](9,0)
+\class["P^1\beta\iota_4"](9,0)
+\class["\beta P^1\iota_4"](9,0)
+
+\class["\beta P^1\beta\iota_4"](10,0)
+
+\d4(0,3) % d4(i_3) = i_4
+\d4(0,7,2)
+\d4(4,3,,1)
+\d4(5,3,,1)
+
+\d5(0,4)
+
+\d8(0,7,1,2)
+
+\d9(0,8,1,2)
+\d5(0,8,2)
+\d9(0,8,3,3)
+\d10(0,9)
+
+%\d
+\end{sseqdata}
+
+\printpage[name=K(Z/3;4),page=4]
+\newpage
+\printpage[name=K(Z/3;4),page=5]
+\newpage
+\printpage[name=K(Z/3;4),page=8]
+\newpage
+\printpage[name=K(Z/3;4),page=9]
+\newpage
+\printpage[name=K(Z/3;4),page=10]
+\newpage
+
+\begin{sseqpage}[ name=K(Z/3;4), bocksteinSS, yscale=1.3 ]
+\begin{scope}[background]
+\node[anchor=west] at (-2.2,0) { H^*(K(\Z/3,4),\Z/3)};
+\node[anchor=west] at (-2.2,-1) { H^*(K(\Z/3,4),\Z)};
+\end{scope}
+
+\draw[->] (4,0) to[bend left=30, "\beta^1"] (5,0);
+\draw[->] (8,0,1) to[bend right=30, "\beta^1"' {pos=0.6}] (9,0,1);
+\draw[->] (8,0,2) to[bend left=30, "\beta^1" {pos=0.6}] (9,0,3);
+\draw[->] (9,0,2) to[ "\beta^1"] (10,0);
+
+\class["\Z\{1\}"](0,-1)
+\class["\Z/3\{\beta\iota_4\}"](5,-1)
+\class["\Z/3\{\beta P^1\iota_4\}"](9,-1)
+\class["\Z/3\{\beta(\iota_4^2)\}"](9,-1)
+\class["\Z/3\{\beta P^1\beta\iota_4\}"](10,-1)
+\end{sseqpage}
+
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_KRHFPSS.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_KRHFPSS.pdf
new file mode 100644
index 00000000000..3aff1b1fe8b
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_KRHFPSS.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_KUHFPSS.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_KUHFPSS.pdf
new file mode 100644
index 00000000000..c1d593951c7
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_KUHFPSS.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_KUHFPSS.tex b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_KUHFPSS.tex
new file mode 100644
index 00000000000..7207b38a986
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_KUHFPSS.tex
@@ -0,0 +1,92 @@
+%%
+%% Package: spectralsequences.sty version 1.0
+%% Author: Hood Chatham
+%% Email: hood@mit.edu
+%% Date: 2017-06-18
+%% License: Latex Project Public License
+%%
+%% File: example_KUHFPSS.tex
+%%
+%% I think this is one of Eric Peterson's favorite spectral sequences, and his enthusiasm for it has rubbed off on me a bit.
+%% Here our group is C_2 which acts on the periodicity element by -1, so again we have a norm element v in degree 2|G| = 4.
+%% There are easier ways to understand this, but I explained the EO_3 one in terms of the comparison map from the ANSS,
+%% and that's interesting here too. In the ANSS at 2, there is a differential d3(\alpha_3) = \alpha_1^4. Here a cobar calculation
+%% shows that \alpha v = \alpha_3, so dividing the differential by \alpha gives d3(v) = \alpha_1^3. Now there's no Kudo differential
+%% because the prime is 2, and the spectral sequence immediately collapses.
+%%
+%% Second, a demonstration of the falsehood of ku^{hC_2} = ko -- ku^{hC_2} has an extra generator as a ring, which is in degree -4.
+%% In particular, it's not even connective.
+%%
+
+\documentclass{article}
+\usepackage[landscape,margin=2cm]{geometry}
+\usepackage{spectralsequences}
+\begin{document}
+\sseqset{
+ Z2class/.sseq style={circle,inner sep=0.3ex,fill=black},
+ Zclass/.sseq style={fill=none,draw,inner sep=0.6ex},
+ 2Zclass/.sseq style={fill=none,rectangle,draw,inner sep=0.6ex,outer sep=0.5ex}
+}
+\begin{sseqdata}[
+ name=KRHFPSS,
+ x range={-12}{14},
+ y range={0}{10},
+ y axis style=center,
+ y axis gap=0.425cm,
+ tick step=4,
+ classes=Z2class,
+ differentials=->,
+ degree={-1}{#1-1},
+ scale=0.85,
+ right clip padding=0.1cm,
+ top clip padding=0.05cm,
+ x axis extend start=0cm,
+ x axis extend end=0.33cm,
+ y axis extend end=0.3cm,
+]
+
+\draw[background,xshift=-0.5cm,yshift=-0.51cm,step=1cm,gray,very thin] (\xmin+0.01,\ymin+0.01) grid (\xmax+0.9,\ymax+0.9);
+
+\pgfmathsetmacro\xitstart{int(int(\xmin/8)*8-16)}
+\pgfmathsetmacro\xitgap{int(\xitstart+4)}
+\pgfmathsetmacro\xitend{int(\xmax+2)}
+\pgfmathsetmacro\xmaxpp{int(\xmax+2)}
+
+\foreach \x in {\xitstart,\xitgap,...,\xitend} {
+ \class[Zclass](\x,0)
+ \foreach \z in {0,...,\xmaxpp} {
+ \class(\x+\z+1,\z+1)
+ \structline(\x+\z,\z)(\x+\z+1,\z+1)
+ }
+}
+
+\pgfmathsetmacro\xitstart{int(\xitgap)}
+\pgfmathsetmacro\xitgap{int(\xitstart+8)}
+
+\foreach \x in {\xitstart,\xitgap,...,\xitend} {
+ \foreach\z in {0,...,\xmax}{
+ \d4(\x+\z,\z)
+ }
+ \replaceclass[2Zclass](\x,0)
+}
+\end{sseqdata}
+\printpage[name=KRHFPSS,page=0]
+\newpage
+\printpage[name=KRHFPSS,page=5]
+
+
+\newpage
+\begin{sseqpage}[name=KRHFPSS,page=0,keep changes]
+\pgfmathsetmacro\antidiag{min(-\xmin,\ymax+0.8)}
+\clip[background,xshift=0.28cm,yshift=-0.4cm](-\antidiag,\antidiag)--(-1,1)--(-0.4,0)--(\xmax+2,0)--(\xmax+2,\antidiag)--cycle;
+\foreach \z in {2,6}{
+ \doptions[draw=none]4(-\z-1,\z-1)
+ \structlineoptions[draw=none](-\z-1,\z-1)(-\z,\z)
+ \structlineoptions[draw=none](-\z-3,\z+1)(-\z-2,\z+2)
+ \replaceclass(-\z-2,\z+2)
+}
+\structlineoptions[draw=none](-3,1)(-2,2)
+\end{sseqpage}
+\newpage
+\printpage[name=KRHFPSS,page=5]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_KZ3.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_KZ3.pdf
new file mode 100644
index 00000000000..d0da6d62c7e
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_KZ3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_KZ3.tex b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_KZ3.tex
new file mode 100644
index 00000000000..94cf1fb643d
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_KZ3.tex
@@ -0,0 +1,139 @@
+%%
+%% Package: spectralsequences.sty version 1.0
+%% Author: Hood Chatham
+%% Email: hood@mit.edu
+%% Date: 2017-06-18
+%% License: Latex Project Public License
+%%
+%% File: example_KZ3.tex
+%%
+%% This was one of the first spectral sequences I ever worked out (probably after the one for loops S^n), in the summer of 2013 with Kevin Donoghue.
+%%
+
+\documentclass{article}
+\usepackage[landscape,margin=0.5cm,top=2cm]{geometry}
+\usepackage[]{sseqpages}
+\usepackage{amssymb}
+\def\Z{\mathbb{Z}}
+% Last time test: 1.1 sec
+\begin{document}
+\def\column#1[#2]{\foreach \y in {0,...,6} {\class[#2](#1,2*\y)}}
+\sseqset{classes={draw=none}}
+\begin{sseqdata}[
+ name={K(Z,3)},
+ x range={0}{12},
+ y range={0}{10},
+ cohomological Serre grading,
+ differentials={->},
+ labels=below,
+ xscale=1.8,
+ y axis gap=0.7cm,
+ math nodes,
+ x axis extend end=0.8cm,
+ this page cycles=red,
+ title=\textup{Serre SS Page \page{}},
+ x label = {$H^*(K(\Z,3))$},
+ y label = {$H^*(K(\Z,2))$}
+]
+%\tracingall
+\column0["\Z\{\ifnum\y>0\relax x\ifnum\y>1\relax ^{\y}\fi\else1\fi\}"]
+%\error
+\column3["\Z\{a\ifnum\y>0x\ifnum\y>1 ^{\y}\fi\fi\}"]
+
+
+\foreach\y in {1,...,6} {\d["\cdot \y"']3(0,2*\y)}
+\replaceclass["\Z/3"](3,4)
+\replaceclass["\Z/5"](3,8)
+
+
+\column6["\Z/2"]
+\d3(3,2)
+\d3(3,6)
+\d3(3,10)
+\replaceclass["\Z/2"](3,6)
+\replaceclass["\Z/3"](3,10)
+\column8["\Z/3"]
+\d5(3,4)
+\d5(3,10)
+\column9["\Z/2"]
+\d3(6,2)
+\d3(6,6)
+\d3(6,10)
+\column10["\Z/2"]
+\d7(3,6)
+\column11["\Z/3"]
+\d3(8,2)
+\d3(8,4)
+\d3(8,8)
+\d3(8,10)
+\column12["\Z/2\oplus\Z/5"]
+\column13["\Z/2"]
+\column15["\Z/2\oplus\Z/2\oplus\Z/5"]
+\d3(9,2)
+\d3(9,6)
+\d3(9,10)
+\d3(10,2)
+\d3(10,6)
+\d3(10,10)
+\d3(10,12)
+\d3(12,2)
+\d3(12,4)
+\d3(12,6)
+\d3(12,8)
+\d3(12,10)
+\d3(12,4)
+\replaceclass["\Z/5"](12,0)
+\replaceclass["\Z/5"](12,4)
+\replaceclass["\Z/5"](12,8)
+\d9(3,8)
+
+
+\replaceclass["\Z/5"](12,10)
+\replaceclass["\Z/2"](15,0)
+\replaceclass["\Z/2\oplus\Z/2"](15,4)
+
+\d5(10,4)
+
+\class["\Z/3"](16,0)
+\class["\Z/3"](16,6)
+\d5(11,4)
+\d5(11,10)
+
+\class["\Z/2"] (17,0)
+
+\class["\Z/2"](17,8)
+
+\d5(12,12)
+
+\class["\Z/2"](19,0)
+\d9(10,8)
+
+\class["\Z/5"](23,0)
+\d11(12,10)
+
+\replaceclass["\Z/6"](16,0)
+\d13(3,12)
+
+%\replaceclass["\Z/6"](21,0)
+%\d13(8,12)
+\class["\Z/3"](24,0)
+\d13(11,12)
+\end{sseqdata}
+
+
+\printpage[name={K(Z,3)}, page=0,no differentials]
+\newpage
+\printpage[name={K(Z,3)}, page=0]
+\newpage
+\printpage[name={K(Z,3)}, page=3]
+\newpage
+\printpage[name={K(Z,3)}, page=5]
+\newpage
+\printpage[name={K(Z,3)}, page=7]
+\newpage
+\printpage[name={K(Z,3)}, page=9]
+\newpage
+\printpage[name={K(Z,3)}, page=11]
+\newpage
+\printpage[name={K(Z,3)}, page=12]
+\end{document}
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_anss3.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_anss3.pdf
new file mode 100644
index 00000000000..00050e20386
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_anss3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_anss3.tex b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_anss3.tex
new file mode 100644
index 00000000000..b3d801acf6b
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_anss3.tex
@@ -0,0 +1,88 @@
+%%
+%% Package: spectralsequences.sty version 1.0
+%% Author: Hood Chatham
+%% Email: hood@mit.edu
+%% Date: 2017-06-18
+%% License: Latex Project Public License
+%%
+%% File: example_anss3.tex
+%%
+%% Draws the Adams Novikov spectral sequence at the prime 3 through the 45 stem.
+%% In this range, all we see is the Toda differential d_{2p-1}(\beta_{p/p}) = \alpha\beta^p
+%% Thanks to Eric Peterson for contributing this diagram.
+%%
+
+\documentclass{article}
+\usepackage{spectralsequences}
+\usepackage[landscape]{geometry}
+\begin{document}
+% tower definitions
+\NewSseqCommand\alphaclass{d()}{
+ \IfNoValueTF{#1}{}{\pushstack(#1)}
+ \class(\lastx+3,\lasty+1)
+ \structline(\lastclass)(\lastclass1)
+}
+
+\NewSseqCommand\betaclass{d()}{
+ \IfNoValueTF{#1}{}{\pushstack(#1)}
+ \class(\lastx+7,\lasty+1)
+ \structline(\lastclass)(\lastclass1)
+}
+
+\begin{sseqpage}[
+ Adams grading,
+ classes = { tooltip = {(\xcoord,\ycoord)} },
+ class labels = above left,
+ label distance=3pt,
+ differentials={-{>[width=4]}, target anchor=-60},
+ y range={0}{10},
+ x range={0}{45},
+ x tick step=5,
+ xscale=0.375
+]
+\class[rectangle,fill,inner sep=3pt](0,0)
+
+\class["\alpha_1"](3,1) \structline(0,0)(3,1)
+\class["\alpha_2"](7,1)
+\class[circlen=2,"\alpha_{3/2}"](11,1)
+\class["\alpha_4"](15,1)
+\class["\alpha_5"](19,1)
+\class[circlen=2,"\alpha_{6/2}"](23,1)
+\class["\alpha_7"](27,1)
+\class["\alpha_8"](31,1)
+\class[circlen=3,"\alpha_{9/3}"](35,1)
+\class["\alpha_{10}"](39,1)
+\class["\alpha_{11}"](43,1)
+
+\class["\beta_1"](10,2) \structline(3,1)(10,2)
+\class["\beta_2"](26,2)
+\class["\beta_{3/3}" {xshift = -2pt, yshift=-2pt}](34,2)
+\class["\beta_{3/2}"](38,2)
+\class["\beta_3"](42,2)
+
+% tower off of beta_1
+\alphaclass(10,2)\betaclass
+\alphaclass\betaclass
+\alphaclass\betaclass
+\alphaclass\betaclass
+
+% tower off of beta_2
+\alphaclass(26,2)\betaclass
+\alphaclass\betaclass
+\alphaclass
+
+
+% tower off of beta_3/3
+\alphaclass(34,2)\betaclass
+\alphaclass\betaclass
+
+% tower off of beta_3
+\class[fill,circlen=2](45,3) \structline(42,2,-1)(45,3,-1)
+\betaclass
+
+% d5s
+\d5(34,2)
+\d5(44,4)
+\end{sseqpage}
+
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_ass.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_ass.pdf
new file mode 100644
index 00000000000..d5ab3fb620a
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_ass.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_ass.tex b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_ass.tex
new file mode 100644
index 00000000000..fcfca3ae84c
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_ass.tex
@@ -0,0 +1,359 @@
+%%
+%% Package: spectralsequences.sty version 1.0
+%% Author: Hood Chatham
+%% Email: hood@mit.edu
+%% Date: 2017-06-18
+%% License: Latex Project Public License
+%%
+%% File: example_ass.tex
+%%
+%% Draws the Adams Spectral Sequence at the prime 2 through the 45 stem.
+%% See pages 146 - 147 of Green book
+%% https://mathoverflow.net/questions/102316/differentials-in-the-adams-spectral-sequence-for-spheres-at-the-prime-p-2
+%% https://en.wikipedia.org/wiki/Homotopy_groups_of_spheres#Table_of_stable_homotopy_groups
+%%
+
+
+\documentclass{article}
+\usepackage[landscape,paperheight=14in,margin=0.1in]{geometry}
+\usepackage{spectralsequences}
+
+
+\begin{document}
+\NewSseqGroup\tower {m} {
+ \class(0,0)
+ \foreach \y in {2,...,#1} {
+ \class(0, \y-1)
+ \structline(0, \y-2, -1)(0, \y-1, -1)
+ }
+}
+
+\def\etaclass(#1,#2){
+ \class(#1+1,#2+1)
+ \structline(#1,#2, -1)(#1+1,#2+1, -1)
+}
+\def\etasqclass(#1,#2){
+ \class(#1+1,#2+1)
+ \class(#1+2,#2+2)
+ \structline(#1,#2, -1)(#1+1,#2+1, -1)
+ \structline(#1+1,#2+1, -1)(#1+2,#2+2, -1)
+}
+\def\etacubclass(#1,#2){
+ \class(#1+1,#2+1)
+ \class(#1+2,#2+2)
+ \class(#1+3,#2+3)
+ \structline(#1,#2, -1)(#1+1,#2+1, -1)
+ \structline(#1+1,#2+1, -1)(#1+2,#2+2, -1)
+ \structline(#1+2,#2+2, -1)(#1+3,#2+3, -1)
+}
+\def\divtwoclass[#1](#2,#3){
+ \class[#1](#2,#3-1)
+ \structline(#2,#3-1,-1)(#2,#3 ,-1)
+}
+\def\divfourclass[#1](#2,#3){
+ \class(#2,#3-1)
+ \structline(#2,#3-1,-1)(#2,#3 ,-1)
+ \class[#1](#2,#3-2)
+ \structline(#2,#3-2,-1)(#2,#3-1,-1)
+}
+\def\diveightclass[#1](#2,#3){
+ \class(#2,#3-1)
+ \structline(#2,#3-1,-1)(#2,#3 ,-1)
+ \class(#2,#3-2)
+ \structline(#2,#3-2,-1)(#2,#3-1,-1)
+ \class[#1](#2,#3-3)
+ \structline(#2,#3-3,-1)(#2,#3-2,-1)
+
+}
+\def\nuclass(#1,#2){
+ \class(#1+3,#2+1)
+ \structline(#1,#2,-1)(#1+3,#2+1,-1)
+}
+\def\nustruct(#1,#2){
+ \structline(#1,#2,-1)(#1+3,#2+1,-1)
+}
+
+\begin{sseqdata}[
+ name = S0ASS,
+ Adams grading,
+ classes=fill,
+ class labels={above left=0.2em},
+ x range={0}{45},
+ y range={0}{23},
+ xscale=0.7,
+ yscale=0.8,
+ differentials = red,
+ right clip padding = 3em,
+ classes = { tooltip = { (\xcoord,\ycoord) } },
+ grid = go
+]
+\tower(0,0){25}
+
+% multiples of eta
+\etacubclass(0,0)
+\classoptions["h_1"](1,1)
+
+% divisibilities of nu
+\divfourclass["h_2" below](3,3)
+
+\nustruct(0,0)
+
+\nuclass(3,1)
+
+
+
+\tower(7,1){4}
+%\classoptions["h_3" left](7,1)
+\etasqclass(7,1)
+\structline(6,2)(9,3)
+
+\class["c_0" above](8,3)
+\etaclass(8,3)
+
+
+
+\class["Ph_1"](9,5)
+\etasqclass(9,5)
+\divfourclass["Ph_2" below](11,7)
+
+\tower(14,2){2}
+\classoptions["h_3^2" left](14,2)
+\tower(14,4){3}
+\classoptions["d_0" left](14,4)
+
+\tower(15,1){8}
+\classoptions["h_4" left](15,1)
+\d2(15,1) % d2(h_4) = h_0h_3^2
+\d3(15,2)\d3(15,3) % d2(h_0h_4) = h_0d_0
+
+\etacubclass(15,1)
+\divfourclass[](18,4)
+\nustruct(15,1)\nustruct(15,2)\nustruct(15,3)
+
+
+\nuclass(18,2)
+
+\etacubclass(14,4)
+\diveightclass["e_0" left](17,7)
+\nustruct(14,6)\nustruct(14,5)\nustruct(14,4)
+
+\nuclass(17,5)
+\divfourclass["g" {below = 0.3em}](20,6)
+\etaclass(17,4)
+\divtwoclass["f_0" {below right=0em}](18,5)
+\etaclass(20,4)
+\nustruct(18,4)
+
+\classoptions["h_3^3" below](21,3)
+
+\d2(17,4)\d2(18,5)\d2(18,4,-1) % d2(e_0) = h1^2 d0, d2(f_0) = h0^2 e0
+\nustruct(17,4)\nuclass(20,5)
+\divtwoclass[](23,6)\nustruct(20,4)
+\nuclass(23,5)
+
+\tower(23,7){6}
+\classoptions["i" left](23,7)
+
+\class["Pc_0" {xshift=3pt}](16,7)\etaclass(16,7)
+\class["P^2c_0" {xshift=5pt,yshift=2pt}](24,11)\etaclass(24,11)
+
+\class["c_1" {above=0em}](19,3)
+\nuclass(19,3)
+
+\class["h_4c_0" below](23,4)
+\etaclass(23,4)
+
+
+\class["P^2h_1"](17,9)\etasqclass(17,9)
+\divfourclass["P^2h_2" {below=0em}](19,11)
+\nuclass(19,9)
+\divfourclass["Pd_0" left](22,10)
+\etacubclass(22,8)
+\diveightclass["Pe_0" below](25,11)
+\etaclass(25,8)\divfourclass["j" below](26,9)
+\d2(23,7)\d2(23,8) % d2(i)=h_0Pd_0
+\d2(25,8) % d2(Pe_0) = h_1^2 Pd
+\d2(26,9)\d2(26,8)\d2(26,7) % d2(j) = h_0 Pe_0
+
+\nustruct(22,10)\nustruct(22,9)\nustruct(22,8)
+
+
+\class["P^3h_1"](25,13)\etasqclass(25,13)
+\divfourclass["P^3h_2" {below=0em}](27,15)
+\nuclass(27,13)
+\divfourclass["P^2d_0" {left=0.2em}](30,14)
+\etacubclass(30,12)
+\diveightclass["P^2e_0" {below=0em}](33,15)
+\d2(33,12) % d2(P^2e_0) = h_1^2 P^2d_0
+\nustruct(30,14)\nustruct(30,13)\nustruct(30,12)
+\etaclass(33,12)
+\divfourclass["Pj" {right}](34,13)
+\d2(34,11)\d2(34,12)\d2(34,13) % d2(Pj) = h0 P^2e_0
+
+
+
+\class(28,10)\divfourclass["{Pg=d_0^2}" {below left=-0.5em}](28,10)
+\etaclass(28,8)\divfourclass["k" below](29,9)
+\d2(29,7)\d2(29,8) % d2(k) = h_0 Pg = h_0 d_0^2
+\class["r" below](30,6) \d3(30,6) % d3(r) = h0^2 k
+\tower(30,7){5}
+\classoptions["s" below](30,7)
+
+\tower(30,2){4}
+\classoptions["h_4^2" below](30,2)
+\etaclass(30,2)
+
+\tower(31,1){16}\classoptions["h_5" below](31,1)
+\d2(31,1)\d2(31,2)\d2(31,3,-1) % d2(h_5) = h_0 h_4^2
+\d3(31,4)\d3(31,5)\d3(31,6)\d3(31,7) \d3(31,8,1) % \d3(h_0^3 h_5) = s
+\replaceclass[offset={(0,0)}](31,8) % d_0e_0 + h_0^7h_5
+\structline(31,8)(31,9)
+\d4(31,8)\d4(31,9)\d4(31,10) % d4(d_0e_0 + h_0^7h_5) = P^2d_0, d4(h_0^8 h_5) = h_0 P^2d_0
+\etacubclass(31,1)
+\divfourclass[](34,4)
+\nustruct(31,3)\nustruct(31,2)\nustruct(31,1)
+\nuclass(34,2)
+
+\class["n" above](31,5)\nuclass(31,5)
+
+\class(31,10)
+\divfourclass["d_0e_0" {below right=0em,xshift=-5pt}](31,10)
+\etaclass(31,8)
+\divfourclass["l" {right=0em}](32,9)
+\d3(31,8,-1) % d3(d_0e_0) = h_0^4 s = d3(h_0^7 h_5), see replaceclass above
+
+\d2(32,7,,-1)\d2(32,8,,-1) % d2(l) = h_0 d_0 e_0
+\d4(32,9,-1) % d4(h_0^2 l) = h_1 P^2d_0
+
+\class["q"](32,6)\etaclass(32,6)
+
+\class["d_1"](32,4)\etaclass(32,4)
+\nuclass(32,4)\nuclass(35,5)
+\divtwoclass["p" above right](33,5)
+
+\class["P^3c_0"{xshift=4pt,yshift=2pt}](32,15)\etaclass(32,15)
+
+\class["P^4h_1"](33,17)\etasqclass(33,17)
+\divfourclass["P^4h_2" right](35,19)
+
+\class(34,10)
+\divfourclass["d_0g" left](34,10)
+\etaclass(34,8)
+\divfourclass["m" right](35,9)
+\d2(35,7)\d2(35,8) % d2(m) = h_0 d_0 g
+
+
+\class["t"](36,6)\etaclass(36,6)
+\nustruct(34,6)
+
+\class(36,14)
+\divfourclass["P^2g" left](36,14)
+\etaclass(36,12)
+\divfourclass["Pk" {right=0em}](37,13)
+\d2(37,11)\d2(37,12) % d_2(P^1k) = h_0 P^2g
+
+
+\tower(37,5){6}\classoptions["x"](37,5)
+
+\class["e_0g"](37,8)\etaclass(37,8)
+\diveightclass["y" right](38,9)
+\d4(37,8,-1) \d4(38,9)% d4(e_0g) = P^2g
+\d2(38,6,-1)\d2(38,7,-1)\d2(38,8,-1) % d2(y) = h_0^3x
+
+\class(38,5)
+\diveightclass["h_3h_5" below](38,5)
+\etasqclass(38,2)
+
+\class["e_1" {below=0em,xshift=2pt}](38,4)\etasqclass(38,4)
+\divfourclass["f_1" right](40,6)
+\d3(38,4) % d_3(e_1) = h_2^2 n = h_1 t, see Bruner "A New Differential in the ASS"
+
+\tower(39,15){6}\classoptions["P^2i" {right=0em}](39,15)
+
+\class(38,18)\divfourclass["P^3d_0" {below left=0em}](38,18)
+\etacubclass(38,16)\diveightclass["P^3e_0" {below=0em}](41,19)
+\nustruct(38,18)\nustruct(38,17)\nustruct(38,16)
+\etaclass(41,16)\divfourclass["P^2j" {below=0em}](42,17)
+\d2(39,15)\d2(39,16) % d2(P^2i) = h_0 P^3d_0
+\d2(41,16,,1)\d2(42,17,,1) % d2(P^3e_0) = h_1^2 P^3d_0
+\d2(42,15)\d2(42,16) % d2(P^2j) = h_0 P^3e_0
+
+
+
+\class["c_0 h_5" {below=-0.3em}](39,4)\etaclass(39,4)
+
+\d4(38,2,1,-1) \d4(38,3,1,-1) % d4(h_3h_5) = h_0x
+
+
+\class(39,14)
+\divfourclass["Pd_0e_0" {below=-0.2em}](39,14)
+\etaclass(39,12)
+\divfourclass["Pl" {below=0em}](40,13)
+\d2(40,11)\d2(40,12) % d2(Pl) = h_0 P^2g
+\d4(39,12)\d4(40,13,,-1) % d4(Pd_0e_0) = P^3d_0
+
+
+
+\class["c_1g"](39,7)
+\class["g^2"](40,8)
+\class["u"](39,9)\etasqclass(39,9)
+\divtwoclass["z"](41,11)
+\class(41,5)\divfourclass["c_2"](41,5)
+\class["v"](42,9)
+\d2(42,9) % d2(v) = h_1^2 u
+
+\class["d_0^3"](42,12)
+
+\class["Ph_1h_5" {right=0em}](40,6)\etasqclass(40,6)
+\divfourclass["Ph_2h_5" {right=0em}](42,8)
+
+
+\class["P^4c_0"](40,18)\etaclass(40,18)
+
+
+\class["P^5h_1"](41,20)\etasqclass(41,20)
+\divfourclass["P^5h_2" right](43,22)
+
+\class(44,5)\divfourclass["g_2" below](44,5)
+\etaclass(44,3)
+
+\class(44,18)\divfourclass["P^3g" left](44,18)
+\etaclass(44,16)\divfourclass["P^2k" below](45,17)
+\class["P^2r"](46,14)
+\d2(45,15)\d2(45,16) % d2(P^2k) = h_0 P^3g
+\d3(46,14)% d3(P^2r) = h0^2 P^2k
+\class(45,4)\divtwoclass["h_4^3" below](45,4)
+
+\class(45,6)\divfourclass["h_5d_0" right](45,6)
+\etaclass(45,4)
+
+\class["w"](45,9)
+
+\class["Pc_0g" left](45,12)
+\d4(45,12) % d4(Pc_0g) = P^3g
+\end{sseqdata}
+
+\printpage[name=S0ASS,page=0]
+
+\printpage[name=S0ASS,page=2]
+
+\printpage[name=S0ASS,page=3]
+
+\printpage[name=S0ASS,page=4]
+
+\begin{sseqpage}[name=S0ASS,page=5]
+\structline[dashed,bend right=20](15,4)(16,7)
+\structline[dashed](21,5)(22,8)
+\structline[dashed,bend right=20](20,6)(23,9,-1)
+\structline[dashed,bend right=20](23,6)(23,9,-1)
+%\structline[dashed,bend right=20](32,6)(33,9)
+%\structline[dashed,bend right=20](32,6)(33,9)
+\classoptions["h_0^2i" left](23,9)
+\classoptions["h_0^{10}h_5" left](31,11)
+\classoptions["h_1h_5" below](32,2)
+\classoptions["h_2h_5" below](34,2)
+%\classoptions["h_0^2h_3h_5" {left=-0.1em}](38,4,1)
+\classoptions["h_1h_3h_5" {below=-.4em}](39,3,1)
+\classoptions["P^4h_3" {below=0em}](39,17)
+\end{sseqpage}
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_duggarKRAHSS.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_duggarKRAHSS.pdf
new file mode 100644
index 00000000000..a2189c047b4
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_duggarKRAHSS.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_duggarKRAHSS.tex b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_duggarKRAHSS.tex
new file mode 100644
index 00000000000..001bdff30ad
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_duggarKRAHSS.tex
@@ -0,0 +1,79 @@
+%%
+%% Package: spectralsequences.sty version 1.0
+%% Author: Hood Chatham
+%% Email: hood@mit.edu
+%% Date: 2017-06-18
+%% License: Latex Project Public License
+%%
+%% File: example_duggarKRAHSS.tex
+%%
+%% Draws the Atiyah Hirzebruch spectral sequence for KR.
+%% To be honest, I can't really remember what this is, but based on the title, I copied it out of Duggar's paper computing KR.
+%%
+
+
+
+\documentclass{article}
+\usepackage[landscape]{geometry}
+\usepackage{spectralsequences}
+\begin{document}
+\sseqset{Zclass/.sseq style={fill=none,draw,inner sep=0.6ex},2Zclass/.style={fill=none,rectangle,draw,inner sep=0.6ex}}
+\begin{sseqdata}[
+ name=KRAHSS,
+ Adams grading,
+ x range={-18}{17},
+ y range={-10}{10},
+ classes=fill,
+ no orphan edges,
+ run off differentials = {->},
+ scale=0.5,
+ axes style=center,
+ tick step=4,
+ x tick gap=0.2cm,
+ y tick gap=0.4cm,
+ x axis gap=0.25cm,
+ y axis gap=0.25cm,
+ x axis extend start=0cm,
+ y axis extend start=0cm,
+ x axis extend end=0.25cm,
+ y axis extend end=0.25cm
+]
+
+\draw[background,xshift=-0.5cm,yshift=-0.5cm,step=1cm,gray,very thin] (\xmin+0.1,\ymin+0.1) grid (\xmax+0.7,\ymax+0.7);
+\pgfmathparse{\xmax+2}
+\foreach \x in {0,4,...,\pgfmathresult} {
+ \class[Zclass](\x,0)
+ \foreach \z in {0,...,\pgfmathresult} {
+ \class(\x+\z+1,\z+1)
+ \structline(\x+\z,\z)(\x+\z+1,\z+1)
+ }
+}
+
+\foreach \x in {4,12}{
+ \foreach\z in {0,...,\xmax}{
+ \d3(\x+\z,\z)
+ }
+ \replaceclass[2Zclass](\x,0)
+}
+
+\foreach\x in {-4,-8,...,-\pgfmathresult}{
+ \class[Zclass](\x,0)
+ \class(\x-2,0)
+ \foreach \z in {-1,...,-\pgfmathresult}{
+ \class(\x+\z-2,\z)
+ \structline(\x+\z-1,\z+1)(\x+\z-2,\z)
+ }
+}
+
+\foreach \x in {-6,-14}{
+ \foreach\z in {-3,...,-\xmax}{
+ \d3(\x+\z,\z)
+ }
+}
+
+\end{sseqdata}
+\printpage[name=KRAHSS,page=0]
+\newpage
+\printpage[name=KRAHSS,page=5]
+
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_endofVFoS.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_endofVFoS.pdf
new file mode 100644
index 00000000000..f0fcae52c21
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_endofVFoS.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_endofVFoS.tex b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_endofVFoS.tex
new file mode 100644
index 00000000000..a2a5245f43d
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_endofVFoS.tex
@@ -0,0 +1,139 @@
+%%
+%% Package: spectralsequences.sty version 1.0
+%% Author: Hood Chatham
+%% Email: hood@mit.edu
+%% Date: 2017-06-18
+%% License: Latex Project Public License
+%%
+%% File: example_endofVFoS.tex
+%%
+%% This is the drawing that got me started making the package. To this day, I don't know what it is. I copied it from Matt Ando's handwritten notes on
+%% Haynes 1990(?) class on Vector Fields on Spheres. It's on the very last page of the second part of the notes, so it must have been the last day of class.
+%% Looking back, I seem to have inferred a bunch of stuff that wasn't actually written down on the page, but I'm not sure how so there's a chance some of it is wrong.
+%%
+
+\documentclass{article}
+\usepackage[landscape,margin=0cm,top=2cm]{geometry}
+\usepackage{amssymb}
+\usepackage{spectralsequences}
+
+\NewSseqCommand\row { m } {\foreach \x in {1,...,35}{\class(\x,#1)}}
+\NewSseqCommand\twoptrow { m } {\foreach \x in {1,...,35}{\class(\x,#1)\class(\x,#1)}}
+\begin{document}
+\begin{sseqdata}[
+ name=mysseq,
+ x range={1}{25},
+ y range={0}{19},
+ homological Serre grading,
+ classes=fill,
+ permanent classes={circle,red},
+ transient cycles={black},
+ differentials={blue},
+ grid = go,
+ scale=0.9
+]
+
+\foreach \x in {1,3,5,...,35} {\class(\x,0)}
+
+\row{1}
+\row{2}
+\row{3}
+
+\foreach \y in {7,15,23}{
+ \row{\y}
+ \row{\y+1}
+ \twoptrow{\y+2}
+ \row{\y+3}
+ \row{\y+4}
+}
+
+\foreach \x in {9,13,...,25}{
+ \d2(\x,0)
+%
+ \foreach \y in {7,15}{
+ \d2 (\x,\y)
+ \d2 (\x,\y+1,,2)
+ \d2 (\x,\y+2,1,)
+ }
+}
+
+
+
+\foreach \x in {4,8,...,24}{
+ \d2 (\x,1)
+ \d2 (\x,2)
+ \foreach \y in {7,15}{
+ \d2 (\x,\y+1,,2)
+ \d2 (\x,\y+2,1,)
+ \d2 (\x,\y+3)
+ }
+}
+
+
+\foreach \x in {4,8,..., 24,28}
+ \foreach \y in {7,15}{
+ \d3 (\x+2,\y,,1)
+ \d3 (\x,\y+2,2,)
+}
+
+\foreach \x in {11,19,27}{
+ \d4(\x,0)
+}
+
+\foreach \x in {12,20,28}
+ \foreach \y in {7,15}{
+ \d5(\x,\y)
+}
+
+
+
+\foreach \x in {10,18,26,34}{
+ \d7(\x,1)
+ \d7(\x-1,2)
+ \d7(\x-2,3,,2)
+
+ \foreach \y in {9,17}{
+ \d7(\x,\y,1)
+ \d7(\x-1,\y+1)
+ \d7(\x-2,\y+2,,2)
+ }
+}
+
+\d9(15,0)
+\d9(14,1,,2)
+\d10(13,2)
+
+\d8(23,0)
+\d8(22,1)
+\foreach \x in {23,31} {
+ \d8(\x-2,2,,2)
+ \d9(\x-3,3)
+}
+\foreach \x in {16,24,32} {
+ \d9(\x,7)
+ \d8(\x-2,9,1,)
+ \d8(\x-3,10,,2)
+ \d9(\x-4,11)
+}
+\end{sseqdata}
+
+
+\printpage[name=mysseq, page=0]
+\newpage
+\printpage[name=mysseq, page=2]
+\newpage
+\printpage[name=mysseq, page=3]
+
+\newpage
+\printpage[name=mysseq, page=4]
+\newpage
+\printpage[name=mysseq, page=5]
+\newpage
+\printpage[name=mysseq, page=7]
+\newpage
+\printpage[name=mysseq, page=8]
+\newpage
+\printpage[name=mysseq, page=9]
+\newpage
+\printpage[name=mysseq, page=10]
+\end{document}
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_hatcher.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_hatcher.pdf
new file mode 100644
index 00000000000..ddf0032ed0d
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_hatcher.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_hatcher.tex b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_hatcher.tex
new file mode 100644
index 00000000000..a200354d1f1
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_hatcher.tex
@@ -0,0 +1,126 @@
+%%
+%% Package: spectralsequences.sty version 1.0
+%% Author: Hood Chatham
+%% Email: hood@mit.edu
+%% Date: 2017-06-18
+%% License: Latex Project Public License
+%%
+%% File: example_hatcher.tex
+%%
+%% This comes from Hatcher's spectral sequences book. I think it's a good demonstration of the flexibility of sseqpages.
+%% Thanks to Antonio Ruiz for suggesting it.
+%%
+
+\documentclass{article}
+\usepackage[landscape,margin=1cm,top=2cm]{geometry}
+\usepackage{spectralsequences}
+\usepackage{amssymb}
+\def\Z{\mathbb{Z}}
+
+\begin{document}
+\sseqset{
+ 0/.sseq style={"0",draw=none},
+ homological Serre grading,
+ classes={draw=none,inner sep=0.2em},
+ tick gap=0.7em,
+}
+\begin{sseqdata}[
+ name=hatcherex1,
+ permanent cycles={draw,minimum width={width("$Z_2$")+0.85em}},
+ yscale=0.6,
+ axes gap=1.2em,
+ axes clip padding=0em
+]
+\begin{scope}[background,opacity=0.1]
+\foreach \n in {1,3,...,9}{
+ \fill(-1.1,\n-0.5)--(-1.1,\n+0.5)--(0,\n+0.5)--(\n+0.5,0)--(\n+0.5,-1.6)--(\n-0.5,-1.6)--(\n-0.5,0)--(0,\n-0.5)--cycle;
+}
+\end{scope}
+
+\class["\Z"](0,0)
+\foreach\x in {1,3,...,9}{
+ \class["\Z_2"](\x,0)
+}
+\foreach \x in {2,4,...,8}{
+ \class[0](\x,0)
+}
+\foreach\y in {1,3,...,9}{
+ \pgfmathparse{9-\y}
+ \let\xmax\pgfmathresult
+ \foreach\x in {0,...,\xmax}{
+ \class["\Z_2"](\x,\y)
+ }
+}
+
+\foreach \y in {2,4,...,8}{
+ \pgfmathparse{9-\y}
+ \let\xmax\pgfmathresult
+ \foreach\x in {0,...,\xmax}{
+ \class[0](\x,\y)
+ }
+}
+
+\foreach \x in {3,5,...,9}{
+ \d2(\x,0)
+}
+
+\d3(4,1)
+\d3(6,1)
+\d3(8,1)
+\d3(4,3)
+\d3(6,3)
+\d3(4,5)
+\end{sseqdata}
+\printpage[name=hatcherex1,page=0]
+
+\begin{sseqdata}[
+ name=hatcherex2,
+ yscale=0.6,
+ x axis gap=0.3cm,
+]
+
+\begin{scope}[background,opacity=0.1]
+\foreach \n in {1,3,...,9}{
+ \fill(-1.1,\n-0.5)--(-1.1,\n+0.7)--(0,\n+0.7)--(\n+0.5,0)--(\n+0.5,-1.6)--(\n-0.5,-1.6)--(\n-0.5,0)--(0,\n-0.5)--cycle;
+}
+\end{scope}
+
+
+\foreach\x in {0,2,...,8}{
+ \class["\Z"](\x,0)
+}
+\foreach \x in {1,3,...,9}{
+ \class[0](\x,0)
+}
+\foreach\y in {1,3,...,9}{
+ \pgfmathparse{9-\y}
+ \let\xmax\pgfmathresult
+ \foreach\x in {0,...,\xmax}{
+ \pgfmathparse{int(mod(\x,2))}
+ \ifnum\pgfmathresult=0\relax
+ \class["\Z_2"](\x,\y)
+ \else
+ \class[0](\x,\y)
+ \fi
+ }
+}
+
+\d2(2,0)
+\foreach \x in {4,6,...,8}{
+ \foreach\r in {2,4,...,\x}{
+ \d\r(\x,0)
+ \replaceclass["\Z"](\x,0)
+ }
+}
+
+\foreach \y in {2,4,...,8}{
+ \pgfmathparse{9-\y}
+ \let\xmax\pgfmathresult
+ \foreach\x in {0,...,\xmax}{
+ \class[0](\x,\y)
+ }
+}
+
+\end{sseqdata}
+\printpage[name=hatcherex2,page=0]
+\end{document}
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_mayss.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_mayss.pdf
new file mode 100644
index 00000000000..d8e47ee1d18
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_mayss.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_mayss.tex b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_mayss.tex
new file mode 100644
index 00000000000..fd48445ca0c
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_mayss.tex
@@ -0,0 +1,129 @@
+%%
+%% Package: spectralsequences.sty version 1.0
+%% Author: Hood Chatham
+%% Email: hood@mit.edu
+%% Date: 2017-06-18
+%% License: Latex Project Public License
+%%
+%% File: example_mayss.tex
+%%
+%% I think this is the May SS for the sphere. May spectral sequences are annoying to draw neatly it turns out -- there's too much stuff in them.
+%% It helps a lot if you start at E_2 though, since E_1 is polynomial. They also have the problem with their crappy grading that makes all
+%% differentials the same length. I seem to have graded this weirdly, probably because the normal grading looked too bad.
+%%
+
+\documentclass{article}
+\usepackage{fullpage}
+\usepackage{spectralsequences}
+
+\begin{document}
+\NewSseqGroup\tower {m} {
+ \class["#1"](0,0)
+ \foreach\i in {1,...,14}{
+ \class(0,\i)
+ \structline(0,\i-1,-1)(0,\i,-1)
+ }
+}
+
+\NewSseqGroup\hone {m} {
+ \foreach\i in {1,...,#1}{
+ \class(\i,\i)
+ \structline(\i-1,\i-1,-1)(\i,\i,-1)
+ }
+}
+
+\NewSseqCommand\dtower {u(u)} {
+ \foreach\i in {0,...,10}{
+ \d[yshift=\i]#1(#2)
+ }
+}
+
+
+\def\single(#1)#2{\class["#2"](#1)}
+
+\NewSseqGroup\htwo {m} {
+ \foreach \n in {0,...,5}{
+ \tower(3*\n,\n){\sseqifempty{#1}{}{#1}\sseqpowerempty{h_2}{\n}}
+ \ifnum\n>0\relax
+ \structline(3*\n-3,\n-1,-1)(3*\n,\n,-1)
+ \fi
+ }
+}
+
+\NewSseqGroup\htwosinglejoin {mm} {
+ \foreach \n in {0,...,5}{
+ \single(3*\n,\n){\sseqifempty{#1}{}{#1}\sseqpowerempty{h_2}{\n}}
+ \ifnum\n>0\relax
+ \structline(3*\n-3,\n-1,-1)(3*\n,\n,-1)
+ \fi
+ }
+ \foreach \n in {0,...,#2}{
+ \structline(3*\n,\n,-1)(3*\n,\n+1,-1)
+ }
+}
+
+
+
+\begin{sseqdata}[name=may, degree={-1}{1-#1},x range={0}{13}, y range={0}{13},class labels=below right,differentials=blue,x axis extend end=23pt,draw]
+\tower(7,1){h_3}
+\htwo(0,0){}
+\classoptions[label position=above left](9,3)
+\hone(0,0){3}
+\htwo[label position={xshift=3pt,yshift=2pt}](4,4){b_{2,0}}
+\dtower2(4,4,-1,-1) % d2(b_{2,0}h_0^n) = h_2h_0^{n+2}
+\d2(4,4,-1,1) % d2(b_{2,0})= h_2h0^2 + h1^3
+
+%\hone(4,4){3}
+\htwo(8,8){b_{2,0}^2}
+\hone(8,8){3}
+\dtower4(8,8,,1) % d4(b_{2,0}^2) = h3 h0^4
+%\hone(8,8){3}
+\hone(7,1){2}
+
+
+\htwosinglejoin(7,4){x_7}{4}
+\dtower2(7,4,2,-1)
+\hone(7,4){2}
+\htwosinglejoin(11,8){x_7b_{2,0}}{4}
+\htwosinglejoin(10,4){b_{2,1}}{3}
+%\hone(10,4){1}
+\d2(10,4,-1,2) % d2(b21)=h2^3+h3h1^2
+\dtower2(10,4,1,1) % d2(b21 h0^n) = h2^3 h0^n
+
+
+\tower(11,5){h_3b_{2,0}}
+\tower(12,6){b_{3,0}}
+\dtower2(12,6,-1,-1)
+
+\htwo(12,12){b_{2,0}^3}
+\dtower2(12,12,-1,1) % d2(b20^3 h_0^n) = h0^n b20^2 d2(b20) = h0^{n+2} h2 b20^2
+\d2(12,12,-1,2) % d2(b_{2,0}^3)= b20^2 d2(b20) = h_2 h0^2 b20^2 + h1^3 b20^2
+\hone(12,12){3}
+\replaceclass(11,11)
+
+\structline(11,10)(11,11)
+\structline(10,10,2)(11,11)
+
+\replaceclass(3,3)
+
+\structline(2,2)(3,3)
+\structline(3,2)(3,3)
+
+
+
+
+
+\replaceclass(9,3)
+\structline(6,2)(9,3)
+\structline(8,2)(9,3)
+
+
+
+%\dtower2(12,6,2,-1)
+\end{sseqdata}
+\printpage[name=may]
+\newpage
+\printpage[name=may, page=4]
+\newpage
+\printpage[name=may, page=5]
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_tmfass.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_tmfass.pdf
new file mode 100644
index 00000000000..0939e810f49
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_tmfass.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_tmfass.tex b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_tmfass.tex
new file mode 100644
index 00000000000..a16a581d681
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_tmfass.tex
@@ -0,0 +1,292 @@
+%%
+%% Package: sseqpages.sty version 1.0
+%% Author: Hood Chatham
+%% Email: hood@mit.edu
+%% Date: 2017-06-18
+%% License: Latex Project Public License
+%%
+%% File: example_tmfass.tex
+%%
+%% From "The Homotopy Groups of tmf and of its Localizations" http://math.mit.edu/conferences/talbot/2007/tmfproc/Chapter16/TmfHomotopy.pdf
+%% This file has really bad performance.
+%%
+
+
+% 9.8 sec
+
+% 1.7 seconds to set up
+% 1.8 seconds to draw the classes
+% 2.1 seconds to draw the edges
+% --> ~5.7 seconds to draw page 0.
+
+% edge drawing time:
+% 1.0s to calculate but discard without off page handling
+% 0.6s to deal with off-page edges
+% 0.3s to draw
+
+% 17 seconds to draw all pages =(
+% 17 ~~ 1.7s setup + 5 page * 3 s/pp
+%
+% deleting off page edge handling cuts off 1.4s (1s?) so I haven't found any of the big time holes yet. WHY IS THIS SO SLOW??
+
+\documentclass{article}
+\usepackage[landscape,margin=0cm,top=2cm]{geometry}
+\usepackage{spectralsequences}
+
+\begin{document}
+
+\NewSseqGroup\tower {} {% 25
+ \class(0,0)
+ \foreach \y in {1,...,22}{
+ \class(0,\y)
+ \structline(0,\y-1,-1) (0,\y,-1)
+ }
+}
+
+\NewSseqGroup\towergroup {} {%9 + 25 = 36
+ \tower(0,0)
+ \class(1,1)
+ \class(3,1)
+ \class(2,2)
+ \class(3,2)
+ \class(3,3)
+ \class(6,2)
+ \structline(3,1,-1)(3,2,-1)
+ \structline(3,2,-1)(3,3,-1)
+ \structline(0,0,-1)(1,1,-1)
+ \structline(1,1,-1)(2,2,-1)
+ \structline(2,2,-1)(3,3,-1)
+ \structline(0,0,-1)(3,1,-1)
+ \structline(3,1,-1)(6,2,-1)
+ \structline(0,1,-1)(3,2,-1)
+ \structline(0,2,-1)(3,3,-1)
+}
+
+
+\NewSseqGroup\towergroupa {} {%25*2+9+21 = 80
+ \towergroup(0,0)
+ \tower(4,-1)
+%
+ \class(6,0)
+ \class(6,1)
+ \class(7,-1)
+ \class(7,0)
+ \class(7,1)
+ \class(9,0)
+ \class(9,1)
+ \class(9,2)
+ \class(10,0)
+ \class(10,1)
+ \class(12,0)
+ \class(12,1)
+ \class(12,2)
+ \class(13,1)
+ \structline(6,0,-1)(6,1,-1)
+ \structline(6,1,-1)(6,2,-1)
+ \structline(7,-1,-1)(7,0,-1)
+ \structline(7,0,-1)(7,1,-1)
+ \structline(9,0,-1)(9,1,-1)
+ \structline(9,1,-1)(9,2,-1)
+ \structline(10,0,-1)(10,1,-1)
+ \structline(12,0,-1)(12,1,-1)
+ \structline(12,1,-1)(12,2,-1)
+%
+ \structline(4,-1,-1)(7,0,-1)
+ \structline(4,0,-1)(7,1,-1)
+ \structline(6,0,-1)(9,1,-1)
+ \structline(6,1,-1)(9,2,-1)
+ \structline(6,0,-1)(7,1,-1)
+ \structline(7,-1,-1)(10,0,-1)
+ \structline(7,0,-1)(10,1,-1)
+ \structline(9,0,-1)(12,1,-1)
+ \structline(9,1,-1)(12,2,-1)
+ \structline(9,0,-1)(10,1,-1)
+ \structline(10,0,-1)(13,1,-1)
+ \structline(12,0,-1)(13,1,-1)
+%
+ \d2(4,-1,-1,-1)
+ \d2(4,0,-1,-1)
+ \d2(4,1,-1,-1)
+ \d2(7,-1,-1,-1)
+ \d2(7,0,-1,-1)
+ \d2(10,0,-1,-1)
+}
+
+\NewSseqGroup\towergroupb {} {%80 + 25 + 15 = 120
+ \towergroupa(0,0)
+ \tower(8,-2)
+ \class(10,-1)
+ \class(11,-1)
+ \class(10,-2)
+ \class(9,-3)
+ \class(11,-2)
+ \structline(8,-2)(11,-1)
+ \structline(11,-1)(10,-2)
+ \structline(10,-2)(9,-3)
+ \structline(11,-2)(11,-1)
+
+ \class(13,-1)
+ \class(13,0)
+ \class(14,-2)
+ \class(15,0)
+ \class(16,-1)\class(16,-1)
+ \class(16,0)
+ \class(16,1)
+ \class(17,0)
+ \class(18,0)
+ \class(18,1)
+ \class(19,-1)
+ \structline(10,-1,-1)(10,0,-1)
+ \structline(13,0,-1)(13,1,-1)
+ \structline(13,-1,-1)(13,0,-1)
+ \structline(16,0,-1)(16,1,-1)
+ \structline(16,-1,-2)(16,0,-1)
+ \structline(16,-1,-1)(16,0,-1)
+
+ \structline(10,-1,-1)(13,0,-1)
+ \structline(13,-1,-1)(16,0,-1)
+ \structline(13,0,-1)(16,1,-1)
+ \structline(15,0,-1)(18,1,-1)
+ \structline(15,0,-1)(16,1,-1)
+ \structline(16,-1,-1)(17,0,-1)
+ \structline(17,0,-1)(18,1,-1)
+ \structline(18,1,-1)(18,0,-1)
+ \d2(10,-1,-1,-1)
+ \d2(13,-1,-1,-1)
+ \d2(13,0,-1,-1)
+ \d3(14,-2,-1,-1)
+ \d2(19,-1,-1,-1)
+}
+
+\begin{sseqdata}[
+ x range={0}{50},
+ y range={0}{20},
+ x tick step=2,
+ Adams grading,
+ classes={fill,inner sep=0.3ex,tooltip={(\xcoord,\ycoord)}},
+ differentials={->,blue},
+ struct lines=red, %no struct lines, no differentials,
+ yscale=0.6, xscale=0.5,
+ x axis extend end=0.2cm,
+ name=tmfass,
+ grid=go,
+ run off differentials=->
+]
+
+\towergroup(0,0) % 36
+
+\class(8,3)\class(9,4)
+\structline(8,3)(9,4)
+\towergroupa(8,4) % 80
+
+\foreach \n in {2,3,4}{
+ \towergroupb(8*\n,4*\n) % 120
+}
+
+\foreach \n in {1,2,3,4}{
+ \begin{scope}[xshift=8*\n,yshift=4*\n]
+ \class(8,3)
+ \class(9,4)
+ \structline(8,3,-1)(9,4,-1)
+ \d3(9,0,-1,-1)
+ \d3(10,1,-1,-1)
+ \end{scope}
+}
+
+
+\foreach \n in {1,2,3,5,6,7}{
+ \class(35+2*\n,7+\n)
+}
+
+%\d2(18,4)
+\d3(24,6)
+
+\class(36,9)
+\d2(36,9)
+\d4(37,8)
+\d4(45,12)
+
+
+\class(44,13)
+\d2(44,13)
+\class(45,9)
+\class(47,10)
+\class(49,11)
+\d4(49,11,,1)
+\d4(49,11,,2)
+\replaceclass(48,15,1)
+\towergroupb(40,20)
+\towergroup(48,8)
+\foreach \n in {0,...,5}{
+ \class(40+2*\n,8+\n)
+}
+
+\d3(42,9)
+\d4(44,10)
+\d4(47,16)
+\d2(48,8)
+\d4(48,9)
+\d3(49,9,,2)
+\d3(50,13)
+\class(50,10)
+\d4(50,10,1)
+\d4(50,10,2)
+\replaceclass[offset={(0,0)}](50,10)
+\class(51,12)
+\d4(51,12)
+\class(52,17)
+\d2(52,17)
+
+\foreach \n in {0,4,8}{
+ \d3(32+2*\n,10+\n,1)
+ \d4(31+2*\n,8+\n)
+}
+\end{sseqdata}
+
+
+\printpage[name=tmfass,page=0]
+%\end{document}
+
+
+\printpage[name=tmfass,page=2]
+
+\printpage[name=tmfass,page=3]
+
+\printpage[name=tmfass,page=4]
+
+\begin{sseqpage}[name=tmfass,page=5,class labels={below=0.2em},tikz primitives=dashed]
+\classoptions["\eta" {right=0.1em}](1,1)
+\classoptions["\nu" below right](3,1)
+\classoptions["\epsilon"](8,3)
+\classoptions["c_4+\epsilon" left](8,4)
+\classoptions["2c_6"](12,6)
+\classoptions["\kappa"](14,4)
+\classoptions["c_4^2"](16,8)
+\classoptions["\overline\kappa"](20,4)
+\classoptions["8\Delta"](24,7)
+\classoptions["\eta\Delta"](25,5)
+\classoptions["2\nu\Delta"](27,6)
+\classoptions["c_4\Delta+q" left](32,7,1)
+\classoptions["q"](32,7,2)
+\classoptions["\overline\kappa^2"](40,8)
+\classoptions["4\Delta^2"](48,10)
+\draw(6,2)--(9,4);
+\draw(21,5)--(22,8);
+\draw[bend left=20] (25,5) to (28,8);
+\draw (27,6) -- (28,8);
+\draw(32,7,1)--(33,9);
+\draw[bend right=10](32,7,2) to (35,10);
+\draw(34,8) -- (35,10);
+\draw(39,9)--(40,11,2);
+\draw(39,9)--(42,12);
+\draw(40,8)--(40,11,2);
+\draw(40,11,1)--(41,13);
+\draw(40,8)--(41,10) -- (42,12);
+\draw(45,9)--(46,11);
+\draw(48,15,1)--(48,16,1);
+\draw[bend right=20] (48,15,1) to (49,17);
+\structline[black](50,10,2)(51,11)
+\end{sseqpage}
+
+\end{document}
+
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_tmfmayss.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_tmfmayss.pdf
new file mode 100644
index 00000000000..db413adf758
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_tmfmayss.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/example_tmfmayss.tex b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_tmfmayss.tex
new file mode 100644
index 00000000000..c4041a6eb5e
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/example_tmfmayss.tex
@@ -0,0 +1,242 @@
+%%
+%% Package: sseqpages.sty version 1.0
+%% Author: Hood Chatham
+%% Email: hood@mit.edu
+%% Date: 2017-06-18
+%% License: Latex Project Public License
+%%
+%% File: example_tmfmayss.tex
+%%
+%% I got this from Mike Hill's note: https://pdfs.semanticscholar.org/ddbb/8d584e4e81a71400088117b16cd241238c6c.pdf
+%%
+
+
+
+\documentclass{article}
+\usepackage[landscape,left=1cm]{geometry}
+\usepackage{spectralsequences}
+\begin{document}
+\sseqset{htwostructstyle/.sseq style = {gray,very thin, run off=-}}
+%\pgfkeys{/sseqpages/struct line/htwostructstyle/.show code}
+
+
+\NewSseqCommand\twods{ O{} U( r() m m }{
+ \def\temp{#1,#2,#3,#4,#5}
+ \getdtarget\target#2{#3} % Store the target position in \target
+ \nameclass{source}(#3) % naming the classes gives us a speed boost
+ \nameclass{target1}(\target,#4) % by preventing sseqpages from reparsing the coordinate
+ \nameclass{target2}(\target,#5) % it also makes the code easier to read
+%
+ \circleclasses[ differential style, #1,
+ name path = circ, page = #2--#2 ]
+ (target1)(target2) % Circle the classes, use differential style
+%
+ \d[invisible]#2(source)(target1) % don't draw anything, but record source and targets as hit.
+ \d[invisible]#2(source)(target2)
+%
+ \path(target1)--(target2)
+ coordinate[midway](midpt);% put a coordinate in the center of the two classes
+ \path[name path = lin] (source) -- (midpt);% save path from start to midpoint
+%
+ % draw line in "differential style" from start to intersection point of circ and lin
+ \draw[ differential style, #1, page constraint= { \page == #2 },
+ name intersections = { of = circ and lin } ]
+ (source) -- (intersection-1);
+}
+
+
+\NewSseqCommand \tower { O{} d() } {
+ \IfNoValueF{#2}{
+ \pushstack(#2)
+ }
+ \savestack
+ \edef\towermax{\the\numexpr9-\lasty0}
+ \begin{scope}[#1]
+ \foreach\i in {1,...,\towermax}{
+ \class(\lastx,\lasty+1)
+ \structline(\lastclass1)(\lastclass)
+ }
+ \end{scope}
+ \restorestack
+}
+
+\NewSseqCommand\honetower {O{}} {
+ \savestack
+ \begin{scope}[#1]
+ \edef\towermax{\the\numexpr9-\lasty0}
+ \foreach\i in {1,...,\towermax}{
+ \class(\lastx+1,\lasty+1)
+ \structline(\lastclass1)(\lastclass)
+ }
+ \end{scope}
+ \restorestack
+}
+
+\NewSseqCommand\htwo { O{} d() } {
+ \IfNoValueF{#2}{
+ \pushstack(#2)
+ }
+ \class[#1](\lastx+3,\lasty+1)
+ \structline[htwostructstyle](\lastclass1)(\lastclass)
+}
+
+\NewSseqCommand \htwotower { O{} d() } {
+ \IfNoValueF{#2}{
+ \pushstack(#2)
+ }
+ \edef\towermax{\the\numexpr-\lasty+8}
+ \begin{scope}[#1]
+ \gettag\thetag(\lastclass)
+ \class(\lastx+3,\lasty+1)
+ \structline[htwostructstyle](\lastclass)(\lastclass1)
+ \savestack
+ \foreach\i in {1,...,\towermax}{
+ \class(\lastx,\lasty+1)
+ \structline(\lastclass1)(\lastclass)
+ \structline[htwostructstyle](\lastx-3,\lasty-1,\thetag)(\lastclass)
+ }
+ \restorestack
+ \end{scope}
+}
+
+
+\NewSseqCommand\dtower {u(u)} {
+ \foreach\i in {0,...,10}{
+ \d[yshift=\i]#1(#2)
+ }
+}
+
+\begin{sseqdata}[name=tmfmayss,y range={0}{8}, x range={0}{25}, classes=fill, class labels={below=3pt},degree={-1}{1},differentials=blue,
+ class pattern=linear, classes={ tooltip = {(\xcoord,\ycoord)} }, xscale=0.8,
+ title = {Page \page},
+ run off differentials = ->
+]
+\class[tag= h0^i](0,0) \tower[tag=h0^i]
+\honetower \classoptions["h_1"](1,1)
+
+\htwotower[tag=h0^i h2]
+\classoptions["h_2"](3,1)
+\htwotower[tag=h0^i h2^2]
+\htwotower[tag=h0^i h2^3]
+\htwotower[tag=h0^i h2^4]
+\htwotower[tag=h0^i h2^5]
+\htwotower[tag=h0^i h2^6]
+\htwotower[tag=h0^i h2^7]
+\htwotower[tag=h0^i h2^8]
+\htwo%\htwotower[tag=h0^i h2^9]
+
+
+\class["b_{20}",name=b20,tag=h1^i b20](4,2)
+\tagclass{h0^i b20}(4,2)
+\honetower[tag=h1^i b20]
+\tower[tag=h0^i b20]
+\class["x_7",tag=h0^i x7,name=x7](7,2) \honetower
+\htwotower[tag=h0^i x7](b20)
+\structline(\lastclass)(x7) % h0 x7 = h2 b20
+
+
+\class["b_{21}", tag=h0^i b21,name=b21](10,2)
+\honetower[tag=h1^i b21]
+%\structline(\lastclass)(h2^2 b20) % h2 (h0 x7) = h2 (h2 b20)
+
+\htwotower[tag=h0^i b21](x7)
+\structline(b21)(\lastclass)
+
+
+
+\htwotower[tag=h0^i h2 b21](b21)
+\htwotower[tag=h0^i h2^2 b21]
+\htwotower[tag=h0^i h2^3 b21]
+\htwotower[tag=h0^i h2^4 b21]
+\htwotower[tag=h0^i h2^5 b21]
+\htwotower[tag=h0^i h2^6 b21]
+
+\class["b_{30}",tag=h1^i b30](12,2)
+\tagclass{h0^i b30}(12,2)
+\tower[tag=h0^i b30]\honetower[tag=h1^i b30]
+\htwotower[tag=h0^i h2 b30]
+\htwotower[tag=h0^i h2^2 b30]
+\htwotower[tag=h0^i h2^3 b30]
+\htwotower[tag=h0^i h2^4 b30]
+\htwotower[tag=h0^i h2^5 b30]
+
+
+
+%
+
+\class[tag=h0^i x7^2](14,4)
+\classoptions["x_7^2",page=0--3](\lastclass)
+\classoptions["d",page=4--100](\lastclass)
+\tower[tag=h0^i x7^2] \honetower
+
+\htwotower[tag=h0^i h2 x7^2]
+\htwotower[tag=h0^i h2^2 x7^2]
+\htwotower[tag=h0^i h2^3 x7^2]
+\htwotower[tag=h0^i h2^4 x7^2]
+\htwo%\htwotower[tag=h0^i h2^5 x7^2]
+
+
+\class["b_{20}^2",tag=h0^i b_{20}^2](8,4)
+\tower[tag=h0^i b_{20}^2]
+\honetower
+\htwotower[tag=h0^i h2 b_{20}^2]
+\htwotower[tag=h0^i h2^2 b_{20}^2]
+\htwotower[tag=h0^i h2^3 b_{20}^2]
+\htwotower[tag=h0^i h2^4 b_{20}^2]
+\htwo%\htwotower[tag=h0^i h2^5, b_{20}^2]
+
+\class[tag=h0^i b21^2](20,4)
+\classoptions["b_{21}^2",page=0--3](\lastclass)
+\classoptions["g",page=4--100](\lastclass)
+\honetower
+\tower[tag=h0^i b21^2]
+
+\htwotower[tag=h0^i h2 b21^2]
+\htwotower[tag=h0^i h2^2 b21^2]
+
+\class["b_{30}^2",tag=h0^i b30^2](24,4)
+\tower[tag=h0^i b30^2]
+\honetower
+\htwotower
+%\htwotower[tag=h0^i h2^3 b21^2]
+
+
+
+\twods3(4,2,-1){1}{2} % d3(b20) = h1^3 + h0^2 h2
+\replaceclass[offset={(0,0)}](3,3)
+\structline(3,2)(3,3)
+\structline(2,2)(3,3)
+\structline[htwostructstyle](0,2)(3,3)
+
+\foreach\y in {3,...,8} {\d3(4,\y,-1,-1)} % d3( h0^i b20 ) = h0^{2+i} h2
+\foreach\n in {3,...,8} {\d3(2+\n,\n,h1^i b20,1)} % d3(h1^i b20) = h1^{3+i}
+\foreach \y in {2,...,8} {\d3(7,\y,h0^i x7,h0^i h2^2)}
+
+\foreach \y in {2,...,8} {\d3(10,\y,h0^i b21,h0^i h2^3)}
+
+\foreach \y in {3,...,8} {\d3(13,\y, h0^i h2 b21 ,h0^i h2^4)}
+\foreach \y in {3,...,7} {\d3(16,\y+1,h0^i h2^2 b21,h0^i h2^5)}
+\foreach \y in {3,...,6} {\d3(19,\y+2,h0^i h2^3 b21,h0^i h2^6)}
+\foreach \y in {3,...,5} {\d3(22,\y+3,h0^i h2^4 b21,h0^i h2^7)}
+\foreach \y in {3,...,4} {\d3(25,\y+4,h0^i h2^5 b21,h0^i h2^8)}
+
+\foreach \n in {0,...,6} {\d3(12+\n,2+\n,h1^i b30,h1^i b21)}
+
+\foreach \n in {0,...,4} {\d5(24,4+\n,-1,-1)}
+
+
+\classoptions[page=4--100,"c_0"](8,3)
+\classoptions[page=4--100,"a"](12,3)
+\classoptions[page=4--100,"b"](15,3)
+
+
+
+\end{sseqdata}
+\printpage[name=tmfmayss,page=2]
+\newpage
+\printpage[name=tmfmayss,page=3]
+\newpage
+\printpage[name=tmfmayss,page=5]
+\newpage
+\printpage[name=tmfmayss,page=8,title={Page $\infty$}]
+\end{document} \ No newline at end of file