From 6b4f5bdb09d9da774f715d9d66bb900c0db73ab8 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 19 Feb 2019 22:18:17 +0000 Subject: spectralsequences (19feb19) git-svn-id: svn://tug.org/texlive/trunk@50059 c570f23f-e606-0410-a88d-b1316a301751 --- .../latex/spectralsequences/spectralsequences.sty | 8 +- .../sseqcheckdefinitions.code.tex | 32 ++++-- .../latex/spectralsequences/sseqdrawing.code.tex | 4 +- .../latex/spectralsequences/sseqforeach.code.tex | 4 +- .../tex/latex/spectralsequences/sseqkeys.code.tex | 6 +- .../latex/spectralsequences/sseqloadstore.code.tex | 4 +- .../spectralsequences/sseqmacromakers.code.tex | 102 ++++++++++------- .../tex/latex/spectralsequences/sseqmain.code.tex | 121 +++++++++++---------- .../latex/spectralsequences/sseqmessages.code.tex | 6 +- .../latex/spectralsequences/sseqparsers.code.tex | 44 +++++--- 10 files changed, 196 insertions(+), 135 deletions(-) (limited to 'Master/texmf-dist/tex/latex/spectralsequences') 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@} -- cgit v1.2.3