texlive[50059] Master/texmf-dist: spectralsequences (19feb19)

commits+karl at tug.org commits+karl at tug.org
Tue Feb 19 23:18:18 CET 2019


Revision: 50059
          http://tug.org/svn/texlive?view=revision&revision=50059
Author:   karl
Date:     2019-02-19 23:18:17 +0100 (Tue, 19 Feb 2019)
Log Message:
-----------
spectralsequences (19feb19)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/spectralsequences/README.md
    trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_2.pdf
    trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_2.tex
    trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_3.pdf
    trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_2.pdf
    trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_3.pdf
    trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-tmf_2.pdf
    trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-EO2_3.pdf
    trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-KO.pdf
    trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.pdf
    trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.tex
    trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-bo-A1.pdf
    trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.pdf
    trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.tex
    trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KF3n.pdf
    trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KZ3.pdf
    trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.pdf
    trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.tex
    trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.pdf
    trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.tex
    trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-KORP8.tex
    trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2a.tex
    trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2b.tex
    trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-imJ.tex
    trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-insert.tex
    trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-tikz.tex
    trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.pdf
    trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.tex
    trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanualpreamble.tex
    trunk/Master/texmf-dist/tex/latex/spectralsequences/spectralsequences.sty
    trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqcheckdefinitions.code.tex
    trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqdrawing.code.tex
    trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqforeach.code.tex
    trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqkeys.code.tex
    trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqloadstore.code.tex
    trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmacromakers.code.tex
    trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmain.code.tex
    trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmessages.code.tex
    trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqparsers.code.tex

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual-draftmode.pdf
    trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/sseqmanualtest.tex

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/README.md	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/README.md	2019-02-19 22:18:17 UTC (rev 50059)
@@ -1,9 +1,9 @@
 
-spectralsequences v1.2.1
+spectralsequences v1.2.2
 ========================
 Author: Hood Chatham  
 Email: hood at mit.edu  
-Date: 2018-10-08  
+Date: 2019-02-18  
 License: All files have the Latex Project Public License.  
 Description: Print spectral sequence diagrams using pgf/tikz.  
 
@@ -13,6 +13,18 @@
 
 Changelog:
 ==========
+## [1.2.2] (2018-02-18)
+### Fixed:
+- expl3 defined \exp_after:NNNf recently, so I changed \cs_new:Npn \exp_after:NNNf to \cs_set:Npn \exp_after:NNNf and copied the definition given by
+  expl3.
+- expl3 changed the definition of \peek_meaning_ignore_spaces to be in terms of \peek_meaning so \letting \peek_meaning to \peek_meaning_ignore_spaces 
+  caused an infite regress. 
+- expl3 changed \c__xparse_no_value_tl to \c__novalue_tl, so now I try to use each of them in sequence.
+- Fixed U argument type.
+- \sseqnewfamily was broken by an update to tikz that added a \scantokens call to the .ecode key handler, causing issues with @.
+- If \d was called without a source or target argument and was followed by a macro, \d would eat the first token of the expansion of that macro
+  causing an error. 
+- Draft mode works a lot better now, though it's probably still buggy.
 
 ## [1.2.1] (2018-10-08)
 ### Fixed:

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_2.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_2.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_2.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_2.tex	2019-02-19 22:18:17 UTC (rev 50059)
@@ -9,7 +9,6 @@
     minimum height=width("16"),
     minimum width=width("16")
 }}
-
 \sseqnewfamily{imJ}
 \begin{document}
 

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_3.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_2.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_3.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-tmf_2.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-EO2_3.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-KO.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.tex	2019-02-19 22:18:17 UTC (rev 50059)
@@ -1,8 +1,8 @@
 %%
-%% Package: spectralsequences v1.2.1 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2 2017-09-16 2017-09-16
 %% Author: Hood Chatham
 %% Email: hood at mit.edu
-%% Date: 2018-10-08
+%% Date: 2019-02-18
 %% License: Latex Project Public License
 %%
 %% File: example_endofVFoS.tex

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-bo-A1.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.tex	2019-02-19 22:18:17 UTC (rev 50059)
@@ -8,7 +8,6 @@
 \documentclass[tooltips]{spectralsequence-example}
 \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 }{

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KF3n.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KZ3.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.tex	2019-02-19 22:18:17 UTC (rev 50059)
@@ -1,8 +1,8 @@
 %%
-%% Package: spectralsequences v1.2.1 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2 2017-09-16 2017-09-16
 %% Author: Hood Chatham
 %% Email: hood at mit.edu
-%% Date: 2018-10-08
+%% Date: 2019-02-18
 %% License: Latex Project Public License
 %%
 %% File: example_hatcher.tex

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.tex	2019-02-19 22:18:17 UTC (rev 50059)
@@ -1,8 +1,8 @@
 %%
-%% Package: spectralsequences v1.2.1 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2 2017-09-16 2017-09-16
 %% Author: Hood Chatham
 %% Email: hood at mit.edu
-%% Date: 2018-10-08
+%% Date: 2019-02-18
 %% License: Latex Project Public License
 %%
 %% File: example_unstable_ASS_SO.tex

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-KORP8.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-KORP8.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-KORP8.tex	2019-02-19 22:18:17 UTC (rev 50059)
@@ -1,11 +1,11 @@
 
 
 \NewSseqCommand \KOstar {m}{
-    \begin{scope}[xshift = -#1, xshift=8*\b, yshift = #1]
-        \class[rectangle,name=b^{\b}[0]](0,0)
-        \class[name=b^{\b} e[0]](1,0) \structline
-        \class[name=b^{\b} e^2[0]](2,0) \structline
-        \class[rectangle,fill=none,name=b^{\b} u[0]](4,0)
+    \begin{scope}[ xshift = -#1, xshift = 8*\b, yshift = #1 ]
+        \class[rectangle, name = b^{\b}[0]](0,0)
+        \class[name = b^{\b} e[0]](1,0) \structline
+        \class[name = b^{\b} e^2[0]](2,0) \structline
+        \class[rectangle, fill = none, name = b^{\b} u[0]](4,0)
     \end{scope}
 }
 \NewSseqCommand \KOpcell {m}{
@@ -12,8 +12,8 @@
     \d1(b^{\b}[#1])   \replacetarget
     \d1(b^{\b} u[#1]) \replacetarget
     \structline(b^{\b}[#1+1])(b^{\b} e[#1+1])
-    \structline[page=2,dashed](b^{\b} e[#1])(b^{\b} e^2[#1+1])
-    \structline[page=2,dashed](b^{\b} e^2[#1])(b^{\b} u[#1+1])
+    \structline[page = 2, dashed](b^{\b} e[#1])(b^{\b} e^2[#1+1])
+    \structline[page = 2, dashed](b^{\b} e^2[#1])(b^{\b} u[#1+1])
 }
 \NewSseqCommand \KOetacell {m}{
     \DrawIfValidDifferential2(b^{\b}[#1])
@@ -20,8 +20,8 @@
     \d2(b^{\b} e[#1])
     \DrawIfValidDifferential3(b^{\b} e^2[#1])
 }
-\begin{sseqdata}[name=KO^*RP^8, Adams grading, class name handler=\SseqAHSSNameHandler,
-    classes=fill, x range={-8}{10},xscale=0.7, yscale=0.5, x tick step = 4 ]
+\begin{sseqdata}[ name = KO^*RP^8, Adams grading, class name handler = \SseqAHSSNameHandler,
+    classes = fill, x range = {-8}{10}, xscale = 0.7, yscale = 0.5, x tick step = 4 ]
 \foreach \b in {-2,...,2}{
     \foreach \n in {0,...,6}{\KOstar{\n}}
     \foreach \n in {1,3,...,5}{\KOpcell{\n}}
@@ -30,5 +30,5 @@
     \structline[dashed](b^{\b}[4])(b^{\b}e[5])
 }
 \end{sseqdata}
-\printpage[name=KO^*RP^8, title=AHSS for $KO^*\mathbb{R}P^8$]\vskip6pt
-\printpage[name=KO^*RP^8,page=6] 
\ No newline at end of file
+\printpage[ name = KO^*RP^8, title = AHSS for $KO^*\mathbb{R}P^8$ ]  \vskip6pt
+\printpage[ name = KO^*RP^8, page = 6 ] 
\ No newline at end of file

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2a.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2a.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2a.tex	2019-02-19 22:18:17 UTC (rev 50059)
@@ -5,13 +5,13 @@
 \class(0,3)
 \d3(1,0)
 \replacesource
-\classoptions[fill,red](1,0) % (a) applies to most recent (last) generation.
+\classoptions[fill, red](1,0) % (a) applies to most recent (last) generation.
 \end{sseqdata}
 
 \printpage[ name = page_example2, page = 1 ] % generation 0 of (1,0), not styled
 \quad
 \begin{sseqpage}[ name = page_example2, page = 1, keep changes ]
-\classoptions[fill,blue](1,0) % (b) applies to the generation present on page 1, that is, generation 0.
+\classoptions[fill, blue](1,0) % (b) applies to the generation present on page 1, that is, generation 0.
 \end{sseqpage} \quad
 
 % generation 0 of (1,0), so class is blue from (b)

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2b.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2b.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2b.tex	2019-02-19 22:18:17 UTC (rev 50059)
@@ -6,11 +6,11 @@
 \printpage[ name = page_example2, page = 1 ]% generation 0 of (1,0), so class is red
 \quad
 \begin{sseqpage}[ name = page_example2, page = 1, keep changes ]
-\classoptions[fill,blue](1,0) % (d) applies to the generation present on page 1, that is, generation 0.
+\classoptions[fill, blue](1,0) % (d) applies to the generation present on page 1, that is, generation 0.
 \end{sseqpage} \quad
 
 % generation 0 of (1,0), class is blue from (d)
-\printpage[ name = page_example2,page = 2 ] \quad
+\printpage[ name = page_example2, page = 2 ] \quad
 
 % generation 1 of (1,0), class is red from (c)
 \printpage[ name = page_example2, page = 3 ]

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-imJ.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-imJ.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-imJ.tex	2019-02-19 22:18:17 UTC (rev 50059)
@@ -1,11 +1,11 @@
 \SseqNewFamily{imJ}
 \begin{sseqdata}[
     name=ANSS-S_2, Adams grading,
-    class labels={below}, label distance=-1pt,
-    class placement transform={rotate=90,scale=2},
-    differentials=blue,
-    x range={0}{9}, y range={0}{4},
-    xscale=0.7, grid=go
+    class labels = {below}, label distance = -1pt,
+    class placement transform = {rotate = 90, scale = 2},
+    differentials = blue,
+    x range = {0}{9}, y range = {0}{4},
+    xscale = 0.7, grid = go
 ]
 % Image of J classes
 \begin{scope}[imJ]
@@ -12,11 +12,11 @@
 \class[rectangle,fill,inner sep=3pt](0,0)
 \DoUntilOutOfBoundsThenNMore{3}{\etaclass}
 \classoptions["\alpha_1" above left](1,1)
-\class["\alpha_{2/2}",circlen=2](3,1)
+\class["\alpha_{2/2}", circlen = 2](3,1)
 \structline(0,0) \structline[dashed](3,3)
 \class["\alpha_3"](5,1) \d3\relax
 \DoUntilOutOfBounds{ \etaclass \d3 }
-\class["\alpha_{4/4}", rectangle, "16" {font=\tiny,inside}, inner sep=1pt](7,1)
+\class["\alpha_{4/4}", rectangle, "16" {font = \tiny, inside}, inner sep = 1pt](7,1)
 \DoUntilOutOfBoundsThenNMore{3}{\etaclass}
 \end{scope}
 
@@ -27,6 +27,6 @@
 \etaclass\structline(6,2,2) % This is a *nu
 \end{sseqdata}
 
-\printpage[name=ANSS-S_2, title = with image of J, imJ style=purple]
+\printpage[ name = ANSS-S_2, title = with image of J, imJ style = purple]
 
-\printpage[name=ANSS-S_2, no imJ, x range={2}{9}, title = without image of J]
\ No newline at end of file
+\printpage[ name = ANSS-S_2, no imJ, x range={2}{9}, title = without image of J] 
\ No newline at end of file

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-insert.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-insert.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-insert.tex	2019-02-19 22:18:17 UTC (rev 50059)
@@ -6,28 +6,28 @@
     }
 }
 
-\begin{sseqdata}[name=insert-example, y range={0}{4}, class pattern = linear]
+\begin{sseqdata}[ name = insert-example, y range = {0}{4}, class pattern = linear ]
 \tower(0,2)
 \tower(0,3)
 \tower(0,1)
 \end{sseqdata}
 \qquad
-\begin{sseqpage}[name=insert-example]
-\tower[red,classes={insert=1}](0,0)
+\begin{sseqpage}[ name = insert-example ]
+\tower[ red, classes = { insert = 1 } ](0,0)
 \end{sseqpage}
 \qquad
-\begin{sseqpage}[name=insert-example]
-\tower[red,classes={insert=2}](0,0)
+\begin{sseqpage}[ name = insert-example ]
+\tower[ red, classes = { insert = 2 } ](0,0)
 \end{sseqpage}
 \qquad
-\begin{sseqpage}[name=insert-example]
-\tower[red,classes={insert=3}](0,0)
+\begin{sseqpage}[ name = insert-example ]
+\tower[ red, classes = { insert = 3 } ](0,0)
 \end{sseqpage}
 \qquad
-\begin{sseqpage}[name=insert-example]
-\tower[red,classes={insert=-2}](0,0)
+\begin{sseqpage}[ name = insert-example ]
+\tower[ red, classes = { insert = -2 } ](0,0)
 \end{sseqpage}
 \qquad
-\begin{sseqpage}[name=insert-example]
-\tower[red,classes={insert=-3}](0,0)
-\end{sseqpage}
\ No newline at end of file
+\begin{sseqpage}[ name = insert-example ]
+\tower[ red, classes = { insert = -3 } ](0,0)
+\end{sseqpage} 
\ No newline at end of file

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-tikz.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-tikz.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-tikz.tex	2019-02-19 22:18:17 UTC (rev 50059)
@@ -6,7 +6,7 @@
 \class(0,2)
 \d2(1,0)
 \end{sseqdata}
-
+%
 \begin{sseqpage}[ name = tikz example ]
 \circleclasses[ name path = myellipse, inner sep = 3pt, ellipse ratio = 1.6 ] (1,0) (0,2)
 \path[ name path = myline ] (1.3,1.25) -- (0.6,1);
@@ -13,13 +13,13 @@
 \draw[ name intersections = { of = myellipse and myline } ]
       (intersection-1) to (1.3,1.25) node[ right, text width = 1.6cm ] {Consider this differential};
 \end{sseqpage} \qquad
-
+%
 \begin{sseqpage}[ name = tikz example ]
 \draw[ xshift = 1 ] (0,0) to (0.6,0.2) node[ right, text width = 1.1cm ] {This is the source};
 \draw[ yshift = 2 ] (0,0) to (0.6,0.2) node[ right, text width = 1.1cm ] {This is the target};
 \end{sseqpage} \qquad
-
+%
 \begin{sseqpage}[ page = 3, name = tikz example ]
-\circleclasses[ name path = myellipse, inner sep = 3pt, ellipse ratio = 1.6 ] (1,0)(0,2)
+\circleclasses[ inner sep = 3pt, ellipse ratio = 1.6 ] (1,0)(0,2)
 \node[ right, font = \tiny ] at (1.2,1.2) {Now it's gone!};
-\end{sseqpage}
\ No newline at end of file
+\end{sseqpage} 
\ No newline at end of file

Added: trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual-draftmode.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual-draftmode.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual-draftmode.pdf	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual-draftmode.pdf	2019-02-19 22:18:17 UTC (rev 50059)

Property changes on: trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual-draftmode.pdf
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.tex	2019-02-19 22:18:17 UTC (rev 50059)
@@ -1,8 +1,8 @@
 %%
-%% Package: spectralsequences v1.2.1 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2 2017-09-16 2017-09-16
 %% Author: Hood Chatham
 %% Email: hood at mit.edu
-%% Date: 2018-10-08
+%% Date: 2019-02-18
 %% License: Latex Project Public License
 %%
 %% File: spectralsequencesmanual.tex
@@ -21,7 +21,7 @@
 %  explain / cross reference examples folder?
 %  \sseqlastlabel is not currently documented.
 %
-\def\version{Version 1.2.1}
+\def\version{Version 1.2.2}
 
 
 \input spectralsequencesmanualpreamble
@@ -79,7 +79,11 @@
 Another option is to increase the static memory caps for \pdfLaTeX. See \href{https://tex.stackexchange.com/a/26213}{this \TeX stack exchange post} for instructions on how to do this.
 
 \subsection{A warning about fragile macros}
-All the data in a \sseqpages\  environment is stored and used later. As a result, most of the \sseqpages\  commands currently cannot tolerate fragile macros. Unfortunately, it is impossible for \sseqpages\  to warn you about this situation -- if you use a fragile command in a place that it doesn't belong, the result will be an incomprehensible error message. If you are getting nonsense error messages, this might be why. The solution is to convert fragile macros into robust ones. \href{http://www.tex.ac.uk/FAQ-protect.html}{See here for more information.}
+All the data in a \sseqpages\  environment is stored and used later. As a result, most of the \sseqpages\  commands currently cannot tolerate fragile macros. Unfortunately, it is impossible for \sseqpages\  to warn you about this situation -- if you use a fragile command in a place that it doesn't belong, the result will be an incomprehensible error message. If you are getting nonsense error messages, this might be why. The solution is to convert fragile macros into robust ones. Common examples of fragile macros include |\widehat| and |\underline|. My suggested solution to this is to add the following code to your preamble for each fragile macro (example given for |\mathbb|):
+\begin{codeexample}[code only]
+\let\oldwidehat\widehat
+\protected\def\widehat{\oldwidehat}
+\end{codeexample}
 
 
 \section{Package Options and Environments}
@@ -143,7 +147,7 @@
 \class["\mathbb{Z}"](1,0)
 \d["\cdot 2"]2(1,1)
 \replacetarget["\mathbb{Z}/2"] %\replaceclass["\mathbb{Z}/2"](0,3)
-\d[-> >]3(1,0)
+\d[->>]3(1,0)
 \replacesource["2\mathbb{Z}"]    % \replaceclass["2\mathbb{Z}"](1,0)
 \end{sseqdata}
 \printpage[ name = replace class example, page = 2 ] \qquad
@@ -362,17 +366,17 @@
 \end{manualentry}
 
 \begin{manualentry}{\pgfmanualpdflabel{""quotes}{}|"|\meta{text}|"|\opt{\meta{options}}}
-Specify a label for a class, a differential, or a structure line. This uses the \tikzpkg\ quotes syntax. If the label text includes an equal sign or comma, you need to enclose the entire label in braces, e.g., |\class["{x = y}"](0,0)|. The options include anything you might pass as an option to a \tikzpkg\ node, including arbitrary coordinate transforms, colors, opacity options, shapes, fill, draw, etc. The behavior is a little different depending on whether you use it on a class or on a differential or structure line.
+Specify a label for a class, a differential, or a structure line. This uses the \tikzpkg\ quotes syntax. If the label text includes an equal sign or comma, you need to enclose the entire label in braces, e.g., \codeverb|\class["{x = y}"](0,0)|. The options include anything you might pass as an option to a \tikzpkg\ node, including arbitrary coordinate transforms, colors, opacity options, shapes, fill, draw, etc. The behavior is a little different depending on whether you use it on a class or on a differential or structure line.
 
 For a class, the \meta{text} is placed in the position |inside| the node by default -- in effect, the \meta{text} becomes the label text of the node (so saying |\class["label text"](0,0)| causes a similar effect to saying |\node at (0,0) {label text};|). There are other position options such as |left|, |above left|, etc which cause the label text to be placed in a separate node positioned appropriately. If the placement is above, left, etc, then any option that you may pass to a \tikzpkg\ node will also work for the label, including general coordinate transformations. If the placement is ``inside'', then the only relevant \opt{\meta{options}} are those that alter the appearance of text, such as opacity and color.
 \begin{codeexample}[width = 4cm]
 \begin{sseqpage}[ classes = { minimum width = width("a") + 0.5em }, no axes ]
 \class["a"](0,0)
-\class["a",red](1,0)
-\class["a" black,red](2,0)
+\class["a", red](1,0)
+\class["a" black, red](2,0)
 \class["b" above](0,1)
-\class["b" {below right,yshift = 0.1cm}](1,1)
-\class["a" {above right = {1em}}](2,1)
+\class["b" { below right, yshift = 0.1cm }](1,1)
+\class["a" { above right = {1em} }](2,1)
 \end{sseqpage}
 \end{codeexample}
 You can adjust the default behavior of class labels using the |labels| style option or its relatives |class labels|, |inner class labels| or |outer class labels|.
@@ -381,7 +385,7 @@
 \begin{sseqpage}[ no axes ]
 \class(0,0)
 \class(2,0)
-\node[circle,fill,"a"] at (1,0) {};
+\node[circle, fill, "a"] at (1,0) {};
 \end{sseqpage}
 \end{codeexample}
 
@@ -390,7 +394,7 @@
 \begin{codeexample}[width = 6cm]
 \begin{sseqpage}
 \class(0,0)
-\class["xy" {above, xshift=-4pt, pin = red}](0,0)
+\class["xy" { above, xshift = -4pt, pin = red }](0,0)
 \class(0,0)
 \class(0,1)
 \structline
@@ -509,23 +513,24 @@
 \end{key}
 
 \begin{key}{show name = \meta{label options}}
+\declareasstyle{show name}
 This option is like saying |"class name"\marg{label options}| if the class has a name, and does nothing if the class has no name. If the class has multiple names, only the most recent is used. This is particularly useful with class styles, . For instance, by saying |this page classes = { show name = above }| you can display names of all of the sources and targets of differentials on each page.
 \begin{codeexample}[width=7cm]
 \begin{sseqdata}[
     name = show name example,
-    this page classes = { show name = {above right, pin} }
+    this page classes = { show name = { above right, pin } }
 ]
-\class[name=a](0,2)
-\class[name=b](0,3)
-\class[name=x](1,0)
+\class[ name = a ](0,2)
+\class[ name = b ](0,3)
+\class[ name = x ](1,0)
 \d2(x)(a)
 \replacesource[name=2x]
 \d3(x)(b)
 \end{sseqdata}
 
-\printpage[name=show name example,page=2]
+\printpage[ name = show name example, page = 2]
 
-\printpage[name=show name example,page=3]
+\printpage[ name = show name example, page = 3]
 \end{codeexample}
 \end{key}
 
@@ -549,8 +554,8 @@
 \begin{sseqpage}[ degree = {-1}{1}, yscale = 1.1,
                   x range = {0}{5}, y range = {0}{5} ]
 \tower(3,0)
-\hvee[tag = id](0,0)
-\hvee[tag = h21](4,2)
+\hvee[ tag = id ](0,0)
+\hvee[ tag = h21 ](4,2)
 \foreach \n in {0,...,5} {
     \d2(4+\n,2+\n,h21,id)
 }
@@ -606,12 +611,14 @@
 \end{key}
 
 \begin{keylist}{class:page = \meta{page}\opt{-{}-\meta{page max}},generation = \meta{generation}\opt{-{}-\meta{generation max}}}
+\def\classpagehandler#1#2{\textcolor{keycolor}{\noligs{#2}}}
+\declarecustomhandler{class:page}{\classpagehandler}
 These options only work in |\classoptions|. The |page| option gives a range of pages for which the options apply to. If only one page is specified, it is the minimum page and the option applies to all larger pages.
 \begin{codeexample}[width = 6cm]
 \begin{sseqdata}[ name = page_example, no axes,
     title = \page, title style = {yshift = -0.5cm} ]
 \class(0,0)
-\classoptions[class:page = {2--3},fill,blue](0,0)
+\classoptions[class:page = 2 -- 3, fill, blue](0,0)
 \end{sseqdata}
 
 \printpage[ name = page_example, page = 1 ] \qquad
@@ -658,8 +665,8 @@
     \class(\x,\y)
 }
 \structline[densely dotted](0,0)(0,1)
-\structline[dashed,red, "a"](1,0)(1,1)
-\structline[dash dot,red, "a" black](2,0)(2,1)
+\structline[dashed, red, "a"](1,0)(1,1)
+\structline[dash dot, red, "a" black](2,0)(2,1)
 \end{sseqpage}
 \end{codeexample}
 %
@@ -673,7 +680,7 @@
 }
 \structline[bend left = 20](0,0)(0,1)
 \structline[bend right = 20](1,0)(1,1)
-\structline[in = 20,out = north](2,0)(2,1)
+\structline[in = 20, out = north](2,0)(2,1)
 \end{sseqpage}
 \end{codeexample}
 \end{keylist}
@@ -713,13 +720,13 @@
 \d3(1,1)(0,4) \replacesource
 \structline[structline:page = 2](1,0)(1,1)
 \end{sseqdata}
-\printpage[name = structpage example2,page = 1]
+\printpage[ name = structpage example2, page = 1 ]
 \qquad
-\printpage[name = structpage example2,page = 2]
+\printpage[ name = structpage example2, page = 2 ]
 \qquad
-\printpage[name = structpage example2,page = 3]
+\printpage[ name = structpage example2, page = 3 ]
 \qquad
-\printpage[name = structpage example2,page = 4]
+\printpage[ name = structpage example2, page = 4 ]
 \end{codeexample}
 
 Similarly, for |\structlineoptions| you can specify a minimum page on which to apply the options, or a range of pages.
@@ -729,12 +736,12 @@
 \begin{key}{fit = \meta{coordinates or nodes}}
 The |\circleclasses| command uses the \href{\pgfmanualurl#section.52}{\tikzpkg\  fitting library}. Sometimes it's desirable to make the resulting node fit extra things, for example a label. It doesn't necessarily end up looking great though.
 \begin{codeexample}[]
-\begin{sseqpage}[Adams grading,axes gap = 0.7cm]
+\begin{sseqpage}[ Adams grading, axes gap = 0.7cm ]
 \class(0,2)
 \class(1,0)
 % Fit in the label x and also a symmetric invisible label to maintain symmetry
-\d["x"{name = x},"x"'{name = x',opacity = 0}]2(1,0)
-\circleclasses[fit = (x)(x'),rounded rectangle](1,0)(0,2)
+\d["x"{name = x}, "x"'{name = x', opacity = 0}]2(1,0)
+\circleclasses[fit = (x)(x'), rounded rectangle](1,0)(0,2)
 \end{sseqpage}
 \end{codeexample}
 \end{key}
@@ -770,7 +777,7 @@
 
 In particular, this means that foreground \tikzpkg\  paths can be clipped by the standard clipping, but background paths that are outside of the clipping expand the size of the \tikzpkg\  picture.
 \begin{codeexample}[]
-\begin{sseqpage}[no ticks,yscale = 0.9,math nodes = false]
+\begin{sseqpage}[ no ticks, yscale = 0.9, math nodes = false ]
 \class(0,0)
 \class(1,1)
 \begin{scope}[background]
@@ -958,6 +965,7 @@
     \structline
 }
 \class(4,0)
+\d3
 \DoUntilOutOfBounds{
     \class(\lastx+1,\lasty+1)
     \structline
@@ -1051,21 +1059,21 @@
 \end{codeexample}
 
 
-The |\d| command has argument specification |O{} U( r()|. The argument type |U| is special to \sseqpages, and is a variant of until that reinserts the delimiting token. This allows the |(| token to also delimit the beginning of the |r()| argument. Note that the argument type |U| is specially added by \sseqpages\ and might be removed in the future if the \LaTeX3 team yells at me or something.
-    \ExplSyntaxOn
-    \cs_set_eq:NN \__xparse_add_type_U:w \sseq__xparse_add_type_U:w
-    \cs_set_eq:NN \__xparse_normalize_type_U:w \sseq__xparse_normalize_type_U:w
-    \sseq at install@xparse at Uarggrabber
-    \ExplSyntaxOff
-\begin{codeexample}[width = 7cm,vbox]
-\DeclareDocumentCommand {\demo} { O{} U( r() }
-    {  \#1 = \textcolor{purple}{\{#1\}};
-       \#2 = \textcolor{purple}{\{#2\}};
-       \#3 = \textcolor{purple}{\{#3\}}  }
-\hbox{\demo[opts]page(x,y)}
-\bigskip
-\hbox{\demo5(x,y)}
-\end{codeexample}
+%The |\d| command has argument specification |O{} U( r()|. The argument type |U| is special to \sseqpages, and is a variant of until that reinserts the delimiting token. This allows the |(| token to also delimit the beginning of the |r()| argument. Note that the argument type |U| is specially added by \sseqpages\ and might be removed in the future if the \LaTeX3 team yells at me or something.
+%    \ExplSyntaxOn
+%    \cs_set_eq:NN \__xparse_add_type_U:w \sseq__xparse_add_type_U:w
+%    \cs_set_eq:NN \__xparse_normalize_type_U:w \sseq__xparse_normalize_type_U:w
+%    \sseq at install@xparse at Uarggrabber
+%    \ExplSyntaxOff
+%\begin{codeexample}[width = 7cm,vbox]
+%\DeclareDocumentCommand {\demo} { O{} U( r() }
+%    {  \#1 = \textcolor{purple}{\{#1\}};
+%       \#2 = \textcolor{purple}{\{#2\}};
+%       \#3 = \textcolor{purple}{\{#3\}}  }
+%\hbox{\demo[opts]page(x,y)}
+%\bigskip
+%\hbox{\demo5(x,y)}
+%\end{codeexample}
 
 The |\structline| and |\changeclasses| commands have argument specification |O{}r()r()|.
 \begin{codeexample}[width = 7cm,vbox]
@@ -1285,12 +1293,12 @@
 \begin{sseqpage}[ y range = {0}{6}, x tick step = 3,
     xscale=0.6, yscale=1.3 ]
 \class(0,2) \class(0,3) \class(3,2)
-\class[tag=h_0^i](0,0)
-\tower[tag=h_0^i]
+\class[tag = h_0^i](0,0)
+\tower[tag = h_0^i]
 \class(0,2) \class(0,1)
 
-\htwotower[tag=h_2 h_0^i](0,0)
-\htwotower[tag=h_2 h_0^i]
+\htwotower[tag = h_2 h_0^i](0,0)
+\htwotower[tag = h_2 h_0^i]
 \end{sseqpage}
 \end{codeexample}
 \end{command}
@@ -1406,7 +1414,7 @@
 
 \begin{codeexample}[width = 7cm]
 % Applies to both of the following sseqs:
-\sseqset{ sseqs = { blue, scale = 0.5 } }%
+\sseqset{ sseqs = { blue, scale = 0.5 } }
 \begin{sseqpage}
 \foreach \x in {0,1}
 \foreach \y in {0,1,2} {
@@ -1500,7 +1508,7 @@
 Inner class labels specifically applies to class labels that are inside the node, outer class labels specifically applies to ones outside it:
 \begin{codeexample}[]
 \begin{sseqpage}[ no axes, classes = { inner sep = 1pt },
-    label distance=2pt,
+    label distance = 2pt,
     outer class labels = { red },
     inner class labels = { blue } ]
 \class["a", "b" above](0,0)
@@ -1523,7 +1531,7 @@
 \begin{codeexample}[width = 6cm]
 \begin{sseqpage}[ label distance = 0.3em,
                   right label distance = 0em,
-                  no axes,yscale = 1.25 ]
+                  no axes, yscale = 1.25 ]
 \class["a" above](0,0)
 \class["b" above right](0,1)
 \class["c" right](1,0)
@@ -1611,8 +1619,8 @@
 \SseqNormalizeMonomialSetVariables{xy}
 \begin{sseqpage}[ class name handler = \SseqNormalizeMonomial,
                   classes = {show name = {right,pin}} ]
-\class[name=xy](0,0)
-\class[name=yxy](0,1)
+\class[name = xy](0,0)
+\class[name = yxy](0,1)
 \class(1,0)
 \structline(yx)(yyx)
 \end{sseqpage}
@@ -2020,7 +2028,7 @@
 The \meta{type} is either |border|, |center|, |frame|, or |none|. |no axes| is a shorthand for |axes type=none|. The |border| type is the default and puts the axes on the bottom and left of the picture. The |center| type by default places the axes to pass through $(0,0)$; this can be modified using the |x axis origin| and |y axis origin| keys. See \example{KRAHSS} and \example{KUHFPSS} for examples where this is used. The |frame| type draws a frame around the entire chart:
 
 \begin{codeexample}[width=6cm]
-\begin{sseqpage}[axes type=frame]
+\begin{sseqpage}[ axes type = frame ]
 \class(0,0)
 \class(3,2)
 \end{sseqpage}

Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanualpreamble.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanualpreamble.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanualpreamble.tex	2019-02-19 22:18:17 UTC (rev 50059)
@@ -1,8 +1,8 @@
 %%
-%% Package: spectralsequences v1.2.1 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2 2017-09-16 2017-09-16
 %% Author: Hood Chatham
 %% Email: hood at mit.edu
-%% Date: 2018-10-08
+%% Date: 2019-02-18
 %% License: Latex Project Public License
 %%
 %% File: spectralsequencesmanualpreamble.tex
@@ -275,7 +275,8 @@
 }
 \def\pgfmanual at pretty@collectquote{%
     \let\pgfmanualprettyprinterhandlecollectedargs=\pgfmanual at pretty@collectargs at finish@collectquote
-    \pgfmanualprettyprintercollectupto"
+    \let\pgfmanualprettyprinterhandlecollectedargsVtwo\pgfmanualprettyprinterhandlecollectedargsVtwo at default
+    \pgfmanualprettyprintercollectupto"%
     	{\pgfmanual at pretty@collectquote at b}%
 }
 \def\pgfmanual at pretty@collectquote at b{%
@@ -289,9 +290,9 @@
 \def\afterpgfmanual at pretty@collectquote{\pgfmanual at pretty@pgfkeys at loop}
 \def\pgfmanual at pretty@collectargs at finish@collectquote#1{\textcolor{keycolor}{\pgfmanualpdfref{""quotes}{"#1"}}}
 \def\pgfmanual at pretty@collectargs at finish@collectquote at b#1{%
+    \def\thekey{#1}%
     \edef\temp{\ifpgfmanualprettyprinterfoundterminator,\fi}%
     \pgfkeys{/codeexample/prettyprint/key name/.code={\textcolor{keycolor}{##1}}}%
-    \def\thekey{#1}%
     \def\leadingtoks{}\def\trailingtoks{}%
     \pulloffstartspaces\pulloffsinglequote\pulloffstartspaces\pulloffstartbrace
     \removetrailingspaces\removetrailingbrace
@@ -315,14 +316,15 @@
 % Redefine point collection to correctly balance the parens
 % Has unfortunate side effect that it now throws an error if parens don't balance.
 \let\pgfmanual at pretty@collectpoint at old\pgfmanual at pretty@collectpoint
-\def\pgfmanual at pretty@collectpoint{\pgfmanual at pretty@collectpoint@(} %)
-\DeclareDocumentCommand\pgfmanual at pretty@collectpoint@{r()}{%
-    \pgfmanualprettyprinterfoundterminatortrue
-	\pgfmanual at pretty@collectargs at finish@collectpoint{#1}%
-	\afterpgfmanual at pretty@collectpoint
-}
+%\def\pgfmanual at pretty@collectpoint{\pgfmanual at pretty@collectpoint@(} %)
+%\DeclareDocumentCommand\pgfmanual at pretty@collectpoint@{r()}{%
+%    \pgfmanualprettyprinterfoundterminatortrue
+%	\pgfmanual at pretty@collectargs at finish@collectpoint{#1}%
+%	\afterpgfmanual at pretty@collectpoint
+%}
 
 
+
 \pgfqkeys{/codeexample/prettyprint}{
 	cs arguments/meta/.initial=1, % Make \meta work correctly in codeexample
 	cs/meta/.code={\textcolor{black}{\meta{\@gobble#1}}},
@@ -399,7 +401,8 @@
             }%
         \fi
     },
-    point/.code={\pgfutil at in@){#1}\ifpgfutil at in@\prettyprintprocesspoint#1\else \textcolor{pointcolor}{\noligs{#1}}\fi},
+    point/.code={%\pgfutil at in@){#1}\ifpgfutil at in@\def\temp{#1}\prettyprintprocesspoint{#1}\else \textcolor{pointcolor}{\noligs{#1}}\fi
+    \textcolor{pointcolor}{\noligs{#1}}},
 	%/cs/.code={\pgfmanualpdfref{#1}{\textcolor{blue}{#1}}},
 %	/cs with args/.code 2 args={\pgfmanualpdfref{#1}{\textcolor{blue}{#1}}\{\pgfmanualprettyprintcode{#2}\pgfmanualclosebrace},
     %/colored
@@ -420,7 +423,7 @@
 \def\codeverb|{\pgfmanual at verb@code}
 
 % balance the braces
-\NewDocumentCommand\prettyprintprocesspoint { r() } {%
+\NewDocumentCommand\prettyprintprocesspoint { m } {%
     \textcolor{pointcolor}{%
         \bgroup
             \let\pgfmanual at pretty@collectpoint\pgfmanual at pretty@collectpoint at old
@@ -440,7 +443,20 @@
   \expandafter\endofcodeexample\expandafter{\examplelines}%
 }
 
+% For some reason it's started duplicating the last line of the file,
+% so I added an illogical extra \ifeof and that seems to fix the problem.
+\def\readexamplelines{
+  \ifeof\examplesource%
+  \else
+    \immediate\read\examplesource to \exampleline
+    \ifeof\examplesource\else  %% Added
+        \edef\examplelines{\unexpanded\@xp{\examplelines}\unexpanded\@xp{\exampleline}}%
+    \fi                        %% Added
+    \expandafter\readexamplelines%
+  \fi
+}
 
+
 \pgfqkeys{/sseqpages}{
     class/class:name/.forward to=/sseqpages/class/name,
     class/class:page/.forward to=/sseqpages/class/page,

Index: trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/sseqmanualtest.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/sseqmanualtest.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/sseqmanualtest.tex	2019-02-19 22:18:17 UTC (rev 50059)

Property changes on: trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/sseqmanualtest.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/spectralsequences/spectralsequences.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/spectralsequences/spectralsequences.sty	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/tex/latex/spectralsequences/spectralsequences.sty	2019-02-19 22:18:17 UTC (rev 50059)
@@ -1,8 +1,8 @@
 %%
-%% Package: spectralsequences v1.2.1
+%% Package: spectralsequences v1.2.2
 %% Author: Hood Chatham
 %% Email: hood at mit.edu
-%% Date: 2018-10-08
+%% Date: 2019-02-18
 %% License: Latex Project Public License
 %%
 %% A package for drawing spectral sequences
@@ -23,7 +23,7 @@
 
 
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{spectralsequences}[2018/10/08 v1.2.1]
+\ProvidesPackage{spectralsequences}[2019/02/18 v1.2.2]
 
 \RequirePackage{tikz}
 \RequirePackage{etoolbox}
@@ -48,6 +48,8 @@
 
 \ifsseq at tooltip
     \RequirePackage{pdfcomment}
+\else
+    \let\ulp at afterend\relax % So that removing the tooltip option doesn't cause the aux file to have an error.
 \fi
 
 \def\sseq at authorname{Hood Chatham}

Modified: trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqcheckdefinitions.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqcheckdefinitions.code.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqcheckdefinitions.code.tex	2019-02-19 22:18:17 UTC (rev 50059)
@@ -1,8 +1,8 @@
 %%
-%% Package: spectralsequences v1.2.1
+%% Package: spectralsequences v1.2.2
 %% Author: Hood Chatham
 %% Email: hood at mit.edu
-%% Date: 2018-10-08
+%% Date: 2019-02-18
 %% License: Latex Project Public License
 %%
 %% File: sseqcheckdefinitions.code.tex
@@ -17,9 +17,11 @@
 \begingroup
 \def\sseq at checkprotecteddef#1{\def\sseq at temp{\sseq at checkdef@{#1}}\afterassignment\sseq at temp\protected\long\@xp\def\csname sseq at check@\sseq at macroname#1\endcsname}
 \def\sseq at checkdef#1{\def\sseq at temp{\sseq at checkdef@{#1}}\afterassignment\sseq at temp\@xp\def\csname sseq at check@\sseq at macroname#1\endcsname}
-\def\sseq at checkdef@#1{\@xp\ifx\csname sseq at check@\sseq at macroname#1\endcsname#1\else
-    \sseq at tempiffalse
-\fi}
+\def\sseq at checkdef@#1{
+    \@xp\ifx\csname sseq at check@\sseq at macroname#1\endcsname#1\else
+        \sseq at tempiffalse
+    \fi
+}
 
 %%
 %% sseqmacromakers.code.tex
@@ -45,9 +47,9 @@
     \sseq at checkprotecteddef \__xparse_normalize_type_u:w #1 {
         \quark_if_recursion_tail_stop_do:nn {#1} { \__xparse_bad_arg_spec:wn }
         \__xparse_normalize_check_lu:N u
-        \__xparse_add_arg_spec:n { u {#1} }
-        \int_incr:N \l__xparse_mandatory_args_int
-        \tl_clear:N \l__xparse_last_delimiters_tl
+        \__xparse_add_arg_spec_mandatory:n { u {#1} } % Oct 17, 2018
+%        \int_incr:N \l__xparse_mandatory_args_int
+%        \tl_clear:N \l__xparse_last_delimiters_tl
         \__xparse_normalize_arg_spec_loop:n
     }
 
@@ -54,14 +56,24 @@
     \ifsseq at tempif
         \global\sseq at patchxparseUtrue
     \else
-        %\sseq at warning{fit-patch-failed}
         \global\sseq at patchxparseUfalse
     \fi
     \sseq at tempiftrue
 }{}
 
+\@ifpackagelater{expl3}{2018/10/01}{
+    % TODO: Check that \peek_meaning and \peek_meaning_remove have the right definitions
+    \sseq at tempiftrue
+    \sseq at checkprotecteddef\peek_meaning_ignore_spaces:NTF#1#2#3{\peek_remove_spaces:n{\peek_meaning:NTF#1{#2}{#3}}}
+    \sseq at checkprotecteddef\peek_meaning_remove_ignore_spaces:NTF#1#2#3{\peek_remove_spaces:n{\peek_meaning_remove:NTF#1{#2}{#3}}}
+    \ifsseq at tempif\else
+        \sseq at error@n{expl3-incompatibility}{\peek_meaning_ignore_spaces:NTF}
+    \fi
+
+}{}
+
 \ExplSyntaxOff
-
+\sseq at tempiftrue
 %%
 %% sseqkeys.code.tex
 %%

Modified: trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqdrawing.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqdrawing.code.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqdrawing.code.tex	2019-02-19 22:18:17 UTC (rev 50059)
@@ -1,8 +1,8 @@
 %%
-%% Package: spectralsequences v1.2.1
+%% Package: spectralsequences v1.2.2
 %% Author: Hood Chatham
 %% Email: hood at mit.edu
-%% Date: 2018-10-08
+%% Date: 2019-02-18
 %% License: Latex Project Public License
 %%
 %% File: sseqdrawing.code.tex

Modified: trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqforeach.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqforeach.code.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqforeach.code.tex	2019-02-19 22:18:17 UTC (rev 50059)
@@ -1,8 +1,8 @@
 %%
-%% Package: spectralsequences v1.2.1
+%% Package: spectralsequences v1.2.2
 %% Author: Hood Chatham
 %% Email: hood at mit.edu
-%% Date: 2018-10-08
+%% Date: 2019-02-18
 %% License: Latex Project Public License
 %%
 %% File: sseqforeach.code.tex

Modified: trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqkeys.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqkeys.code.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqkeys.code.tex	2019-02-19 22:18:17 UTC (rev 50059)
@@ -1,8 +1,8 @@
 %%
-%% Package: spectralsequences v1.2.1
+%% Package: spectralsequences v1.2.2
 %% Author: Hood Chatham
 %% Email: hood at mit.edu
-%% Date: 2018-10-08
+%% Date: 2019-02-18
 %% License: Latex Project Public License
 %%
 %% File: sseqkeys.code.tex
@@ -917,7 +917,6 @@
 \def\sseq at mapfeaturelist#1{\def\\##1{#1}\sseq at featurelist}
 
 \def\sseq at familylist{}
-
 \def\sseq at collections@featuretype{}
 \def\sseqnewfamily#1{%
     % Make five bins associated to the new family, one for each feature type. Add them to storelist with empty defaults.
@@ -932,6 +931,7 @@
 %
     % A flag to decide whether to draw the family. Set/unset using "draw family" and "no family".
     \@xp\sseq at addtostorelist\csname sseq@#1 at maybedraw\endcsname{}
+    \makeatletter % the tikz people added an extra \scantokens into ecode...
     \pgfqkeys{/sseqpages/global}{%
         #1 style/.ecode={%
             \@nx\sseq at addstylecodetomacro\@xp\@nx\sseq at tempcmd@class{/sseqpages/class,/sseqpages/collections/class}{##1}%

Modified: trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqloadstore.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqloadstore.code.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqloadstore.code.tex	2019-02-19 22:18:17 UTC (rev 50059)
@@ -1,8 +1,8 @@
 %%
-%% Package: spectralsequences v1.2.1
+%% Package: spectralsequences v1.2.2
 %% Author: Hood Chatham
 %% Email: hood at mit.edu
-%% Date: 2018-10-08
+%% Date: 2019-02-18
 %% License: Latex Project Public License
 %%
 %% File: sseqloadstore.code.tex

Modified: trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmacromakers.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmacromakers.code.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmacromakers.code.tex	2019-02-19 22:18:17 UTC (rev 50059)
@@ -1,8 +1,8 @@
 %%
-%% Package: spectralsequences v1.2.1
+%% Package: spectralsequences v1.2.2
 %% Author: Hood Chatham
 %% Email: hood at mit.edu
-%% Date: 2018-10-08
+%% Date: 2019-02-18
 %% License: Latex Project Public License
 %%
 %% File: sseqmacromakers.code.tex
@@ -13,7 +13,6 @@
 %%   For the user commands, sets up call stack, thiscall, etc
 %%
 
-
 \ExplSyntaxOn
 
 %%% Install user commands
@@ -30,33 +29,42 @@
 % Capital U argument type is "Until" but puts back the token when it's done.
 
 % So xparse changed a bunch between the copy pushed to CTAN on February 7th and the copy pushed on February 9th
+\newtoks\sseq at patchxparseUnewcode
+\sseq at patchxparseUnewcode{
+    \cs_new_protected:Npn \sseq__xparse_grab_U:w #1#2 \__xparse_run_code:
+      { \sseq__xparse_grab_U_aux:nnN {#1} {#2} \cs_set_protected_nopar:Npn }
+    \cs_new_protected:Npn \sseq__xparse_grab_U_aux:nnN #1#2#3
+      {
+        \tl_set:Nn \l__xparse_signature_tl {#2}
+        \exp_after:wN #3 \l__xparse_fn_tl ##1 #1
+          { \__xparse_add_arg:n {##1} #1 }
+        \l__xparse_fn_tl
+      }
+    \cs_new_protected:Npn \sseq__xparse_add_type_U:w #1
+      {
+        \__xparse_flush_m_args:
+        \__xparse_add_default:
+        \__xparse_add_grabber_mandatory:N U
+        \tl_put_right:Nn \l__xparse_signature_tl { {#1} }
+        \__xparse_prepare_signature:N
+      }
+}
+
+
 \@ifpackagelater{xparse}{2017/02/08}{
-    \ifsseq at patchxparseU
-        % NEW CODE
-        \cs_new_protected:Npn \sseq__xparse_grab_U:w #1#2 \__xparse_run_code:
-          { \sseq__xparse_grab_U_aux:nnN {#1} {#2} \cs_set_protected_nopar:Npn }
-        \cs_new_protected:Npn \sseq__xparse_grab_U_aux:nnN #1#2#3
-          {
-            \tl_set:Nn \l__xparse_signature_tl {#2}
-            \exp_after:wN #3 \l__xparse_fn_tl ##1 #1
-              { \__xparse_add_arg:n {##1} #1 }
-            \l__xparse_fn_tl
-          }
-        \cs_new_protected:Npn \sseq__xparse_add_type_U:w #1
-          {
-            \__xparse_flush_m_args:
-            \__xparse_add_default:
-            \__xparse_add_grabber_mandatory:N U
-            \tl_put_right:Nn \l__xparse_signature_tl { {#1} }
-            \__xparse_prepare_signature:N
-          }
-    \else
-        % Assumptions failed, so just make U give an error (this isn't such a big deal since we don't use it for \d anymore).
-        \cs_new_protected:Npn \sseq__xparse_add_type_U:w #1
-          {
-            \sseq at error{U-xparse-incompatible}
-          }
-    \fi
+    \@ifpackagelater{xparse}{2018/10/17}{ 
+        \ifsseq at patchxparseU
+            \the\sseq at patchxparseUnewcode
+        \else
+            % Assumptions failed, so just make U give an error (this isn't such a big deal since we don't use it for \d anymore).
+            \cs_new_protected:Npn \sseq__xparse_add_type_U:w #1
+              {
+                \sseq at error{U-xparse-incompatible}
+              }
+        \fi
+    }{
+        \the\sseq at patchxparseUnewcode
+    }
 }{
     % OLD CODE
     \cs_new_protected:Npn \sseq__xparse_grab_U:w #1#2 \l__xparse_args_tl
@@ -79,16 +87,34 @@
       }
 }% END \@ifpackagelater
 
+% On 2018/10/01, the commit "Reimplement the ignore_spaces peek functions in terms of peek_spaces" did what it says.
+% Inside of \sseq at DeclareDocumentCommandAs we \let \peek_meaning to \peek_meaning_ignore_spaces
+% which is bad news if \peek_meaning_ignore_spaces is defined in terms of \peek_meaning. This fixes this bug by
+% redefining \peek_meaning_ignore_spaces in terms of a copy of \peek_meaning.
+\@ifpackagelater{expl3}{2018/10/01}{
+    \cs_set_eq:NN\copy_of_peek_meaning:NTF\peek_meaning:NTF
+    \cs_set:Npn\peek_meaning_ignore_spaces:NTF#1#2#3{\peek_remove_spaces:n{\copy_of_peek_meaning:NTF#1{#2}{#3}}}
+    \cs_set_eq:NN\copy_of_peek_meaning_remove:NTF\peek_meaning_remove:NTF
+    \cs_set:Npn\peek_meaning_remove_ignore_spaces:NTF#1#2#3{\peek_remove_spaces:n{\copy_of_peek_meaning_remove:NTF#1{#2}{#3}}}
+}{}
 
-\cs_new_protected:Npn \sseq__xparse_normalize_type_U:w #1 {
-    \quark_if_recursion_tail_stop_do:nn {#1} { \__xparse_bad_arg_spec:wn }
-    \__xparse_normalize_check_lu:N U
-    \__xparse_add_arg_spec:n { U {#1} }
-    \int_incr:N \l__xparse_mandatory_args_int
-    \tl_clear:N \l__xparse_last_delimiters_tl
-    \__xparse_normalize_arg_spec_loop:n
+\@ifpackagelater{xparse}{2018/10/17}{
+    \cs_new_protected:Npn \sseq__xparse_normalize_type_U:w #1 {
+        \quark_if_recursion_tail_stop_do:nn {#1} { \__xparse_bad_arg_spec:wn }
+        \__xparse_normalize_check_lu:N U
+        \__xparse_add_arg_spec_mandatory:n { U {#1} }
+        \__xparse_normalize_arg_spec_loop:n
+    }
+}{ 
+    \cs_new_protected:Npn \sseq__xparse_normalize_type_U:w #1 {
+        \quark_if_recursion_tail_stop_do:nn {#1} { \__xparse_bad_arg_spec:wn }
+        \__xparse_normalize_check_lu:N U
+        \__xparse_add_arg_spec:n { U {#1} }
+        \int_incr:N \l__xparse_mandatory_args_int
+        \tl_clear:N \l__xparse_last_delimiters_tl
+        \__xparse_normalize_arg_spec_loop:n
+    }
 }
-
 % Expandable commands are a menace to us because they define a bunch of helper commands that we then have to keep track of.
 % We are too lazy to do this, so force \l__xparse_grab_expandably_bool to be false.
 % This is backwards compatible (I think) because \bool_set_false:N just performs a chardef (no existence check)

Modified: trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmain.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmain.code.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmain.code.tex	2019-02-19 22:18:17 UTC (rev 50059)
@@ -1,8 +1,8 @@
 %%
-%% Package: spectralsequences v1.2.1
+%% Package: spectralsequences v1.2.2
 %% Author: Hood Chatham
 %% Email: hood at mit.edu
-%% Date: 2018-10-08
+%% Date: 2019-02-18
 %% License: Latex Project Public License
 %%
 %% File: sseqmain.code.tex
@@ -248,7 +248,7 @@
             {from \sseq at xmin\space to \sseq at xmax\space (xmax - xmin = \the\numexpr\sseq at xmax-\sseq at xmin)}
             {\the\sseq at tempcount}% max x range
             {\pgfmathresult}% max xscale
-        \@xp\sseq at break
+        %\@xp\sseq at break
     \fi
 %
     \sseq at tempdimen = \dimexpr \textheight - \sseq at clip@padding at top - \sseq at yaxis@end at extend - \sseq at yaxis@start at extend - \sseq at xaxisgap \relax
@@ -420,60 +420,7 @@
 
 
 
-\ifsseq at draftmode % Okay, have to dummy out all the main commands.
-    % Only add tikz background paths to the savedpaths. We need to draw background paths because they might change the bounding box!
-    \sseq at setsavedpaths@draftmode
-%
-    % All we want to do here is record the range. Have to process options in order to figure out where it is.
-    \sseq at DeclareDocumentCommand\class{or()}{%
-        \begingroup
-        \sseq at loadinputline
-        \IfNoValueT{#2}{\sseq at break}%
-        \sseq at xsetthiscall{\string\class\IfNoValueF{#1}{[\unexpanded{#1}]}\unexpanded{(#2)}}%
-        \sseq at options@firstpassmode
-        \the\sseq at sseqstyle
-        \the\sseq at classstyle
-        \sseq at options@normalmode
-        \IfNoValueF{#1}{%
-            \sseq at processoptions{class}{#1}% Outputs result into \sseq at savedoptioncode
-        }%
-        \sseq at cparsecoord{#2}{}%
-        \sseq at xminmax{\xcoord}{\ycoord}%
-        \sseq at yminmax{\xcoord}{\ycoord}%
-        \sseq at pushstack@\coord % also need the class stack to calculate other \class commands.
-        \sseq at cleanup@obj{partcoord.(\partialcoord).numnodes}%
-        \ifnum\nodenum=\@ne
-            \sseq at obj@gdef{partcoord.(\partialcoord).numnodes}{0}%
-        \fi
-        \sseq at obj@xdef{partcoord.(\partialcoord).numnodes}{\nodenum}%
-        \edef\classname{class.\coord[0]}%
-        \ifx\sseq at class@tag\pgfutil at empty\else
-            \sseq at obj@ifdef{partcoord.(\partialcoord).tag.\sseq at class@tagprefix\sseq at class@tag}{%
-                \sseq at error@xx{class-tag-already-defined}{\sseq at class@tagprefix\sseq at class@tag}{(\partialcoord)}% could be warning
-            }{}%
-            \sseq at cleanup@obj{partcoord.(\partialcoord).tag.\sseq at class@tagprefix\sseq at class@tag}%
-            \sseq at obj@xdef{partcoord.(\partialcoord).tag.\sseq at class@tagprefix\sseq at class@tag}{\nodenum}%
-        \fi
-        \ifx\sseq at class@name\pgfutil at empty\else
-            \sseq at cleanup@obj{\classname.name}
-            \sseq at cleanup@obj{class.namedclass.\detokenize\@xp{\sseq at class@name}}
-            \sseq at namehandler
-            \sseq at obj@xdef{\classname.name}{\sseq at class@name}
-            \sseq at obj@xdef{class.namedclass.\detokenize\@xp{\sseq at class@name}}{\coordnopar}
-        \fi
-        \sseq at breakpoint
-        \endgroup
-    }
 
-    % Now the rest of these can be no-ops
-    \sseq at DeclareDocumentCommand\classoptions{od()}{}
-    \sseq at DeclareDocumentCommand\replaceclass{od()}{}
-    \def\sseq at d@main#1#2#3#4#5{} % makes both \d and \doptions do nothing
-    \sseq at DeclareDocumentCommand\structline{od()d()}{}
-    \sseq at DeclareDocumentCommand\structlineoptions{od()d()}{}
-    \sseq at DeclareDocumentCommand\circleclasses{or()r()}{}
-    \endinput
-\fi
 
 
 \protected\def\sseq at xcoord{}\protected\def\sseq at ycoord{}
@@ -1515,8 +1462,68 @@
 \def\sseq at structline@draw#1{\sseq at eval{\@nx\sseq at drawedge\sseq at obj{#1.source}\sseq at obj{#1.target}{structline}{\@nx\sseq at obj{#1.options}}}}
 
 
+%% This is a dumb place to put this. It has to be after the differential commands are defined.
+\ifsseq at draftmode % Okay, have to dummy out all the main commands.
+    % Only add tikz background paths to the savedpaths. We need to draw background paths because they might change the bounding box!
+    \sseq at setsavedpaths@draftmode
+    \let\sseq at handlequote\@gobble
+%
+    % All we want to do here is record the range. Have to process options in order to figure out where it is.
+    \sseq at DeclareDocumentCommand\class{or()}{%
+        \begingroup
+        \sseq at loadinputline
+        \IfNoValueT{#2}{\sseq at break}%
+        \sseq at xsetthiscall{\string\class\IfNoValueF{#1}{[\unexpanded{#1}]}\unexpanded{(#2)}}%
+        \sseq at options@firstpassmode
+        \the\sseq at sseqstyle
+        \the\sseq at classstyle
+        \sseq at options@normalmode
+        \IfNoValueF{#1}{%
+            \sseq at processoptions{class}{#1}% Outputs result into \sseq at savedoptioncode
+        }%
+        \sseq at cparsecoord{#2}{}%
+        \sseq at xminmax{\xcoord}{\ycoord}%
+        \sseq at yminmax{\xcoord}{\ycoord}%
+        \sseq at pushstack@\coord % also need the class stack to calculate other \class commands.
+        \sseq at cleanup@obj{partcoord.(\partialcoord).numnodes}%
+        \ifnum\nodenum=\@ne
+            \sseq at obj@gdef{partcoord.(\partialcoord).numnodes}{0}%
+        \fi
+        \sseq at obj@xdef{partcoord.(\partialcoord).numnodes}{\nodenum}%
+        \edef\classname{class.\coord[0]}%
+        \ifx\sseq at class@tag\pgfutil at empty\else
+            \sseq at obj@ifdef{partcoord.(\partialcoord).tag.\sseq at class@tagprefix\sseq at class@tag}{%
+                \sseq at error@xx{class-tag-already-defined}{\sseq at class@tagprefix\sseq at class@tag}{(\partialcoord)}% could be warning
+            }{}%
+            \sseq at cleanup@obj{partcoord.(\partialcoord).tag.\sseq at class@tagprefix\sseq at class@tag}%
+            \sseq at obj@xdef{partcoord.(\partialcoord).tag.\sseq at class@tagprefix\sseq at class@tag}{\nodenum}%
+        \fi
+        \ifx\sseq at class@name\pgfutil at empty\else
+            \sseq at cleanup@obj{\classname.name}
+            \sseq at cleanup@obj{class.namedclass.\detokenize\@xp{\sseq at class@name}}
+            \sseq at namehandler
+            \sseq at obj@xdef{\classname.name}{\sseq at class@name}
+            \sseq at obj@xdef{class.namedclass.\detokenize\@xp{\sseq at class@name}}{\coordnopar}
+        \fi
+        \sseq at breakpoint
+        \endgroup
+    }
 
+    % Now the rest of these can be no-ops
+    \sseq at DeclareDocumentCommand\classoptions{od()}{}
+    \sseq at DeclareDocumentCommand\replaceclass{od()}{}
+    \sseq at DeclareDocumentCommand\replacesource{o}{}
+    \sseq at DeclareDocumentCommand\replacetarget{o}{}
+    \def\sseq at d@main#1#2#3#4#5{}
+    \DeclareDocumentCommand \sseq at DrawIfValidDifferential@@ { d() d() } {}
+    \sseq at DeclareDocumentCommand\structline{od()d()}{}
+    \sseq at DeclareDocumentCommand\structlineoptions{od()d()}{}
+    \sseq at DeclareDocumentCommand\circleclasses{or()r()}{}
+    \sseq at DeclareDocumentCommand\gettag{mr()}{}
+    \endinput
+\fi
 
+
 \newcount\sseq at circleclassuid
 \sseq at DeclareDocumentCommand\circleclasses{or()r()}{
     \begingroup
@@ -1616,7 +1623,7 @@
     \sseq at theclasslabelstyle
     \the\sseq at scope@toks
     \sseq at options@normalmode
-    \gdef\sseqlastlabel{#2}    
+    \gdef\sseqlastlabel{#2}
     \sseq at processoptions{class/label}{#2}%
     \sseq at classlabel@handler{#1}% labeltextfn is a private handler for transformations, sseq at classlabel@handler is exposed via "class label handler"
     \ifsseq at classlabel

Modified: trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmessages.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmessages.code.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmessages.code.tex	2019-02-19 22:18:17 UTC (rev 50059)
@@ -1,8 +1,8 @@
 %%
-%% Package: spectralsequences v1.2.1 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2 2017-09-16 2017-09-16
 %% Author: Hood Chatham
 %% Email: hood at mit.edu
-%% Date: 2018-10-08
+%% Date: 2019-02-18
 %% License: Latex Project Public License
 %%
 %% File: sseqmessages.code.tex
@@ -353,7 +353,9 @@
     \msg_critical:nn { spectralsequences } { pgfkeys-patch-failed }
 }
 
+\sseq at newerror@internal{expl3-incompatibility}{Since this version of spectralsequences, the expl3 definition of #1 was updated in an incompatible way.}
 
+
 \sseq at newerror@internal{this-shouldnt-happen}{This branch of the code should be unreachable. Something really weird has happened. Error occurred in #1.}
 
 % Convexity thing

Modified: trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqparsers.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqparsers.code.tex	2019-02-19 11:37:18 UTC (rev 50058)
+++ trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqparsers.code.tex	2019-02-19 22:18:17 UTC (rev 50059)
@@ -1,8 +1,8 @@
 %%
-%% Package: spectralsequences v1.2.1 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2 2017-09-16 2017-09-16
 %% Author: Hood Chatham
 %% Email: hood at mit.edu
-%% Date: 2018-10-08
+%% Date: 2019-02-18
 %% License: Latex Project Public License
 %%
 %% File: sseqparsers.code.tex
@@ -12,6 +12,8 @@
 
 \ExplSyntaxOn
 \let\sseq at NoValue\c__xparse_no_value_tl
+% They changed \c__xparse_no_value_tl to \c_novalue_tl at some point. If the first definition doesn't work, try again.
+\@ifundefined{sseq at NoValue}{\let\sseq at NoValue\c_novalue_tl}{}
 
 \protected\def\sseqparseint#1#2{
     \sseq at ifintexpr{#2+0}{ % +0 here to prevent \lastx from freaking out if it's at the end of #2.
@@ -238,11 +240,13 @@
 %%
 %% #1 -- callback. Will pass control to this function when done.
 %% stores output in \sseq at dpage
+%% It also sets the flag  \sseq at tempif to be
+%%      true if there is an open parenthesis after the page
+%%      false if there is no open parentheis -- so no optional argument for \d.
 \def\sseq at d@grabpage#1{
     \let\sseq at grabdpage@return#1
     \futurelet\testtok\sseq at grabdpage@
 }
-
 \def\sseq at grabdpage@{
     \sseq at tempiftrue
     \ifx\testtok\bgroup
@@ -256,21 +260,27 @@
 
 \def\sseq at grabdpage@group#1{\def\sseq at dpage{#1}\sseq at grabdpage@return}
 
+% I guess this is "norm" because it's the most basic case.
+% Why did I make this so complicated?
 \def\sseq at grabdpage@norm{
     \futurelet\testtok\sseq at grabdpage@norm@
 }
 
+% If the next token is a open group or a new paragraph, we're done collecting and there's no parenthetical argument.
+% If the next token is an open paren, we're done collecting and there is a parenthetical argument.
+% Spaces get added to the token list (I guess that's important because it changes arithmetic sometimes? there must have been an issue at some point)
+% Every other token gets handled by \sseq at grabdpage@token
 \def\sseq at grabdpage@norm@{
     \let\next\sseq at grabdpage@token
-    \ifx\testtok\bgroup
+    \ifx\testtok\bgroup % Open group ==> done collecting page, no optional argument
         \sseq at tempiffalse
         \let\next\sseq at grabdpage@return
     \else
-        \ifx\testtok\par
+        \ifx\testtok\par % new paragraph ==> done collecting page, no optional argument
             \sseq at tempiffalse
             \let\next\sseq at grabdpage@return
         \else
-            \ifx\testtok(
+            \ifx\testtok( % paren ==> done collecting page, optional argument
                 \let\next\sseq at grabdpage@return
             \else
                 \@xp\ifx\space\testtok
@@ -284,19 +294,20 @@
 
 \def\sseq at grabdpage@space{\sseq at d@addto at macro\sseq at dpage{~}\@xp\sseq at grabdpage@norm\romannumeral-`0}
 
+% All other tokens
 \def\sseq at grabdpage@token#1{
-    \ifcat$\@xp\@gobble\string#1$%
+    \ifcat$\@xp\@gobble\string#1$% % If #1 is a non-macro token, just add it to \sseq at dpage
         \sseq at d@addto at macro\sseq at dpage{#1}
         \@xp\sseq at grabdpage@norm
-    \else
-        \ifx#1\end
+    \else % Now it's a macor
+        \ifx#1\end % \end ==> done
             \sseq at tempiffalse
             \@xp\sseq at grabdpage@return\@xp#1\romannumeral-`0
         \else
-            \ifx#1\begin
+            \ifx#1\begin % \begin ==> done
                 \sseq at tempiffalse
                 \@xp\sseq at grabdpage@return\@xp#1\romannumeral-`0
-            \else
+            \else % Otherwise, let's try to expand it.
                 \@xp\sseq at grabdpage@token at fexpcs\@xp#1\romannumeral-`0
             \fi
         \fi
@@ -314,12 +325,12 @@
     \fi
 }
 \def\sseq at grabdpage@token at fexpcs@@@#1{
-    \ifcat$\@xp\@gobble\string#1$%
-        \sseq at d@addto at macro\sseq at dpage{#1}
+    \ifcat$\@xp\@gobble\string#1$% Did it fexpand into a non control sequence token?
+        \sseq at d@addto at macro\sseq at dpage{#1} % If so add it
         \@xp\sseq at grabdpage@norm
     \else
         \sseq at tempiffalse
-        \@xp\sseq at grabdpage@return
+        \@xp\sseq at grabdpage@return\@xp#1% Else remember to put the token back if we're not going to use it!!
     \fi
 }
 
@@ -786,11 +797,12 @@
 % Doesn't do any error checking -- the error checking is done by passing it through \sseq at parsecoord in a non-\edef context.
 % #1 -- a callback. Must be a single command b/c it's an N in \exp_args
 % #2 -- the coordinate
-\cs_new:Npn \exp_last_unbraced:NNNf #1#2#3#4
+\cs_set:Npn \exp_last_unbraced:NNNf #1#2#3#4
   {
     \exp_after:wN #1
     \exp_after:wN #2
-    \exp_after:wN #3 \tex_romannumeral:D -`0 #4
+    \exp_after:wN #3
+    \exp:w \exp_end_continue_f:w #4
   }
 
 \def\sseq at parsecoordex{\exp_last_unbraced:NNNf\sseq at parsecoordex@}



More information about the tex-live-commits mailing list