summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/README.md17
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_2.pdfbin164943 -> 165026 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_3.pdfbin56449 -> 56462 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_2.pdfbin379366 -> 379543 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_3.pdfbin134242 -> 134309 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-tmf_2.pdfbin473373 -> 473548 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-EO2_3.pdfbin136982 -> 137063 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-KO.pdfbin39901 -> 39938 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.pdfbin151478 -> 151674 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.tex4
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-bo-A1.pdfbin93639 -> 93693 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.pdfbin248925 -> 249420 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.tex4
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KF3n.pdfbin96006 -> 95890 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KZ3.pdfbin72664 -> 72677 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.pdfbin27081 -> 27069 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.tex4
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.pdfbin21394 -> 21399 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.tex4
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.pdfbin1232448 -> 1232813 bytes
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.tex11
-rw-r--r--Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanualpreamble.tex6
-rw-r--r--Master/texmf-dist/tex/latex/spectralsequences/spectralsequences.sty12
-rw-r--r--Master/texmf-dist/tex/latex/spectralsequences/sseqcheckdefinitions.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/spectralsequences/sseqdrawing.code.tex282
-rw-r--r--Master/texmf-dist/tex/latex/spectralsequences/sseqforeach.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/spectralsequences/sseqkeys.code.tex26
-rw-r--r--Master/texmf-dist/tex/latex/spectralsequences/sseqloadstore.code.tex7
-rw-r--r--Master/texmf-dist/tex/latex/spectralsequences/sseqmacromakers.code.tex39
-rw-r--r--Master/texmf-dist/tex/latex/spectralsequences/sseqmain.code.tex103
-rw-r--r--Master/texmf-dist/tex/latex/spectralsequences/sseqmessages.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/spectralsequences/sseqparsers.code.tex6
32 files changed, 327 insertions, 210 deletions
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/README.md b/Master/texmf-dist/doc/latex/spectralsequences/README.md
index dbe5c7242a7..250334c312d 100644
--- a/Master/texmf-dist/doc/latex/spectralsequences/README.md
+++ b/Master/texmf-dist/doc/latex/spectralsequences/README.md
@@ -1,9 +1,9 @@
-spectralsequences v1.2.0
+spectralsequences v1.2.1
========================
Author: Hood Chatham
Email: hood@mit.edu
-Date: 2017-12-10
+Date: 2018-10-08
License: All files have the Latex Project Public License.
Description: Print spectral sequence diagrams using pgf/tikz.
@@ -13,7 +13,18 @@ Email me at hood@mit.edu to submit bug reports, request new features, etc. The c
Changelog:
==========
-## [1.2.0]
+
+## [1.2.1] (2018-10-08)
+### Fixed:
+- Tick style didn't work, now it does.
+- Orphan edges are consistently oriented correctly now (reported by Eric Peterson).
+- Fixed name class in copypage
+- Fixed incompatibility with new expl3 version (reported by Eric Peterson). The fix amounts to replacing a \cs_new:Npn with a \cs_gset:Npn.
+
+### Added:
+- \sseqlastlabel
+
+## [1.2.0] (2017-12-10)
### Added:
- \replacesource and \replacetarget
- \copypage
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_2.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_2.pdf
index 04a0a619feb..e702ee7dd82 100644
--- a/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_2.pdf
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_2.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_3.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_3.pdf
index a7723477a85..730e363cdd8 100644
--- a/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_3.pdf
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_2.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_2.pdf
index deee907b930..a5292efcb59 100644
--- a/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_2.pdf
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_2.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_3.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_3.pdf
index defbb06e7b4..7e3ff833566 100644
--- a/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_3.pdf
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-tmf_2.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-tmf_2.pdf
index 58794af7ca6..87434a8cdc4 100644
--- a/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-tmf_2.pdf
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-tmf_2.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-EO2_3.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-EO2_3.pdf
index cb0742f00bf..de7f059a67e 100644
--- a/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-EO2_3.pdf
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-EO2_3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-KO.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-KO.pdf
index a313d8d47b8..6bf98a727b7 100644
--- a/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-KO.pdf
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-KO.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.pdf
index c757bc301ef..d5cff75b375 100644
--- a/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.pdf
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.tex b/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.tex
index ef150f693fd..4a34be94e4c 100644
--- a/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.tex
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.tex
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.1 2017-09-16 2017-09-16
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2018-10-08
%% License: Latex Project Public License
%%
%% File: example_endofVFoS.tex
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-bo-A1.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-bo-A1.pdf
index 03f4e89af6e..f7e8d733b14 100644
--- a/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-bo-A1.pdf
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-bo-A1.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.pdf
index 18074333934..a9e7532a675 100644
--- a/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.pdf
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.tex b/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.tex
index 51e744ae6d5..2ab7badd614 100644
--- a/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.tex
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.tex
@@ -97,7 +97,9 @@
\begin{sseqdata}[name=tmfmayss,y range={0}{8}, x range={0}{25}, degree={-1}{1},
classes=fill,
class labels={below=3pt},differentials=blue,
- class pattern=linear, classes={ tooltip = {(\xcoord,\ycoord)} }, xscale=0.8,
+ class pattern=linear, classes={ tooltip = {(\xcoord,\ycoord)} },
+ xscale=1.48,
+ yscale=2.2,
title = {Page \page},
run off differentials = ->
]
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KF3n.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KF3n.pdf
index 8d79d1095bb..745c5476edf 100644
--- a/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KF3n.pdf
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KF3n.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KZ3.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KZ3.pdf
index f8ce1a4c05b..d71cfeaa763 100644
--- a/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KZ3.pdf
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KZ3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.pdf
index e9ad2e4eb21..43072c438f8 100644
--- a/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.pdf
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.tex b/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.tex
index 6ff28805bd9..07ae39ed4d2 100644
--- a/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.tex
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.tex
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.1 2017-09-16 2017-09-16
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2018-10-08
%% License: Latex Project Public License
%%
%% File: example_hatcher.tex
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.pdf
index 0741ba18156..065073b8f97 100644
--- a/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.pdf
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.tex b/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.tex
index 524fcca5346..4180f52635c 100644
--- a/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.tex
+++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.tex
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.1 2017-09-16 2017-09-16
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2018-10-08
%% License: Latex Project Public License
%%
%% File: example_unstable_ASS_SO.tex
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.pdf b/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.pdf
index 6070eaaa34c..71208ce3fa5 100644
--- a/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.pdf
+++ b/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.tex b/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.tex
index 8ebebb4d312..bb4228f2211 100644
--- a/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.tex
+++ b/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.tex
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.1 2017-09-16 2017-09-16
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2018-10-08
%% License: Latex Project Public License
%%
%% File: spectralsequencesmanual.tex
@@ -19,8 +19,9 @@
% perhaps think about ordering, particularly of "Misc commands" section
% tutorial
% explain / cross reference examples folder?
+% \sseqlastlabel is not currently documented.
%
-\def\version{Version 1.2.0}
+\def\version{Version 1.2.1}
\input spectralsequencesmanualpreamble
@@ -167,7 +168,7 @@ If there are multiple classes at the coordinate |(x,y)| you may specify which us
\begin{sseqpage}[ name = class options example,
right clip padding = 0.6cm ]
\classoptions[red](2,1,2) % Only is red on this page!
-\node[ background, text width = 10em ] at (0.3,-2.2)
+\node[ background ] at (0.3,-2.2)
{\textup{The red class is the problem}};
\end{sseqpage}
\end{codeexample}
@@ -1099,7 +1100,7 @@ Here we define a command which takes an options list, a coordinate, and a single
\end{commandlist}
\begin{command}{\SseqCopyPage\cmdarg{command}\marg{spectral sequence name}\marg{page}}
-This copies all of the classes and structlines on page |\meta{page}| of the spectral sequence named |\meta{spectral sequence name}|, throwing out differentials and tikz primitives. The resulting |\cmdarg{command}| has syntax as if you had used |\DeclareSseqGroup| with no extra arguments -- that is, it takes an optional options list, which are passed to a scope, and an optional coordinate pair.
+This defines \cmdarg{command} to print all of the classes and structlines on page |\meta{page}| of the spectral sequence named |\meta{spectral sequence name}|, throwing out differentials and tikz primitives. The resulting command has syntax as if you had used |\DeclareSseqGroup| with no extra arguments -- that is, it takes an optional options list, which are passed to a scope, and an optional coordinate pair.
\end{command}
\subsection{Families}
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanualpreamble.tex b/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanualpreamble.tex
index 02747497e0c..05d0ce06333 100644
--- a/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanualpreamble.tex
+++ b/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanualpreamble.tex
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.1 2017-09-16 2017-09-16
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2018-10-08
%% License: Latex Project Public License
%%
%% File: spectralsequencesmanualpreamble.tex
@@ -452,7 +452,7 @@
\hypersetup{
- pdftitle={The Spectralsequences Package},
+ pdftitle={The Spectral Sequences Package},
pdfauthor={Hood Chatham},
pdfsubject={A spectral sequence drawing package build on tikz},
pdfkeywords={spectral sequences,algebraic topology,homotopy theory,math,tikz,sseq},
diff --git a/Master/texmf-dist/tex/latex/spectralsequences/spectralsequences.sty b/Master/texmf-dist/tex/latex/spectralsequences/spectralsequences.sty
index 94b16a24f47..64b7c0f3eb1 100644
--- a/Master/texmf-dist/tex/latex/spectralsequences/spectralsequences.sty
+++ b/Master/texmf-dist/tex/latex/spectralsequences/spectralsequences.sty
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.1
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2018-10-08
%% License: Latex Project Public License
%%
%% A package for drawing spectral sequences
@@ -13,21 +13,17 @@
% Try catch blocks
% Make an argument type for the \d page argument.
% deal with xmin, xmax, etc (was there actually a problem we were trying to fix?)
-% Make xmirror not mirror axes labels
%
% Redo sseqerrortest and set up regression test script as part of build (damn I didn't realize we'd lost anything imporant with that find -d disaster)
% Maybe we should add some other regression tests too
%
% Lower priority:
-% speed up off page edges (uses 10% of the draw time for page 0 of tmfass)
-% improve \DoUntilOutOfBounds progress check
% error messages that should be warnings by default?
-% should we specify our favorite conditionals library?
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{spectralsequences}[2017/12/10 v1.2.0]
+\ProvidesPackage{spectralsequences}[2018/10/08 v1.2.1]
\RequirePackage{tikz}
\RequirePackage{etoolbox}
@@ -66,6 +62,7 @@
% These are defined in sseqmain:
\class\classoptions\replaceclass\replacesource\replacetarget
\d\doptions\kill\structline\structlineoptions\circleclasses
+ \lastlabel
% The following are defined in sseqparsers:
\pgfmathparse\isalive\lastx\lasty\lastclass\savestack\restorestack\pushstack\nameclass\tagclass
\parsecoordinate\parsedifferential\getdtarget\gettag
@@ -121,7 +118,6 @@
\newif\ifsseq@error
\newtoks\sseq@temptoks
-\newtoks\sseq@temptoksii
\newtoks\sseq@scope@toks
\newcount\sseq@thepagecount
diff --git a/Master/texmf-dist/tex/latex/spectralsequences/sseqcheckdefinitions.code.tex b/Master/texmf-dist/tex/latex/spectralsequences/sseqcheckdefinitions.code.tex
index aba45169816..b672193681f 100644
--- a/Master/texmf-dist/tex/latex/spectralsequences/sseqcheckdefinitions.code.tex
+++ b/Master/texmf-dist/tex/latex/spectralsequences/sseqcheckdefinitions.code.tex
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.1
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2018-10-08
%% License: Latex Project Public License
%%
%% File: sseqcheckdefinitions.code.tex
diff --git a/Master/texmf-dist/tex/latex/spectralsequences/sseqdrawing.code.tex b/Master/texmf-dist/tex/latex/spectralsequences/sseqdrawing.code.tex
index 9ea6d4397fc..bf117b91d95 100644
--- a/Master/texmf-dist/tex/latex/spectralsequences/sseqdrawing.code.tex
+++ b/Master/texmf-dist/tex/latex/spectralsequences/sseqdrawing.code.tex
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.1
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2018-10-08
%% License: Latex Project Public License
%%
%% File: sseqdrawing.code.tex
@@ -221,32 +221,33 @@
% #6 -- xaxisgap
% #7 -- code
\def\sseq@tickloop@generic#1#2#3#4#5#6#7{
- \sseq@tempx=\numexpr % min
+ \sseq@tempcount=\numexpr % min
\sseq@intdivceiling{#1}{#3} * #3
-
\sseq@intdivceiling{#4}{#3} * #3 + #4
\relax
- \ifnum\sseq@tempx<#1\relax
- \advance\sseq@tempx#3\relax
+ \ifnum\sseq@tempcount<#1\relax
+ \advance\sseq@tempcount#3\relax
\fi
- \sseq@tempxb=\numexpr#2+1\relax % max
+ \sseq@tempcountb=\numexpr#2+1\relax % max
\loop
\bgroup
- \pgftransformshift{\sseq@qpointxy{\sseq@tempx}{#5}}%
+ \pgftransformshift{\sseq@qpointxy{\sseq@tempcount}{#5}}%
\pgftransformshift{\pgfqpoint{0pt}{#6}}
#7
\egroup
- \advance\sseq@tempx#3\relax
- \ifnum\sseq@tempx<\sseq@tempxb\repeat
+ \advance\sseq@tempcount#3\relax
+ \ifnum\sseq@tempcount<\sseq@tempcountb\repeat
}
\def\sseq@drawxticks{%
\sseq@tickloop@generic{\sseq@xmin}{\sseq@xmax}{\sseq@xtickstep}{\sseq@xtickstepoffset}{\sseq@yaxisorigin}{-\sseq@xaxisgap}{
- \sseq@xtickstyle
- \tikz@options
\pgftransformshift{\pgfqpoint{0pt}{-\sseq@xlabelgap}}
- \pgftext{\hbox{$\sseq@xtickfn{\the\sseq@tempx}$}}%
+ \pgftransformresetnontranslations
+ %\@xp\tikzset\@xp{\sseq@xtickstyle}
+ %\pgftext{\tikz@options\tikz@textfont\hbox{$\sseq@xtickfn{\the\sseq@tempx}$}}%
+ \@xp\node\@xp[\sseq@xtickstyle]{\hbox{$\sseq@xtickfn{\the\sseq@tempcount}$}};
}
\ifnum\sseq@xmajortickstep>\z@
\sseq@tickloop@generic{\sseq@xmin}{\sseq@xmax}{\sseq@xmajortickstep}{\sseq@xtickstepoffset}{\sseq@yaxisorigin}{-\sseq@xaxisgap}{
@@ -265,11 +266,11 @@
\def\sseq@drawyticks{%
\sseq@transform@xymirror
\sseq@tickloop@generic{\sseq@ymin}{\sseq@ymax}{\sseq@ytickstep}{\sseq@ytickstepoffset}{\sseq@xaxisorigin}{-\sseq@yaxisgap}{
- \sseq@ytickstyle
- \tikz@options
\pgftransformshift{\pgfqpoint{0pt}{-\sseq@ylabelgap}}
\pgftransformresetnontranslations
- \pgftext{\hbox{$\sseq@ytickfn{\the\sseq@tempx}$}}%
+ %\@xp\tikzset\@xp{\sseq@ytickstyle}
+ %\pgftext{\tikz@options\tikz@textfont\hbox{$\sseq@ytickfn{\the\sseq@tempx}$}}%
+ \@xp\node\@xp[\sseq@ytickstyle]{\hbox{$\sseq@ytickfn{\the\sseq@tempcount}$}};
}
\ifnum\sseq@ymajortickstep>\z@
\sseq@tickloop@generic{\sseq@ymin}{\sseq@ymax}{\sseq@ymajortickstep}{\sseq@ytickstepoffset}{\sseq@xaxisorigin}{-\sseq@yaxisgap}{
@@ -554,16 +555,6 @@
{ \csname sseq@\sseq@classpattern yoffset#1/#2\endcsname }
}}
}
-\def\sseq@class@getparts#1(#2,#3,#4)[#5].{
- \sseq@seterrorannotation@drawing{#1}{#2}{#3}{#4}{#5}
- \def\sseq@thisclassname{class.(#2,#3,#4)}
- \def\sseq@thisnodename{sseq{#2,#3,#4}}
- \def\sseq@thispos{(#2,#3)}
- \edef\sseq@thisposnum{\sseq@obj{class.(#2,#3,#4).n}}
- \def\sseq@thisclassnum{#5}
- \sseq@tempx=#2\relax
- \sseq@tempy=#3\relax
-}
\def\sseq@tooltip@wrapper#1#2{%
\edef\temp{\detokenize\@xpthree{#2}}%
@@ -581,7 +572,36 @@
}
}
-% #1 -- the name of the node object
+
+% #1 -- "class."
+% (#2,#3,#4) -- the class name x,y,n
+% #5 -- generation
+\def\sseq@class@getparts#1(#2,#3,#4)[#5].{
+ \sseq@seterrorannotation@drawing{#1}{#2}{#3}{#4}{#5}
+ \def\sseq@thisnodename{sseq{#2,#3,#4}}
+ \def\sseq@thispos{(#2,#3)}
+ \edef\sseq@thisposnodeindex{\sseq@obj{class.(#2,#3,#4).n}}
+ \edef\sseq@thispostotalnodes{\sseq@obj{partcoord.(#2,#3).numnodes}}
+ \def\sseq@thisclassnum{#5}
+ \sseq@tempx=#2\relax
+ \sseq@tempy=#3\relax
+}
+
+
+% #1 -- the name of the class object given as (x,y,n)[gen]
+% Mandatory fields:
+% partcoord.(x,y).numnodes
+% (x,y,n).num -- number of generations of this class
+% (x,y,n).n -- node n of numnodes (needed to allow node position to differ from creation order).
+% class.page -- the death page of the class
+% Optional fields:
+% class.options -- Options for this class.
+% class.nodetext -- The internal text of the node
+% class.nodetext.options -- options (color, font) to change the nodetext
+% class.labelnodes -- a list of external labels
+% class.name & class.showname -- If there is a name, use it as a label in some way
+% class.tooltip -- Make a tooltip. Fails if the user didn't load package with tooltip option
+% class.needstikz -- Use tikz to draw this node
% Someday I should document this horrible mess of code here
\newif\ifsseq@permanentcycle
\newcount\sseq@totalclassesdrawn
@@ -590,7 +610,13 @@
\global\advance\sseq@totalclassesdrawn\@ne
\begingroup
\sseq@class@getparts#1.
+ % defines:
+ % \sseq@thisnodename -- name we should give the pdfnode
+ % \sseq@thispos -- (x,y)
+ % \sseq@thispostotalnodes -- total number of nodes at (x,y)
+ % \sseq@thisposnodeindex -- index of this node
\sseq@needstikzfalse
+ % Apply first pass styles? TODO: What is this for again?
\sseq@options@firstpassmode
\sseq@thesseqstyle
\sseq@theclassstyle
@@ -606,12 +632,14 @@
\sseq@obj{#1.needstikz}
%
\sseq@outofrangetrue\relax % Mysterious that we need this \relax here...
+ % If we are in range, we'll draw the node, if not we just mark the coordinate.
\ifnum\sseq@tempx<\sseq@xmaxpp\relax\ifnum\sseq@tempx>\sseq@xminmm\relax\ifnum\sseq@tempy<\sseq@ymaxpp\relax\ifnum\sseq@tempy>\sseq@yminmm\relax
\sseq@outofrangefalse
\pgfscope
+ % Finish options setup
\let\tikz@options\pgfutil@empty
\let\tikz@alias=\pgfutil@empty
- \def\pgfkeysdefaultpath{/sseqpages/class/}
+ \def\pgfkeysdefaultpath{/sseqpages/class/}%
\sseq@options@secondpassmode
\sseq@thesseqstyle
\sseq@theclassstyle
@@ -628,15 +656,18 @@
\def\sseq@collections@featuretype{class}
\the\sseq@scope@toks
\sseq@obj{#1.options}
+ % Set up node position coordinate transform
\pgftransformshift{\pgfqpointxy{\numexpr\sseq@tempx +\sseq@xoffset-\sseq@x\relax}{\numexpr\sseq@tempy + \sseq@yoffset-\sseq@y\relax}}
\iftikz@fullytransformed\pgfgettransform{\savetransform}\fi
\pgftransformresetnontranslations
\sseq@globalrotatetransform
+ % Now the origin is at (x,y). Set up class placement offset.
\sseq@classplacementtransform
\sseq@obj@ifdef{#1.offset}{\sseq@obj{#1.offset}}{%
- \sseq@offset{\sseq@thisposnum}{\sseq@obj{partcoord.\sseq@thispos.numnodes}}%
+ \sseq@offset{\sseq@thisposnodeindex}{\sseq@thispostotalnodes}%
}%
\iftikz@fullytransformed\pgfsettransform{\savetransform}\else\pgftransformresetnontranslations\ifsseq@rotatelabels\sseq@globalrotatetransform\fi\fi
+ %
\tikz@options
% the value of \sseq@class@showname comes from styles. If there was a local option with showname, it's stored in #1.showname.
% local value takes priority.
@@ -649,118 +680,129 @@
\sseq@eval{\@nx\sseq@handleclassquotes@inner{\sseq@obj{#1.name}}{\sseq@class@showname}}
}{}
\fi
+ % Okay now we're ready to make the node
\ifsseq@needstikz
+ % The options code above put mode information into \tikz@mode which gets wiped by tikz
\let\sseq@mode\tikz@mode
- \tikzset{every text node part/.code/.expand once={\sseq@globalrotatetransform\sseq@classnodetextoptions{}}}%
\sseq@eval{%
- \@nx\node[/utils/exec={\let\@nx\tikz@mode\@nx\sseq@mode},
- /handlers/first char syntax/the character "/.initial=\@nx\sseq@handlequote
- ] (\sseq@thisnodename) {\unexpanded\@xp{\sseq@classnodetext}}
- [every text node part/.code={}];
+ \@nx\node[%
+ every text node part/.code/.expand once={\sseq@globalrotatetransform\sseq@classnodetextoptions{}},%
+ /utils/exec={\let\@nx\tikz@mode\@nx\sseq@mode}] % Set mode based on outer options
+ (\sseq@thisnodename) {\unexpanded\@xp{\sseq@classnodetext}};%
}%
\else
\tikz@node@textfont
- \sseq@setnodetext{\sseq@classnodetext}{\sseq@classnodetextoptions}
+ \sseq@setnodetext{\sseq@classnodetext}{\sseq@classnodetextoptions}%
\let\tikz@fig@name\sseq@thisnodename
\pgfmultipartnode{\tikz@shape}{\tikz@anchor}{\tikz@fig@name}{\sseq@drawnode}%
- \tikz@alias
+ \tikz@alias % makes extra names for this shape
\fi
- \sseq@obj{#1.labelnodes}
- \sseq@classlabelnodes % classlabelnodes comes from show name
- \sseq@obj@ifdef{#1.tooltip}{
- \pgfpointanchor{\sseq@thisnodename}{west}
- \pgf@xa=\pgf@x
- \pgfpointanchor{\sseq@thisnodename}{south}
- \pgf@ya=\pgf@y
-%
- \pgf@process{\pgfpointdiff{\pgfpointtransformed{\pgfpointanchor{\sseq@thisnodename}{west}}}{\pgfpointtransformed{\pgfpointanchor{\sseq@thisnodename}{east}}}}
- \pgf@xb=\pgf@x
- \pgf@process{\pgfpointdiff{\pgfpointtransformed{\pgfpointanchor{\sseq@thisnodename}{south}}}{\pgfpointtransformed{\pgfpointanchor{\sseq@thisnodename}{north}}}}
- \pgf@yb=\pgf@y
-%
- \setbox\tikz@tempbox=\hbox{
- \pgfinterruptpicture
- \sseqtooltip{\rule{\pgf@xb}{0pt}\rule{0pt}{\pgf@yb}}{\sseq@obj{#1.tooltip}}
- \endpgfinterruptpicture
- }
- {%
- \pgftransformshift{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
- \pgfapproximatenonlineartransformation%
- \pgfqboxsynced{\tikz@tempbox}%
- }%
- }{}
+ \sseq@obj{#1.labelnodes}%
+ \sseq@classlabelnodes % classlabelnodes comes from show name (I guess it can't put them into #1.labelnodes? TODO: why?)
+ \sseq@obj@ifdef{#1.tooltip}{\sseq@dotooltip{#1}}{}%
\endpgfscope
\fi\fi\fi\fi
+ % If the node is out of range, to save time we don't draw anything. However, structlines etc may depend on the out of range node,
+ % so we mark the coordinate.
\ifsseq@outofrange
\sseq@eval{\@nx\pgftransformshift{\@nx\pgfqpointxy{\numexpr\sseq@tempx+\sseq@xoffset-\sseq@x\relax}{\numexpr\sseq@tempy+\sseq@yoffset-\sseq@y\relax}}}%
\pgftransformresetnontranslations
\sseq@globalrotatetransform
\sseq@classplacementtransform
- \sseq@offset{\sseq@thisposnum}{\sseq@obj{partcoord.\sseq@thispos.numnodes}}
+ \sseq@offset{\sseq@thisposnodeindex}{\sseq@thispostotalnodes}%
\pgfcoordinate{\sseq@thisnodename}{\pgfpointorigin}%
\fi
\endgroup
}
+\def\sseq@dotooltip#1{%
+ \pgfpointanchor{\sseq@thisnodename}{west}%
+ \pgf@xa=\pgf@x
+ \pgfpointanchor{\sseq@thisnodename}{south}%
+ \pgf@ya=\pgf@y
+%
+ \pgf@process{\pgfpointdiff{\pgfpointtransformed{\pgfpointanchor{\sseq@thisnodename}{west}}}{\pgfpointtransformed{\pgfpointanchor{\sseq@thisnodename}{east}}}}%
+ \pgf@xb=\pgf@x
+ \pgf@process{\pgfpointdiff{\pgfpointtransformed{\pgfpointanchor{\sseq@thisnodename}{south}}}{\pgfpointtransformed{\pgfpointanchor{\sseq@thisnodename}{north}}}}%
+ \pgf@yb=\pgf@y
+%
+ \setbox\tikz@tempbox=\hbox{%
+ \pgfinterruptpicture
+ \sseqtooltip{\rule{\pgf@xb}{0pt}\rule{0pt}{\pgf@yb}}{\sseq@obj{#1.tooltip}}%
+ \endpgfinterruptpicture
+ }
+ {%
+ \pgftransformshift{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
+ \pgfapproximatenonlineartransformation%
+ \pgfqboxsynced{\tikz@tempbox}%
+ }%
+}
+
% #1 -- label text
% #2 -- options
+% Make the node textbox.
\def\sseq@setnodetext#1#2{%
- \setbox\pgfnodeparttextbox=\hbox{%
- \pgfscope%
- #2
- \tikzset{every text node part/.try}%
- \ifx\tikz@textopacity\pgfutil@empty%
+ \sseq@ifempty{#1}{% more often than not, the node is empty...
+ \setbox\pgfnodeparttextbox=\hbox{}%
+ }{%
+ \setbox\pgfnodeparttextbox=\hbox{%
+ \pgfscope%
+ #2
+ \tikzset{every text node part/.try}%
+ \ifx\tikz@textopacity\pgfutil@empty%
+ \else%
+ \pgfsetfillopacity{\tikz@textopacity}%
+ \pgfsetstrokeopacity{\tikz@textopacity}%
+ \fi%
+ \pgfinterruptpicture
+ \ifx\tikz@text@width\pgfutil@empty%
+ \tikz@textfont%
+ \else%
+ \begingroup%
+ \pgfmathsetlength{\pgf@x}{\tikz@text@width}%
+ \pgfutil@minipage[t]{\pgf@x}\leavevmode\hbox{}%
+ \tikz@textfont%
+ \tikz@text@action%
+ \fi%
+ \ifx\tikz@textcolor\pgfutil@empty%
+ \else%
+ \pgfutil@colorlet{.}{\tikz@textcolor}%
+ \fi%
+ \pgfsetcolor{.}%
+ \tikz@atbegin@node%
+ #1%
+ \tikz@atend@node%
+ \ifx\tikz@text@width\pgfutil@empty%
+ \else%
+ \pgfutil@endminipage%
+ \endgroup%
+ \fi%
+ \endpgfinterruptpicture
+ \endpgfscope%
+ }%
+ \ifx\tikz@text@width\pgfutil@empty%
\else%
- \pgfsetfillopacity{\tikz@textopacity}%
- \pgfsetstrokeopacity{\tikz@textopacity}%
+ \pgfmathsetlength{\pgf@x}{\tikz@text@width}%
+ \wd\pgfnodeparttextbox=\pgf@x%
\fi%
- \pgfinterruptpicture
- \ifx\tikz@text@width\pgfutil@empty%
- \tikz@textfont%
- \else%
- \begingroup%
- \pgfmathsetlength{\pgf@x}{\tikz@text@width}%
- \pgfutil@minipage[t]{\pgf@x}\leavevmode\hbox{}%
- \tikz@textfont%
- \tikz@text@action%
- \fi%
- \ifx\tikz@textcolor\pgfutil@empty%
+ \ifx\tikz@text@height\pgfutil@empty%
\else%
- \pgfutil@colorlet{.}{\tikz@textcolor}%
+ \pgfmathsetlength{\pgf@x}{\tikz@text@height}%
+ \ht\pgfnodeparttextbox=\pgf@x%
\fi%
- \pgfsetcolor{.}%
- \tikz@atbegin@node%
- #1%
- \tikz@atend@node%
- \ifx\tikz@text@width\pgfutil@empty%
- \else%
- \pgfutil@endminipage%
- \endgroup%
- \fi%
- \endpgfinterruptpicture
- \endpgfscope%
- }%
- \ifx\tikz@text@width\pgfutil@empty%
- \else%
- \pgfmathsetlength{\pgf@x}{\tikz@text@width}%
- \wd\pgfnodeparttextbox=\pgf@x%
- \fi%
- \ifx\tikz@text@height\pgfutil@empty%
- \else%
- \pgfmathsetlength{\pgf@x}{\tikz@text@height}%
- \ht\pgfnodeparttextbox=\pgf@x%
- \fi%
- \ifx\tikz@text@depth\pgfutil@empty%
- \else%
- \pgfmathsetlength{\pgf@x}{\tikz@text@depth}%
- \dp\pgfnodeparttextbox=\pgf@x%
- \fi%
+ \ifx\tikz@text@depth\pgfutil@empty%
+ \else%
+ \pgfmathsetlength{\pgf@x}{\tikz@text@depth}%
+ \dp\pgfnodeparttextbox=\pgf@x%
+ \fi%
+ }
}
+
+% A small part of the tikz main loop that has been paired down as much as possible for efficiency.
\def\sseq@drawnode{%
\pgfutil@tempdima=\pgflinewidth%
{%
\tikz@mode%
- %\iftikz@mode@clip \sseq@error@internal{Clip shouldn't happen here, but this error should be caught earlier}{}\fi %
\iftikz@mode@draw%
\iftikz@mode@double%
% Change line width
@@ -793,27 +835,27 @@
% #1 -- label text
% #2 -- options
-\def\sseq@drawlabel#1#2{
+\def\sseq@drawlabel#1#2{%
\bgroup\pgfscope
- \def\tikz@mode{}
+ \def\tikz@mode{}%
\let\sseq@tikz@transform@save\tikz@transform
- \pgfkeyssetvalue{/pgf/inner xsep}{2pt}
- \pgfkeyssetvalue{/pgf/inner ysep}{2pt}
+ \pgfkeyssetvalue{/pgf/inner xsep}{2pt}%
+ \pgfkeyssetvalue{/pgf/inner ysep}{2pt}%
\def\tikz@shape{rectangle}
- \let\tikz@transform\empty % The next line was set up to fix the classlabelstyle glitch
+ \let\tikz@transform\empty % The next line was set up to fix the classlabelstyle glitch (what does this mean?)
\sseq@options@secondpassmode
\sseq@thesseqstyle\sseq@thelabelstyle\sseq@theclasslabelstyle#2
\tikz@options
\pgftransformreset
- \pgftransformshift{\tikz@node@at}
+ \pgftransformshift{\tikz@node@at}%
\tikz@lib@pos@call
\tikz@transform
\tikz@mode
\let\tikz@transform\sseq@tikz@transform@save
- \sseq@setnodetext{\sseq@labeltextfn{#1}}{}
+ \sseq@setnodetext{\sseq@labeltextfn{#1}}{}%
\pgfmultipartnode{\tikz@shape}{\tikz@anchor}{label}{\sseq@drawnode}%
\ifsseq@pin
- \def\sseq@pinoptions{}
+ \def\sseq@pinoptions{}%
\let\tikz@options\empty
\let\tikz@mode\empty
\sseq@thepinstyle
@@ -821,11 +863,11 @@
\sseq@pinoptions
\tikz@options
\tikz@mode
- \sseq@drawedge@findsourcetarget{\tikz@fig@name}{}{label}{}
+ \sseq@drawedge@findsourcetarget{\tikz@fig@name}{}{label}{}%
\pgfpathmoveto{\sseq@sourcecoord}%
\pgfpathlineto{\sseq@targetcoord}%
\sseq@eval{\noexpand\pgfusepath{%
- draw
+ draw,
\iftikz@mode@fill fill,\fi
\iftikz@mode@draw draw,\fi
}}%
@@ -972,6 +1014,7 @@
\pgfpathlineto{\sseq@targetcoord}%
\pgfgetpath\thispath
\pgfusepath{discard}%
+ \pgfintersectionsortbysecondpath
\pgfintersectionofpaths{\pgfsetpath\sseq@theclippath}{\pgfsetpath\thispath}%
\ifcase\pgfintersectionsolutions\relax
% No intersections, but one or both endpoints may be out of range but still in clipping region due to scaling. Add ellipses as appropriate.
@@ -1004,6 +1047,7 @@
\def\sseq@drawedge@handletrickyedge{%
\ifsseq@draworphanedges
+ \pgfintersectionsortbysecondpath
\pgfintersectionofpaths{\pgfsetpath\sseq@therangepath}{\pgfsetpath\thispath}%
\ifnum\pgfintersectionsolutions=\z@
\sseq@drawedgefalse % don't draw orphan edges that never intersect actual range
@@ -1024,8 +1068,8 @@
\def\sseq@drawedge@handleorphan{%
- \def\sseq@sourcecoord{\pgfpointintersectionsolution{1}}%
- \def\sseq@targetcoord{\pgfpointintersectionsolution{2}}%
+ \def\sseq@sourcecoord{\pgfpointintersectionsolution{2}}%
+ \def\sseq@targetcoord{\pgfpointintersectionsolution{1}}%
\edef\temparrowstartspec{\@nx\pgfsetarrowsstart{\csname sseq@runoffarrow@start@\sseq@edgetype @spec\endcsname}}%
\edef\temparrowendspec{\@nx\pgfsetarrowsend{\csname sseq@runoffarrow@end@\sseq@edgetype @spec\endcsname}}%
\pgfcoordinate{tempa}{\sseq@sourcecoord}%
diff --git a/Master/texmf-dist/tex/latex/spectralsequences/sseqforeach.code.tex b/Master/texmf-dist/tex/latex/spectralsequences/sseqforeach.code.tex
index 851f65ab3ac..b37bd0a3553 100644
--- a/Master/texmf-dist/tex/latex/spectralsequences/sseqforeach.code.tex
+++ b/Master/texmf-dist/tex/latex/spectralsequences/sseqforeach.code.tex
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.1
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2018-10-08
%% License: Latex Project Public License
%%
%% File: sseqforeach.code.tex
diff --git a/Master/texmf-dist/tex/latex/spectralsequences/sseqkeys.code.tex b/Master/texmf-dist/tex/latex/spectralsequences/sseqkeys.code.tex
index fcb843904d2..b2a0a4063d4 100644
--- a/Master/texmf-dist/tex/latex/spectralsequences/sseqkeys.code.tex
+++ b/Master/texmf-dist/tex/latex/spectralsequences/sseqkeys.code.tex
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.1
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2018-10-08
%% License: Latex Project Public License
%%
%% File: sseqkeys.code.tex
@@ -30,7 +30,6 @@
\protected\def\sseqset#1{\pgfqkeys{/sseqpages/userstyles}{#1}}
\def\sseq@sseqsetdirectory{/sseqpages/global/default}
-
\def\sseq@set{\pgfqkeys{/sseqpages}}
%%%
@@ -59,7 +58,7 @@
% Lots of options mainly do stuff on the drawing run, but still need to warn the sseq setup algorithms that they're around
% on the first pass. Some only do things on the first pass or only do things on the second pass.
% For example, shifts: shifts apply a coordinate transform on the second pass, but also need to factor into the coordinates of
-% classes etc which are computed at specification time not at draw time. So xshift=2 increases \sseq@x by 2 on it's first pass and
+% classes etc which are computed at specification time not at draw time. So xshift=2 increases \sseq@x by 2 on its first pass and
% applies a coordinate transform by 2cm on the second pass.
% normal mode does the firstpass options now and saves the secondpass options in \sseq@savedoptioncode for later use.
@@ -618,7 +617,7 @@
\pgfutil@in@{--}{#2}\ifpgfutil@in@
\sseq@getnumrange@range#1#2\sseq@nil
\else
- \edef#1{\the\numexpr#2}
+ \sseq@getnumrange@range#1#2--\sseq@infinity\sseq@nil
\fi
}
\def\sseq@getnumrange@range#1#2--#3\sseq@nil{\edef#1{\the\numexpr#2}\@xp\edef\csname\sseq@macroname#1max\endcsname{\the\numexpr#3}}
@@ -1289,19 +1288,24 @@
}
%%% Define global keys setter
+% Most keys are run twice -- once in the "/sseqpages/global" directory and once in the "/sseqpages/global/default" directory
+% The default "default" behavior is to add the option to the "sseq" style.
+% Keys prefixed by a tilde or using an "ignored" handler are only run in the "/sseqpages/global directory".
\gdef\sseq@globalkeys#1{%
\let\sseq@storetilde~%
\def~{}%
- \pgfqkeys{/sseqpages/global}{#1}%
- \sseq@globalkeys@#1,\sseq@nil
+ \pgfqkeys{/sseqpages/global}{#1}% run keys in global directory
+ \sseq@globalkeys@#1,\sseq@nil % handle defaults
\let~\sseq@storetilde
}
\def\sseq@globalkeys@#1,{%
\sseq@tempiftrue
- \sseq@keys@removehandler{#1}%
- \ifsseq@tempif
+ \sseq@keys@removehandler{#1}% this sets \sseq@tempif to be false if it has an ignored handler
+ % It also sets \sseq@temp to be the key.
+ \ifsseq@tempif % If not ignored handler
\pgfkeys{/sseqpages/\sseq@temp/.sseq @ global only}%
+ % Check if no previous default behavior is defined, and if not, define it to pass key to sseqs.
\pgfkeysifdefined{/sseqpages/global/default/\sseq@temp/.@cmd}{}{%
\pgfkeys{/sseqpages/global/default/\sseq@temp/.ecode={\@nx\pgfkeysalso{sseqs={\sseq@temp}}}}%
}%
@@ -1313,6 +1317,7 @@
\sseq@globalkeys@next
}
+% iterate over keys, throwing away empty keys and ones that start with ~.
\def\sseq@globalkeys@next{%
\@ifnextchar\sseq@nil{\@gobble}{%
\@ifnextchar~{\sseq@globalkeys@eatentry}{%
@@ -1323,6 +1328,7 @@
}%
}
+% Handlers to ignore for
\def\sseq@keys@ignorehandlers{%
\\{value forbidden}\\{value required}\\{default}%\\{sseq store in}\\{sseq is if}%
\\{sseq default code}\\{sseq default code 2 args}%
@@ -1386,7 +1392,7 @@
\sseq@thepagecount=\sseq@thepage\relax
\let\page\sseq@thepage
\edef\sseq@thepagemm{\the\numexpr\sseq@thepagecount-1\relax}
- \ifx\sseq@thepagemax\undefined
+ \ifx\sseq@thepagemax\sseq@infinity
\edef\sseq@thepagemaxpp{\the\numexpr\sseq@thepagecount+1\relax}
\else
\ifnum\sseq@thepagemax=\z@
diff --git a/Master/texmf-dist/tex/latex/spectralsequences/sseqloadstore.code.tex b/Master/texmf-dist/tex/latex/spectralsequences/sseqloadstore.code.tex
index 066685a57af..2ae85222360 100644
--- a/Master/texmf-dist/tex/latex/spectralsequences/sseqloadstore.code.tex
+++ b/Master/texmf-dist/tex/latex/spectralsequences/sseqloadstore.code.tex
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.1
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2018-10-08
%% License: Latex Project Public License
%%
%% File: sseqloadstore.code.tex
@@ -91,7 +91,8 @@
\def\sseq@obj@ifundef#1{\@ifundefined{\sseq@obj@fullname{#1}}}
\def\sseq@obj@ifdef#1#2#3{\@ifundefined{\sseq@obj@fullname{#1}}{#3}{#2}}
\def\sseq@obj@useifdef@else#1#2{\@ifundefined{\sseq@obj@fullname{#1}}{#2}{\sseq@obj{#1}}}
-\def\sseq@obj@inc#1{\bgroup\sseq@tempcount\sseq@obj{#1}\relax\advance\sseq@tempcount\@ne\sseq@obj@xdef{#1}{\the\sseq@tempcount}\egroup}
+\def\sseq@obj@inccheckdef#1{\sseq@obj@ifundef{#1}{\sseq@obj@gdef{#1}{1}}{\sseq@obj@inc{#1}}}
+\def\sseq@obj@inc#1{\sseq@obj@xdef{#1}{\the\numexpr\sseq@obj{#1}+1}}
\def\sseq@obj@gaddto#1{\sseq@obj@ifundef{#1}{\sseq@obj@gdef{#1}}{\@xptwo\sseq@g@addto@macro\sseq@obj{#1}}}
\def\sseq@obj@xaddto#1{\sseq@obj@ifundef{#1}{\sseq@obj@xdef{#1}}{\@xptwo\sseq@x@addto@macro\sseq@obj{#1}}}
\def\sseq@obj@xoaddto#1{\sseq@obj@ifundef{#1}{\sseq@obj@xodef{#1}}{\@xp\sseq@g@addto@macro\csname \sseq@obj@fullname{#1}\@xp\endcsname\@xp}}
diff --git a/Master/texmf-dist/tex/latex/spectralsequences/sseqmacromakers.code.tex b/Master/texmf-dist/tex/latex/spectralsequences/sseqmacromakers.code.tex
index ae914721e25..b40bc5eb681 100644
--- a/Master/texmf-dist/tex/latex/spectralsequences/sseqmacromakers.code.tex
+++ b/Master/texmf-dist/tex/latex/spectralsequences/sseqmacromakers.code.tex
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.1
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2018-10-08
%% License: Latex Project Public License
%%
%% File: sseqmacromakers.code.tex
@@ -179,6 +179,9 @@
}
\let\begingroupa\begingroup
\let\begingroupb\begingroup
+\newtoks\sseq@macro@setthiscall@toks
+\newtoks\sseq@macro@defaultarggetters@toks
+
\cs_new_protected:Npn\DeclareSseqCommand#1#2#3{%
\cs_if_exist:cTF { sseq @ builtin @ \cs_to_str:N #1 } {\sseq@error@x{wont-override-system-macro}{\string#1}\sseq@break} {}
\cs_if_free:cT { sseq @ usermacro @ \cs_to_str:N #1 } {
@@ -200,18 +203,18 @@
% You might think we could skip this patching, and it's probably possible.
% However, this is responsible for turning the #'s of catcode other into #'s of catcode arg. I don't have as good of a way to do that.
% Also, this allows me to use \sseq@parseargspec after defining the command, so I don't have to run any error checking inside of it
- % because if the argspec is invalid, \DeclareDocumentCommand will let me know.\sseq@temptoks
+ % because if the argspec is invalid, \DeclareDocumentCommand will let me know.
\cs_if_exist:cTF{ sseq @ usermacro @ \cs_to_str:N #1 @@unique@@ start \c_space_tl code }{
\patchcmd:cnfnn{ sseq @ usermacro @ \cs_to_str:N #1 @@unique@@ start \c_space_tl code }{\endgroup{}}{
\@xp\endgroup
\@xp\begingroupa
- \the\sseq@temptoks
+ \the\sseq@macro@setthiscall@toks
}{}{\sseq@error@x{usermacro-failed-patch}{\string#1}}
\cs_gset_eq:cc { sseq @ usermacro @ \cs_to_str:N #1 @@unique@@ start \c_space_tl code } { sseq @ usermacro @ \cs_to_str:N #1 @@unique@@ start \c_space_tl code}
}{
\pretocmd:cfnn{ sseq @ usermacro @ \cs_to_str:N #1 @@unique@@ start }{
\@xp\begingroupb
- \the\sseq@temptoks
+ \the\sseq@macro@setthiscall@toks
}{}{\sseq@error@x{usermacro-failed-patch}{\string#1}}
}
\cs_gset_eq:cc { sseq @ usermacro @ \cs_to_str:N #1 } { sseq @ usermacro @ \cs_to_str:N #1 }
@@ -257,7 +260,7 @@
\ifsseq@error
\@xp\sseq@break
\fi
- \sseq@temptoks\@xp{\sseq@SseqGroup@argspec} % This gets added to the command by DeclareSseqCommand
+ \sseq@macro@setthiscall@toks\@xp{\sseq@SseqGroup@argspec} % This gets added to the command by DeclareSseqCommand
#1#2{od()}{%
%can't use \sseq@atbeginusermacro@msgsetup until next spot b/c don't know what the whole call looks like yet
\IfNoValueTF{##1}{\def\sseq@options{}}{\def\sseq@options{##1}}%
@@ -267,20 +270,19 @@
\sseqnewgroup@splitcoord##2\sseq@nil
}%
\csname sseq @ usermacro @ \sseq@macroname #2 @ helper \@xp\endcsname\@gobbletwo % This gobble eats the endgroup added by sseqDeclareDocumentCommand
- }%
-
+ }
\sseq@parseargspec@newgroup{#2}{#3}%
% You might think we could skip this patching, and it's probably possible.
% However, this is responsible for turning the #'s of catcode other into #'s of catcode arg. I don't have as good of a way to do that.
\cs_if_exist:cTF{ sseq @ usermacro @ \cs_to_str:N #2 @ helper \c_space_tl code }{
\pretocmd:cfnn { sseq @ usermacro @ \cs_to_str:N #2 @ helper \c_space_tl code }{
- \the\sseq@temptoks
+ \the\sseq@macro@setthiscall@toks
}{}{\sseq@error@x{usermacro-failed-patch}{\string#1}}
% globalize definition:
\cs_gset_eq:cc { sseq @ usermacro @ \cs_to_str:N #2 @ helper \c_space_tl code } { sseq @ usermacro @ \cs_to_str:N #2 @ helper \c_space_tl code }
}{
\pretocmd:cfnn { sseq @ usermacro @ \cs_to_str:N #2 @ helper }{
- \the\sseq@temptoks
+ \the\sseq@macro@setthiscall@toks
}{}{\sseq@error@x{usermacro-failed-patch}{\string#1}}
}
\cs_gset_eq:cc { sseq @ usermacro @ \cs_to_str:N #2 @ helper } { sseq @ usermacro @ \cs_to_str:N #2 @ helper } % globalize definition
@@ -310,20 +312,20 @@
\bgroup\catcode`\#=12\relax
\gdef\sseq@SseqGroup@argspec{
\sseq@eval{\global\sseq@groupargspectoks{\IfNoValueF{#1}{\unexpanded{[#1]}}\IfNoValueF{#2}{\unexpanded{(#2)}}}}
- \@gobbletwo
+ \@gobbletwo % What does this \@gobbletwo do?
}
\gdef\sseq@thearg{#\the\sseq@tempcount}
\egroup
% When there are arguments with default values (O, D, R, G), we need to put them into temporary macros to compare them and see if they are the default value
-% that's what temptoksii is for.
+% that's what \sseq@macro@defaultarggetters@toks is for.
\def\sseq@parseargspec#1#2{%
\sseq@tempcount=\z@
\sseq@temptoks{\@nx#1}% Holds the stuff that goes in \esetthiscall (so most stuff)
- \sseq@temptoksii{}
+ \sseq@macro@defaultarggetters@toks{}
\sseq@parseargspec@#2\sseq@nil
- \sseq@eval{\sseq@temptoks{\the\sseq@temptoksii\@nx\sseq@usermacro@esetthiscall{\the\sseq@temptoks}}}
+ \sseq@eval{\sseq@macro@setthiscall@toks{\the\sseq@macro@defaultarggetters@toks\@nx\sseq@usermacro@esetthiscall{\the\sseq@temptoks}}}
}
% For NewGroup:
@@ -331,12 +333,11 @@
\def\sseq@parseargspec@newgroup#1#2{%
\sseq@tempcount=\z@
\sseq@temptoks{}
- \sseq@temptoksii{}%
+ \sseq@macro@defaultarggetters@toks{}%
\sseq@parseargspec@#2\sseq@nil
- % What's the second temptoks for?
\sseq@eval{
- \sseq@temptoks{
- \the\sseq@temptoksii
+ \sseq@macro@setthiscall@toks{
+ \the\sseq@macro@defaultarggetters@toks
\@nx\sseq@esetthiscall{
\@nx\@nx\@nx#1
\@nx\the\sseq@groupargspectoks
@@ -375,7 +376,7 @@
}
\def\sseq@parseargspec@setargdefault#1{%
- \sseq@e@addto@toks\sseq@temptoksii{%
+ \sseq@e@addto@toks\sseq@macro@defaultarggetters@toks{%
\def\@xp\@nx\csname sseq@parseargspec@temparg\@alph\sseq@tempcount\endcsname{\sseq@thearg}%
\def\@xp\@nx\csname sseq@parseargspec@tempdefault\@alph\sseq@tempcount\endcsname{\unexpanded{#1}}%
}
diff --git a/Master/texmf-dist/tex/latex/spectralsequences/sseqmain.code.tex b/Master/texmf-dist/tex/latex/spectralsequences/sseqmain.code.tex
index d69b28d2041..772f51fdc78 100644
--- a/Master/texmf-dist/tex/latex/spectralsequences/sseqmain.code.tex
+++ b/Master/texmf-dist/tex/latex/spectralsequences/sseqmain.code.tex
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.1
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2018-10-08
%% License: Latex Project Public License
%%
%% File: sseqmain.code.tex
@@ -32,15 +32,15 @@
\def\sseqdata{\@ifnextchar[{\sseqdata@}{\sseqdata@[]}}%}
\def\sseqdata@[#1]{%
- \edef\sseq@restorefont{\font@name}
+ \edef\sseq@restorefont{\font@name}%
\selectfont\nullfont % Avoid space hazards!
- \def\par{}
+ \def\par{}%
%
\ifx\pgfpictureid\@undefined\else %Uh-oh, we're inside tikz.
\sseq@error@n{env-inside-tikz}{sseqdata}\@xp\sseq@breakdataenv
\fi
- \ifsseq@inprogress % Uh-oh, we're already in a sseq environment. This is not good.
+ \ifsseq@inprogress % Uh-oh, we're already in a sseq environment.
\sseq@error@n{env-inside-sseq}{sseqdata}\@xp\sseq@breakdataenv
\fi
\sseq@inprogresstrue
@@ -63,11 +63,11 @@
\sseq@installmacros
\sseq@installmsghooks
\sseq@install@xparse@Uarggrabber
- % The behavior of xmax and xmin is very particular, so it's best not to mess with them.
+ % The behavior of xmax and xmin is very particular, so it's best not to mess with them.
% In particular, they shouldn't be expanded until printing no matter what, but we don't want
% \pgfmathparse to barf on them. \pgfmathparse really doesn't like engine protected macros,
- % so in no case should this be engine protected. (Wish we could test an argument for the presence
- % of engine protected macros). If we try to do that, \sseq@ifpgfmathexpr will break in
+ % so in no case should this be engine protected. (Wish we could test an argument for the presence
+ % of engine protected macros). If we try to do that, \sseq@ifpgfmathexpr will break in
% \sseq@tikzprimitives@coords@notaclass@handle@.
\def\xmin{\protect\sseq@xmin}\def\xmax{\protect\sseq@xmax}
\def\ymin{\protect\sseq@ymin}\def\ymax{\protect\sseq@ymax}
@@ -108,11 +108,11 @@
}
% Just store all the settings
-\def\endsseqdata{
+\def\endsseqdata{%
\let\sseq@error@setup\sseq@error@setup@noinfo
- \sseq@checkend{sseqdata}
+ \sseq@checkend{sseqdata}%
\sseq@savedpaths@add{\endgroup} % prevent some of the two-pass user macros horrors
- \xdef\sseq@restorestyles{\sseq@stylelist}
+ \xdef\sseq@restorestyles{\sseq@stylelist}%
\sseq@storecmds
\ignorespacesafterend
\sseq@breakpoint
@@ -121,9 +121,9 @@
\def\sseqpage{\@ifnextchar[{\sseqpage@}{\sseqpage@[]}} %]
\def\sseqpage@[#1]{%
- \edef\sseq@restorefont{\font@name}
+ \edef\sseq@restorefont{\font@name}%
\selectfont\nullfont % Avoid space hazards!
- \def\par{}
+ \def\par{}%
%
\ifx\pgfpictureid\@undefined\else %Uh-oh, we're inside tikz.
\sseq@error@n{env-inside-tikz}{sseqpage}\@xp\sseq@breakpageenv
@@ -355,7 +355,7 @@
% Shorthand for sseqpage with empty body
\def\printpage[#1]{%
- \begin{sseqpage}[#1]
+ \begin{sseqpage}[#1]%
\end{sseqpage}%
}
@@ -381,8 +381,8 @@
\sseq@savedpaths
\sseq@g@addto@macro#1{\endgroup}
\endgroup
- \@xp\let\csname\sseq@macroname#1 code\endcsname\sseq@copymacro
- \DeclareSseqGroup #1 {} { \csname\sseq@macroname#1 code\endcsname }
+ \@xp\let\csname\sseq@macroname#1 copiedcode\endcsname\sseq@copymacro
+ \DeclareSseqGroup #1 {} { \csname\sseq@macroname#1 copiedcode\endcsname }
\let\sseq@savedpaths\sseq@savedpaths@save
}
@@ -478,6 +478,59 @@
\protected\def\sseq@xcoord{}\protected\def\sseq@ycoord{}
+
+%%% "Quick" commands for "compiled" code.
+\def\sseq@qclass(#1,#2){
+ \sseq@obj@inccheckdef{partcoord.(#1,#2).numnodes}
+ \edef\tempn{\sseq@obj{partcoord.(#1,#2).numnodes}}
+ \edef\classname{class.(#1,#2,\tempn)}
+ \sseq@obj@xdef{\classname.n}{\tempn}
+ \sseq@obj@xdef{\classname.num}{0}
+ \sseq@obj@xdef{\classname[0].page}{\sseq@infinity}
+ \sseq@savedpaths@addclass{class.(#1,#2,\tempn)}
+}
+\def\sseq@qclassnamed(#1,#2)#3{
+ \sseq@qclass(#1,#2)
+ \def\sseq@class@name{#3}
+ \sseq@obj@xdef{\classname[0].name}{\sseq@class@name}
+ \sseq@obj@xdef{class.namedclass.\detokenize\@xp{\sseq@class@name}}{#1,#2,\tempn}
+}
+
+\def\sseq@qdnamed#1(#2)(#3){\sseq@eval{\@nx\sseq@qd#1(\sseq@obj{class.namedclass.\detokenize{#2}})(\sseq@obj{class.namedclass.\detokenize{#3}})}}
+\def\sseq@qd#1(#2,#3,#4)(#5,#6,#7){
+ \bgroup
+ \def\sseq@dname{d.#1(#2,#3,#4)(#5,#6,#7)}
+ \def\source{(#2,#3,#4)}
+ \def\target{(#5,#6,#7)}
+ \sseq@obj@gdef{\sseq@dname.page}{#1}
+ \sseq@obj@gdef{\sseq@dname.source}{(#2,#3,#4)}
+ \sseq@obj@gdef{\sseq@dname.target}{(#5,#6,#7)}
+ \sseq@d@setpageminrec{class.\source}{#1}{source}% automatically handles \sseq@cleanup@obj
+ \sseq@d@setpageminrec{class.\target}{#1}{target}
+ \sseq@savedpaths@adddifferential{\sseq@dname}
+ \egroup
+}
+
+\def\sseq@qstructlinenamed(#1)(#2){\sseq@eval{\@nx\sseq@qstructline(\sseq@obj{class.namedclass.\detokenize{#1}})(\sseq@obj{class.namedclass.\detokenize{#2}})}}
+\def\sseq@qstructline(#1,#2,#3)(#4,#5,#6){
+ \def\source{(#1,#2,#3)}
+ \def\target{(#4,#5,#6)}
+ \sseq@obj@xdef{structline.\source\target.num}{0}
+ \def\sseq@pagemin{0}
+ \edef\sseq@structlinename{structline.\source\target[\sseq@obj{structline.\source\target.num}]}
+ \sseq@cleanup@obj{\sseq@structlinename.page}
+ \sseq@obj@xdef{\sseq@structlinename.page}{\sseq@infinity}
+ \sseq@obj@xdef{\sseq@structlinename.pagemin}{\sseq@pagemin}
+ \sseq@obj@xdef{\sseq@structlinename.source}{\source}
+ \sseq@obj@xdef{\sseq@structlinename.target}{\target}
+ \sseq@class@adddependence{class.\source}{\sseq@structlinename}% If the source or target is already dead, this will set structlinename.page
+ \sseq@class@adddependence{class.\target}{\sseq@structlinename}
+ \sseq@savedpaths@addstructline{structline.\source\target}
+ %\sseq@cleanup@obj{\sseq@structlinename.options}
+ %\sseq@obj@xdef{\sseq@structlinename.options}{\ifsseq@needstikz\@nx\sseq@needstikztrue\fi\unexpanded\@xp{\sseq@savedoptioncode}}
+}
+
+
%%%%%
%%
%% The main commands
@@ -930,7 +983,7 @@
\egroup
}
-% #1 -- class
+% #1 -- object
% #2 -- page
% If there is a class #1 drawn on page #2, set \sseq@gen to be the generation of that class, otherwise set \sseq@gen to be -1.
\def\sseq@obj@pagetogen#1#2{
@@ -1021,20 +1074,20 @@
\def\sseq@d@main#1#2#3#4#5{%
\sseq@options@firstpassmode
- \def\sseq@edgetype{differential}
+ \def\sseq@edgetype{differential}%
\the\sseq@sseqstyle
\the\sseq@edgestyle
\the\sseq@differentialstyle
\the\sseq@scope@toks
\sseq@options@normalmode
- \IfNoValueF{#2}{
+ \IfNoValueF{#2}{%
\sseq@processoptions{differential}{#2}% Outputs result into \sseq@savedoptioncode
- }
+ }%
\sseq@xsetthiscall{\@xp\string\csname#1\endcsname\IfNoValueF{#2}{\unexpanded{[#2]}}\unexpanded{#3}\IfNoValueF{#4}{\unexpanded{(#4)}}\IfNoValueF{#5}{\unexpanded{(#5)}}}%
\sseq@ifintexpr{#3}{%
\sseq@tempcount=\numexpr#3\relax % this is a convenient way to get rid of spaces because #3 has to be a number
}{%
- \sseq@error@n{d-invalid-page}{#3}\sseq@break%
+ \sseq@error@n{d-invalid-page}{#3}\sseq@break
}%
\sseq@eval{\@nx\sseq@dparsecoord{\the\sseq@tempcount}{\IfNoValueTF{#4}{\lastclass0}{\unexpanded{#4}}}{\unexpanded{#5}}}
\sseq@eval{\unexpanded{\csname sseq@d@#1\endcsname{#2}}{\the\sseq@tempcount}}%
@@ -1196,7 +1249,7 @@
\bgroup
\sseq@eval{
\@nx\sseq@drawedge\sseq@obj{#1.source}\sseq@obj{#1.target}{differential}{%
- \@xptwo\@nx\sseq@obj{#1.options}
+ \@nx\sseq@obj{#1.options}
}
}
\egroup
@@ -1295,7 +1348,7 @@
\endgroup
}
\def\sseq@structline@structline{
- \@ifundefined{sseq@structline@pagemax}{}{\sseq@error{structline-no-page-max}}% could be warning
+ \@ifundefined{sseq@structline@pagemax}{}{\ifnum\sseq@structline@pagemax=\sseq@infinity\else \sseq@error{structline-no-page-max}\fi}% could be warning
\ifnum\sseq@pagemin<\sseq@obj{class.\source[\sseq@obj{class.\source.num}].page}\relax\else
\sseq@error{structline-stillborn}
\sseq@breakfi
@@ -1551,6 +1604,7 @@
}
\let\sseq@processlabels\sseq@processlabels@default
+\let\sseqlastlabel\empty
% I can't remember why we need to defer this. If at some point I figure this out, I should explain why here and in the definition of \class...
\def\sseq@handleclassquotes@inner#1#2{%
\begingroup\pgfscope
@@ -1562,6 +1616,7 @@
\sseq@theclasslabelstyle
\the\sseq@scope@toks
\sseq@options@normalmode
+ \gdef\sseqlastlabel{#2}
\sseq@processoptions{class/label}{#2}%
\sseq@classlabel@handler{#1}% labeltextfn is a private handler for transformations, sseq@classlabel@handler is exposed via "class label handler"
\ifsseq@classlabel
@@ -1570,7 +1625,7 @@
\sseq@x@addto@macro\sseq@classlabelnodes{%
\@nx\sseq@drawlabel{%
\sseq@maybemathswitch\unexpanded\@xp{\result}\sseq@maybemathswitch}%
- {% This is setup to prevent a bug where \classoptions and class label style don't work correctly together
+ {% This is set up to prevent a bug where \classoptions and class label style don't work correctly together
\the\sseq@sseqstyle\@nx\the\sseq@sseqstyle@page
\the\sseq@labelstyle\@nx\the\sseq@labelstyle@page
\the\sseq@classlabelstyle\@nx\the\sseq@classlabelstyle@page
diff --git a/Master/texmf-dist/tex/latex/spectralsequences/sseqmessages.code.tex b/Master/texmf-dist/tex/latex/spectralsequences/sseqmessages.code.tex
index bfa11df4e4b..3176e81296d 100644
--- a/Master/texmf-dist/tex/latex/spectralsequences/sseqmessages.code.tex
+++ b/Master/texmf-dist/tex/latex/spectralsequences/sseqmessages.code.tex
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.1 2017-09-16 2017-09-16
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2018-10-08
%% License: Latex Project Public License
%%
%% File: sseqmessages.code.tex
diff --git a/Master/texmf-dist/tex/latex/spectralsequences/sseqparsers.code.tex b/Master/texmf-dist/tex/latex/spectralsequences/sseqparsers.code.tex
index 316d2fe27e2..fa82704b809 100644
--- a/Master/texmf-dist/tex/latex/spectralsequences/sseqparsers.code.tex
+++ b/Master/texmf-dist/tex/latex/spectralsequences/sseqparsers.code.tex
@@ -1,8 +1,8 @@
%%
-%% Package: spectralsequences v1.2.0 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.1 2017-09-16 2017-09-16
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2017-12-10
+%% Date: 2018-10-08
%% License: Latex Project Public License
%%
%% File: sseqparsers.code.tex
@@ -40,7 +40,7 @@
%%% ifpgfmathexpr
-% #1 -- expresion to test
+% #1 -- expression to test
% #2 -- true case
% #3 -- false case
% This tests true if \pgfmathparse{#1} throws an error or not. Luckily, \pgfmathparse pipes its errors through \pgfmath@error so this is easy.