summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/spectralsequences
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-02-19 22:18:17 +0000
committerKarl Berry <karl@freefriends.org>2019-02-19 22:18:17 +0000
commit6b4f5bdb09d9da774f715d9d66bb900c0db73ab8 (patch)
treec19a225916b5a56f5c54797c3a8000ef8f60eedc /Master/texmf-dist/tex/latex/spectralsequences
parentbfcd4ad93ed54ea7a02a52a790888d1e8a3833cb (diff)
spectralsequences (19feb19)
git-svn-id: svn://tug.org/texlive/trunk@50059 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/spectralsequences')
-rw-r--r--Master/texmf-dist/tex/latex/spectralsequences/spectralsequences.sty8
-rw-r--r--Master/texmf-dist/tex/latex/spectralsequences/sseqcheckdefinitions.code.tex32
-rw-r--r--Master/texmf-dist/tex/latex/spectralsequences/sseqdrawing.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/spectralsequences/sseqforeach.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/spectralsequences/sseqkeys.code.tex6
-rw-r--r--Master/texmf-dist/tex/latex/spectralsequences/sseqloadstore.code.tex4
-rw-r--r--Master/texmf-dist/tex/latex/spectralsequences/sseqmacromakers.code.tex102
-rw-r--r--Master/texmf-dist/tex/latex/spectralsequences/sseqmain.code.tex121
-rw-r--r--Master/texmf-dist/tex/latex/spectralsequences/sseqmessages.code.tex6
-rw-r--r--Master/texmf-dist/tex/latex/spectralsequences/sseqparsers.code.tex44
10 files changed, 196 insertions, 135 deletions
diff --git a/Master/texmf-dist/tex/latex/spectralsequences/spectralsequences.sty b/Master/texmf-dist/tex/latex/spectralsequences/spectralsequences.sty
index 64b7c0f3eb1..10268984bda 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.1
+%% Package: spectralsequences v1.2.2
%% Author: Hood Chatham
%% Email: hood@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@tooltip
\RequirePackage{pdfcomment}
+\else
+ \let\ulp@afterend\relax % So that removing the tooltip option doesn't cause the aux file to have an error.
\fi
\def\sseq@authorname{Hood Chatham}
diff --git a/Master/texmf-dist/tex/latex/spectralsequences/sseqcheckdefinitions.code.tex b/Master/texmf-dist/tex/latex/spectralsequences/sseqcheckdefinitions.code.tex
index b672193681f..5cd92a3bf37 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.1
+%% Package: spectralsequences v1.2.2
%% Author: Hood Chatham
%% Email: hood@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@checkprotecteddef#1{\def\sseq@temp{\sseq@checkdef@{#1}}\afterassignment\sseq@temp\protected\long\@xp\def\csname sseq@check@\sseq@macroname#1\endcsname}
\def\sseq@checkdef#1{\def\sseq@temp{\sseq@checkdef@{#1}}\afterassignment\sseq@temp\@xp\def\csname sseq@check@\sseq@macroname#1\endcsname}
-\def\sseq@checkdef@#1{\@xp\ifx\csname sseq@check@\sseq@macroname#1\endcsname#1\else
- \sseq@tempiffalse
-\fi}
+\def\sseq@checkdef@#1{
+ \@xp\ifx\csname sseq@check@\sseq@macroname#1\endcsname#1\else
+ \sseq@tempiffalse
+ \fi
+}
%%
%% sseqmacromakers.code.tex
@@ -45,23 +47,33 @@
\sseq@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
}
\ifsseq@tempif
\global\sseq@patchxparseUtrue
\else
- %\sseq@warning{fit-patch-failed}
\global\sseq@patchxparseUfalse
\fi
\sseq@tempiftrue
}{}
-\ExplSyntaxOff
+\@ifpackagelater{expl3}{2018/10/01}{
+ % TODO: Check that \peek_meaning and \peek_meaning_remove have the right definitions
+ \sseq@tempiftrue
+ \sseq@checkprotecteddef\peek_meaning_ignore_spaces:NTF#1#2#3{\peek_remove_spaces:n{\peek_meaning:NTF#1{#2}{#3}}}
+ \sseq@checkprotecteddef\peek_meaning_remove_ignore_spaces:NTF#1#2#3{\peek_remove_spaces:n{\peek_meaning_remove:NTF#1{#2}{#3}}}
+ \ifsseq@tempif\else
+ \sseq@error@n{expl3-incompatibility}{\peek_meaning_ignore_spaces:NTF}
+ \fi
+}{}
+
+\ExplSyntaxOff
+\sseq@tempiftrue
%%
%% sseqkeys.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 bf117b91d95..3f3060dc7f1 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.1
+%% Package: spectralsequences v1.2.2
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2018-10-08
+%% Date: 2019-02-18
%% License: Latex Project Public License
%%
%% File: sseqdrawing.code.tex
diff --git a/Master/texmf-dist/tex/latex/spectralsequences/sseqforeach.code.tex b/Master/texmf-dist/tex/latex/spectralsequences/sseqforeach.code.tex
index b37bd0a3553..7b72f6eb19d 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.1
+%% Package: spectralsequences v1.2.2
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2018-10-08
+%% Date: 2019-02-18
%% 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 b2a0a4063d4..1581a516ec9 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.1
+%% Package: spectralsequences v1.2.2
%% Author: Hood Chatham
%% Email: hood@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@mapfeaturelist#1{\def\\##1{#1}\sseq@featurelist}
\def\sseq@familylist{}
-
\def\sseq@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@addtostorelist\csname sseq@#1@maybedraw\endcsname{}
+ \makeatletter % the tikz people added an extra \scantokens into ecode...
\pgfqkeys{/sseqpages/global}{%
#1 style/.ecode={%
\@nx\sseq@addstylecodetomacro\@xp\@nx\sseq@tempcmd@class{/sseqpages/class,/sseqpages/collections/class}{##1}%
diff --git a/Master/texmf-dist/tex/latex/spectralsequences/sseqloadstore.code.tex b/Master/texmf-dist/tex/latex/spectralsequences/sseqloadstore.code.tex
index 2ae85222360..79bd2c0cfce 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.1
+%% Package: spectralsequences v1.2.2
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2018-10-08
+%% Date: 2019-02-18
%% License: Latex Project Public License
%%
%% File: sseqloadstore.code.tex
diff --git a/Master/texmf-dist/tex/latex/spectralsequences/sseqmacromakers.code.tex b/Master/texmf-dist/tex/latex/spectralsequences/sseqmacromakers.code.tex
index b40bc5eb681..b83e34abb73 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.1
+%% Package: spectralsequences v1.2.2
%% Author: Hood Chatham
%% Email: hood@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@patchxparseUnewcode
+\sseq@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@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@error{U-xparse-incompatible}
- }
- \fi
+ \@ifpackagelater{xparse}{2018/10/17}{
+ \ifsseq@patchxparseU
+ \the\sseq@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@error{U-xparse-incompatible}
+ }
+ \fi
+ }{
+ \the\sseq@patchxparseUnewcode
+ }
}{
% OLD CODE
\cs_new_protected:Npn \sseq__xparse_grab_U:w #1#2 \l__xparse_args_tl
@@ -79,16 +87,34 @@
}
}% END \@ifpackagelater
-
-\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
+% On 2018/10/01, the commit "Reimplement the ignore_spaces peek functions in terms of peek_spaces" did what it says.
+% Inside of \sseq@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}}}
+}{}
+
+\@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)
diff --git a/Master/texmf-dist/tex/latex/spectralsequences/sseqmain.code.tex b/Master/texmf-dist/tex/latex/spectralsequences/sseqmain.code.tex
index 772f51fdc78..d9429f2215f 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.1
+%% Package: spectralsequences v1.2.2
%% Author: Hood Chatham
%% Email: hood@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@xmin\space to \sseq@xmax\space (xmax - xmin = \the\numexpr\sseq@xmax-\sseq@xmin)}
{\the\sseq@tempcount}% max x range
{\pgfmathresult}% max xscale
- \@xp\sseq@break
+ %\@xp\sseq@break
\fi
%
\sseq@tempdimen = \dimexpr \textheight - \sseq@clip@padding@top - \sseq@yaxis@end@extend - \sseq@yaxis@start@extend - \sseq@xaxisgap \relax
@@ -420,60 +420,7 @@
-\ifsseq@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@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@DeclareDocumentCommand\class{or()}{%
- \begingroup
- \sseq@loadinputline
- \IfNoValueT{#2}{\sseq@break}%
- \sseq@xsetthiscall{\string\class\IfNoValueF{#1}{[\unexpanded{#1}]}\unexpanded{(#2)}}%
- \sseq@options@firstpassmode
- \the\sseq@sseqstyle
- \the\sseq@classstyle
- \sseq@options@normalmode
- \IfNoValueF{#1}{%
- \sseq@processoptions{class}{#1}% Outputs result into \sseq@savedoptioncode
- }%
- \sseq@cparsecoord{#2}{}%
- \sseq@xminmax{\xcoord}{\ycoord}%
- \sseq@yminmax{\xcoord}{\ycoord}%
- \sseq@pushstack@\coord % also need the class stack to calculate other \class commands.
- \sseq@cleanup@obj{partcoord.(\partialcoord).numnodes}%
- \ifnum\nodenum=\@ne
- \sseq@obj@gdef{partcoord.(\partialcoord).numnodes}{0}%
- \fi
- \sseq@obj@xdef{partcoord.(\partialcoord).numnodes}{\nodenum}%
- \edef\classname{class.\coord[0]}%
- \ifx\sseq@class@tag\pgfutil@empty\else
- \sseq@obj@ifdef{partcoord.(\partialcoord).tag.\sseq@class@tagprefix\sseq@class@tag}{%
- \sseq@error@xx{class-tag-already-defined}{\sseq@class@tagprefix\sseq@class@tag}{(\partialcoord)}% could be warning
- }{}%
- \sseq@cleanup@obj{partcoord.(\partialcoord).tag.\sseq@class@tagprefix\sseq@class@tag}%
- \sseq@obj@xdef{partcoord.(\partialcoord).tag.\sseq@class@tagprefix\sseq@class@tag}{\nodenum}%
- \fi
- \ifx\sseq@class@name\pgfutil@empty\else
- \sseq@cleanup@obj{\classname.name}
- \sseq@cleanup@obj{class.namedclass.\detokenize\@xp{\sseq@class@name}}
- \sseq@namehandler
- \sseq@obj@xdef{\classname.name}{\sseq@class@name}
- \sseq@obj@xdef{class.namedclass.\detokenize\@xp{\sseq@class@name}}{\coordnopar}
- \fi
- \sseq@breakpoint
- \endgroup
- }
- % Now the rest of these can be no-ops
- \sseq@DeclareDocumentCommand\classoptions{od()}{}
- \sseq@DeclareDocumentCommand\replaceclass{od()}{}
- \def\sseq@d@main#1#2#3#4#5{} % makes both \d and \doptions do nothing
- \sseq@DeclareDocumentCommand\structline{od()d()}{}
- \sseq@DeclareDocumentCommand\structlineoptions{od()d()}{}
- \sseq@DeclareDocumentCommand\circleclasses{or()r()}{}
- \endinput
-\fi
\protected\def\sseq@xcoord{}\protected\def\sseq@ycoord{}
@@ -1515,6 +1462,66 @@
\def\sseq@structline@draw#1{\sseq@eval{\@nx\sseq@drawedge\sseq@obj{#1.source}\sseq@obj{#1.target}{structline}{\@nx\sseq@obj{#1.options}}}}
+%% This is a dumb place to put this. It has to be after the differential commands are defined.
+\ifsseq@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@setsavedpaths@draftmode
+ \let\sseq@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@DeclareDocumentCommand\class{or()}{%
+ \begingroup
+ \sseq@loadinputline
+ \IfNoValueT{#2}{\sseq@break}%
+ \sseq@xsetthiscall{\string\class\IfNoValueF{#1}{[\unexpanded{#1}]}\unexpanded{(#2)}}%
+ \sseq@options@firstpassmode
+ \the\sseq@sseqstyle
+ \the\sseq@classstyle
+ \sseq@options@normalmode
+ \IfNoValueF{#1}{%
+ \sseq@processoptions{class}{#1}% Outputs result into \sseq@savedoptioncode
+ }%
+ \sseq@cparsecoord{#2}{}%
+ \sseq@xminmax{\xcoord}{\ycoord}%
+ \sseq@yminmax{\xcoord}{\ycoord}%
+ \sseq@pushstack@\coord % also need the class stack to calculate other \class commands.
+ \sseq@cleanup@obj{partcoord.(\partialcoord).numnodes}%
+ \ifnum\nodenum=\@ne
+ \sseq@obj@gdef{partcoord.(\partialcoord).numnodes}{0}%
+ \fi
+ \sseq@obj@xdef{partcoord.(\partialcoord).numnodes}{\nodenum}%
+ \edef\classname{class.\coord[0]}%
+ \ifx\sseq@class@tag\pgfutil@empty\else
+ \sseq@obj@ifdef{partcoord.(\partialcoord).tag.\sseq@class@tagprefix\sseq@class@tag}{%
+ \sseq@error@xx{class-tag-already-defined}{\sseq@class@tagprefix\sseq@class@tag}{(\partialcoord)}% could be warning
+ }{}%
+ \sseq@cleanup@obj{partcoord.(\partialcoord).tag.\sseq@class@tagprefix\sseq@class@tag}%
+ \sseq@obj@xdef{partcoord.(\partialcoord).tag.\sseq@class@tagprefix\sseq@class@tag}{\nodenum}%
+ \fi
+ \ifx\sseq@class@name\pgfutil@empty\else
+ \sseq@cleanup@obj{\classname.name}
+ \sseq@cleanup@obj{class.namedclass.\detokenize\@xp{\sseq@class@name}}
+ \sseq@namehandler
+ \sseq@obj@xdef{\classname.name}{\sseq@class@name}
+ \sseq@obj@xdef{class.namedclass.\detokenize\@xp{\sseq@class@name}}{\coordnopar}
+ \fi
+ \sseq@breakpoint
+ \endgroup
+ }
+
+ % Now the rest of these can be no-ops
+ \sseq@DeclareDocumentCommand\classoptions{od()}{}
+ \sseq@DeclareDocumentCommand\replaceclass{od()}{}
+ \sseq@DeclareDocumentCommand\replacesource{o}{}
+ \sseq@DeclareDocumentCommand\replacetarget{o}{}
+ \def\sseq@d@main#1#2#3#4#5{}
+ \DeclareDocumentCommand \sseq@DrawIfValidDifferential@@ { d() d() } {}
+ \sseq@DeclareDocumentCommand\structline{od()d()}{}
+ \sseq@DeclareDocumentCommand\structlineoptions{od()d()}{}
+ \sseq@DeclareDocumentCommand\circleclasses{or()r()}{}
+ \sseq@DeclareDocumentCommand\gettag{mr()}{}
+ \endinput
+\fi
\newcount\sseq@circleclassuid
@@ -1616,7 +1623,7 @@
\sseq@theclasslabelstyle
\the\sseq@scope@toks
\sseq@options@normalmode
- \gdef\sseqlastlabel{#2}
+ \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
diff --git a/Master/texmf-dist/tex/latex/spectralsequences/sseqmessages.code.tex b/Master/texmf-dist/tex/latex/spectralsequences/sseqmessages.code.tex
index 3176e81296d..0033bb4a2ed 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.1 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2 2017-09-16 2017-09-16
%% Author: Hood Chatham
%% Email: hood@mit.edu
-%% Date: 2018-10-08
+%% Date: 2019-02-18
%% License: Latex Project Public License
%%
%% File: sseqmessages.code.tex
@@ -353,6 +353,8 @@
\msg_critical:nn { spectralsequences } { pgfkeys-patch-failed }
}
+\sseq@newerror@internal{expl3-incompatibility}{Since this version of spectralsequences, the expl3 definition of #1 was updated in an incompatible way.}
+
\sseq@newerror@internal{this-shouldnt-happen}{This branch of the code should be unreachable. Something really weird has happened. Error occurred in #1.}
diff --git a/Master/texmf-dist/tex/latex/spectralsequences/sseqparsers.code.tex b/Master/texmf-dist/tex/latex/spectralsequences/sseqparsers.code.tex
index fa82704b809..f6376a303cc 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.1 2017-09-16 2017-09-16
+%% Package: spectralsequences v1.2.2 2017-09-16 2017-09-16
%% Author: Hood Chatham
%% Email: hood@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@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@NoValue}{\let\sseq@NoValue\c_novalue_tl}{}
\protected\def\sseqparseint#1#2{
\sseq@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@dpage
+%% It also sets the flag \sseq@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@d@grabpage#1{
\let\sseq@grabdpage@return#1
\futurelet\testtok\sseq@grabdpage@
}
-
\def\sseq@grabdpage@{
\sseq@tempiftrue
\ifx\testtok\bgroup
@@ -256,21 +260,27 @@
\def\sseq@grabdpage@group#1{\def\sseq@dpage{#1}\sseq@grabdpage@return}
+% I guess this is "norm" because it's the most basic case.
+% Why did I make this so complicated?
\def\sseq@grabdpage@norm{
\futurelet\testtok\sseq@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@grabdpage@token
\def\sseq@grabdpage@norm@{
\let\next\sseq@grabdpage@token
- \ifx\testtok\bgroup
+ \ifx\testtok\bgroup % Open group ==> done collecting page, no optional argument
\sseq@tempiffalse
\let\next\sseq@grabdpage@return
\else
- \ifx\testtok\par
+ \ifx\testtok\par % new paragraph ==> done collecting page, no optional argument
\sseq@tempiffalse
\let\next\sseq@grabdpage@return
\else
- \ifx\testtok(
+ \ifx\testtok( % paren ==> done collecting page, optional argument
\let\next\sseq@grabdpage@return
\else
\@xp\ifx\space\testtok
@@ -284,19 +294,20 @@
\def\sseq@grabdpage@space{\sseq@d@addto@macro\sseq@dpage{~}\@xp\sseq@grabdpage@norm\romannumeral-`0}
+% All other tokens
\def\sseq@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@dpage
\sseq@d@addto@macro\sseq@dpage{#1}
\@xp\sseq@grabdpage@norm
- \else
- \ifx#1\end
+ \else % Now it's a macor
+ \ifx#1\end % \end ==> done
\sseq@tempiffalse
\@xp\sseq@grabdpage@return\@xp#1\romannumeral-`0
\else
- \ifx#1\begin
+ \ifx#1\begin % \begin ==> done
\sseq@tempiffalse
\@xp\sseq@grabdpage@return\@xp#1\romannumeral-`0
- \else
+ \else % Otherwise, let's try to expand it.
\@xp\sseq@grabdpage@token@fexpcs\@xp#1\romannumeral-`0
\fi
\fi
@@ -314,12 +325,12 @@
\fi
}
\def\sseq@grabdpage@token@fexpcs@@@#1{
- \ifcat$\@xp\@gobble\string#1$%
- \sseq@d@addto@macro\sseq@dpage{#1}
+ \ifcat$\@xp\@gobble\string#1$% Did it fexpand into a non control sequence token?
+ \sseq@d@addto@macro\sseq@dpage{#1} % If so add it
\@xp\sseq@grabdpage@norm
\else
\sseq@tempiffalse
- \@xp\sseq@grabdpage@return
+ \@xp\sseq@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@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@parsecoordex{\exp_last_unbraced:NNNf\sseq@parsecoordex@}