texlive[48866] Master/texmf-dist: spectralsequences (9oct18)
commits+karl at tug.org
commits+karl at tug.org
Tue Oct 9 22:25:44 CEST 2018
Revision: 48866
http://tug.org/svn/texlive?view=revision&revision=48866
Author: karl
Date: 2018-10-09 22:25:43 +0200 (Tue, 09 Oct 2018)
Log Message:
-----------
spectralsequences (9oct18)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/spectralsequences/README.md
trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_2.pdf
trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_3.pdf
trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_2.pdf
trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_3.pdf
trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-tmf_2.pdf
trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-EO2_3.pdf
trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-KO.pdf
trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.pdf
trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.tex
trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-bo-A1.pdf
trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.pdf
trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.tex
trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KF3n.pdf
trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KZ3.pdf
trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.pdf
trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.tex
trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.pdf
trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.tex
trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.pdf
trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.tex
trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanualpreamble.tex
trunk/Master/texmf-dist/tex/latex/spectralsequences/spectralsequences.sty
trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqcheckdefinitions.code.tex
trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqdrawing.code.tex
trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqforeach.code.tex
trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqkeys.code.tex
trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqloadstore.code.tex
trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmacromakers.code.tex
trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmain.code.tex
trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmessages.code.tex
trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqparsers.code.tex
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/README.md 2018-10-09 00:18:10 UTC (rev 48865)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/README.md 2018-10-09 20:25:43 UTC (rev 48866)
@@ -1,9 +1,9 @@
-spectralsequences v1.2.0
+spectralsequences v1.2.1
========================
Author: Hood Chatham
Email: hood at 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,8 +13,19 @@
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
- "name handler" option
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_2.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_3.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_2.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_3.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-tmf_2.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-EO2_3.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-KO.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.tex 2018-10-09 00:18:10 UTC (rev 48865)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.tex 2018-10-09 20:25:43 UTC (rev 48866)
@@ -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 at mit.edu
-%% Date: 2017-12-10
+%% Date: 2018-10-08
%% License: Latex Project Public License
%%
%% File: example_endofVFoS.tex
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-bo-A1.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.tex 2018-10-09 00:18:10 UTC (rev 48865)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.tex 2018-10-09 20:25:43 UTC (rev 48866)
@@ -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 = ->
]
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KF3n.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KZ3.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.tex 2018-10-09 00:18:10 UTC (rev 48865)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.tex 2018-10-09 20:25:43 UTC (rev 48866)
@@ -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 at mit.edu
-%% Date: 2017-12-10
+%% Date: 2018-10-08
%% License: Latex Project Public License
%%
%% File: example_hatcher.tex
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.tex 2018-10-09 00:18:10 UTC (rev 48865)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.tex 2018-10-09 20:25:43 UTC (rev 48866)
@@ -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 at mit.edu
-%% Date: 2017-12-10
+%% Date: 2018-10-08
%% License: Latex Project Public License
%%
%% File: example_unstable_ASS_SO.tex
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.tex 2018-10-09 00:18:10 UTC (rev 48865)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.tex 2018-10-09 20:25:43 UTC (rev 48866)
@@ -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 at 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 @@
\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 @@
\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}
Modified: trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanualpreamble.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanualpreamble.tex 2018-10-09 00:18:10 UTC (rev 48865)
+++ trunk/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanualpreamble.tex 2018-10-09 20:25:43 UTC (rev 48866)
@@ -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 at 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},
Modified: trunk/Master/texmf-dist/tex/latex/spectralsequences/spectralsequences.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/spectralsequences/spectralsequences.sty 2018-10-09 00:18:10 UTC (rev 48865)
+++ trunk/Master/texmf-dist/tex/latex/spectralsequences/spectralsequences.sty 2018-10-09 20:25:43 UTC (rev 48866)
@@ -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 at 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 at error
\newtoks\sseq at temptoks
-\newtoks\sseq at temptoksii
\newtoks\sseq at scope@toks
\newcount\sseq at thepagecount
Modified: trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqcheckdefinitions.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqcheckdefinitions.code.tex 2018-10-09 00:18:10 UTC (rev 48865)
+++ trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqcheckdefinitions.code.tex 2018-10-09 20:25:43 UTC (rev 48866)
@@ -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 at mit.edu
-%% Date: 2017-12-10
+%% Date: 2018-10-08
%% License: Latex Project Public License
%%
%% File: sseqcheckdefinitions.code.tex
Modified: trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqdrawing.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqdrawing.code.tex 2018-10-09 00:18:10 UTC (rev 48865)
+++ trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqdrawing.code.tex 2018-10-09 20:25:43 UTC (rev 48866)
@@ -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 at 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 at tickloop@generic#1#2#3#4#5#6#7{
- \sseq at tempx=\numexpr % min
+ \sseq at tempcount=\numexpr % min
\sseq at intdivceiling{#1}{#3} * #3
-
\sseq at intdivceiling{#4}{#3} * #3 + #4
\relax
- \ifnum\sseq at tempx<#1\relax
- \advance\sseq at tempx#3\relax
+ \ifnum\sseq at tempcount<#1\relax
+ \advance\sseq at tempcount#3\relax
\fi
- \sseq at tempxb=\numexpr#2+1\relax % max
+ \sseq at tempcountb=\numexpr#2+1\relax % max
\loop
\bgroup
- \pgftransformshift{\sseq at qpointxy{\sseq at tempx}{#5}}%
+ \pgftransformshift{\sseq at qpointxy{\sseq at tempcount}{#5}}%
\pgftransformshift{\pgfqpoint{0pt}{#6}}
#7
\egroup
- \advance\sseq at tempx#3\relax
- \ifnum\sseq at tempx<\sseq at tempxb\repeat
+ \advance\sseq at tempcount#3\relax
+ \ifnum\sseq at tempcount<\sseq at tempcountb\repeat
}
\def\sseq at drawxticks{%
\sseq at tickloop@generic{\sseq at xmin}{\sseq at xmax}{\sseq at xtickstep}{\sseq at xtickstepoffset}{\sseq at yaxisorigin}{-\sseq at xaxisgap}{
- \sseq at xtickstyle
- \tikz at options
\pgftransformshift{\pgfqpoint{0pt}{-\sseq at xlabelgap}}
- \pgftext{\hbox{$\sseq at xtickfn{\the\sseq at tempx}$}}%
+ \pgftransformresetnontranslations
+ %\@xp\tikzset\@xp{\sseq at xtickstyle}
+ %\pgftext{\tikz at options\tikz at textfont\hbox{$\sseq at xtickfn{\the\sseq at tempx}$}}%
+ \@xp\node\@xp[\sseq at xtickstyle]{\hbox{$\sseq at xtickfn{\the\sseq at tempcount}$}};
}
\ifnum\sseq at xmajortickstep>\z@
\sseq at tickloop@generic{\sseq at xmin}{\sseq at xmax}{\sseq at xmajortickstep}{\sseq at xtickstepoffset}{\sseq at yaxisorigin}{-\sseq at xaxisgap}{
@@ -265,11 +266,11 @@
\def\sseq at drawyticks{%
\sseq at transform@xymirror
\sseq at tickloop@generic{\sseq at ymin}{\sseq at ymax}{\sseq at ytickstep}{\sseq at ytickstepoffset}{\sseq at xaxisorigin}{-\sseq at yaxisgap}{
- \sseq at ytickstyle
- \tikz at options
\pgftransformshift{\pgfqpoint{0pt}{-\sseq at ylabelgap}}
\pgftransformresetnontranslations
- \pgftext{\hbox{$\sseq at ytickfn{\the\sseq at tempx}$}}%
+ %\@xp\tikzset\@xp{\sseq at ytickstyle}
+ %\pgftext{\tikz at options\tikz at textfont\hbox{$\sseq at ytickfn{\the\sseq at tempx}$}}%
+ \@xp\node\@xp[\sseq at ytickstyle]{\hbox{$\sseq at ytickfn{\the\sseq at tempcount}$}};
}
\ifnum\sseq at ymajortickstep>\z@
\sseq at tickloop@generic{\sseq at ymin}{\sseq at ymax}{\sseq at ymajortickstep}{\sseq at ytickstepoffset}{\sseq at xaxisorigin}{-\sseq at yaxisgap}{
@@ -554,16 +555,6 @@
{ \csname sseq@\sseq at classpattern yoffset#1/#2\endcsname }
}}
}
-\def\sseq at class@getparts#1(#2,#3,#4)[#5].{
- \sseq at seterrorannotation@drawing{#1}{#2}{#3}{#4}{#5}
- \def\sseq at thisclassname{class.(#2,#3,#4)}
- \def\sseq at thisnodename{sseq{#2,#3,#4}}
- \def\sseq at thispos{(#2,#3)}
- \edef\sseq at thisposnum{\sseq at obj{class.(#2,#3,#4).n}}
- \def\sseq at thisclassnum{#5}
- \sseq at tempx=#2\relax
- \sseq at tempy=#3\relax
-}
\def\sseq at 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 at class@getparts#1(#2,#3,#4)[#5].{
+ \sseq at seterrorannotation@drawing{#1}{#2}{#3}{#4}{#5}
+ \def\sseq at thisnodename{sseq{#2,#3,#4}}
+ \def\sseq at thispos{(#2,#3)}
+ \edef\sseq at thisposnodeindex{\sseq at obj{class.(#2,#3,#4).n}}
+ \edef\sseq at thispostotalnodes{\sseq at obj{partcoord.(#2,#3).numnodes}}
+ \def\sseq at thisclassnum{#5}
+ \sseq at tempx=#2\relax
+ \sseq at 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 at permanentcycle
\newcount\sseq at totalclassesdrawn
@@ -590,7 +610,13 @@
\global\advance\sseq at totalclassesdrawn\@ne
\begingroup
\sseq at class@getparts#1.
+ % defines:
+ % \sseq at thisnodename -- name we should give the pdfnode
+ % \sseq at thispos -- (x,y)
+ % \sseq at thispostotalnodes -- total number of nodes at (x,y)
+ % \sseq at thisposnodeindex -- index of this node
\sseq at needstikzfalse
+ % Apply first pass styles? TODO: What is this for again?
\sseq at options@firstpassmode
\sseq at thesseqstyle
\sseq at theclassstyle
@@ -606,12 +632,14 @@
\sseq at obj{#1.needstikz}
%
\sseq at 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 at tempx<\sseq at xmaxpp\relax\ifnum\sseq at tempx>\sseq at xminmm\relax\ifnum\sseq at tempy<\sseq at ymaxpp\relax\ifnum\sseq at tempy>\sseq at yminmm\relax
\sseq at outofrangefalse
\pgfscope
+ % Finish options setup
\let\tikz at options\pgfutil at empty
\let\tikz at alias=\pgfutil at empty
- \def\pgfkeysdefaultpath{/sseqpages/class/}
+ \def\pgfkeysdefaultpath{/sseqpages/class/}%
\sseq at options@secondpassmode
\sseq at thesseqstyle
\sseq at theclassstyle
@@ -628,15 +656,18 @@
\def\sseq at collections@featuretype{class}
\the\sseq at scope@toks
\sseq at obj{#1.options}
+ % Set up node position coordinate transform
\pgftransformshift{\pgfqpointxy{\numexpr\sseq at tempx +\sseq at xoffset-\sseq at x\relax}{\numexpr\sseq at tempy + \sseq at yoffset-\sseq at y\relax}}
\iftikz at fullytransformed\pgfgettransform{\savetransform}\fi
\pgftransformresetnontranslations
\sseq at globalrotatetransform
+ % Now the origin is at (x,y). Set up class placement offset.
\sseq at classplacementtransform
\sseq at obj@ifdef{#1.offset}{\sseq at obj{#1.offset}}{%
- \sseq at offset{\sseq at thisposnum}{\sseq at obj{partcoord.\sseq at thispos.numnodes}}%
+ \sseq at offset{\sseq at thisposnodeindex}{\sseq at thispostotalnodes}%
}%
\iftikz at fullytransformed\pgfsettransform{\savetransform}\else\pgftransformresetnontranslations\ifsseq at rotatelabels\sseq at globalrotatetransform\fi\fi
+ %
\tikz at options
% the value of \sseq at 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 at eval{\@nx\sseq at handleclassquotes@inner{\sseq at obj{#1.name}}{\sseq at class@showname}}
}{}
\fi
+ % Okay now we're ready to make the node
\ifsseq at needstikz
+ % The options code above put mode information into \tikz at mode which gets wiped by tikz
\let\sseq at mode\tikz at mode
- \tikzset{every text node part/.code/.expand once={\sseq at globalrotatetransform\sseq at classnodetextoptions{}}}%
\sseq at eval{%
- \@nx\node[/utils/exec={\let\@nx\tikz at mode\@nx\sseq at mode},
- /handlers/first char syntax/the character "/.initial=\@nx\sseq at handlequote
- ] (\sseq at thisnodename) {\unexpanded\@xp{\sseq at classnodetext}}
- [every text node part/.code={}];
+ \@nx\node[%
+ every text node part/.code/.expand once={\sseq at globalrotatetransform\sseq at classnodetextoptions{}},%
+ /utils/exec={\let\@nx\tikz at mode\@nx\sseq at mode}] % Set mode based on outer options
+ (\sseq at thisnodename) {\unexpanded\@xp{\sseq at classnodetext}};%
}%
\else
\tikz at node@textfont
- \sseq at setnodetext{\sseq at classnodetext}{\sseq at classnodetextoptions}
+ \sseq at setnodetext{\sseq at classnodetext}{\sseq at classnodetextoptions}%
\let\tikz at fig@name\sseq at thisnodename
\pgfmultipartnode{\tikz at shape}{\tikz at anchor}{\tikz at fig@name}{\sseq at drawnode}%
- \tikz at alias
+ \tikz at alias % makes extra names for this shape
\fi
- \sseq at obj{#1.labelnodes}
- \sseq at classlabelnodes % classlabelnodes comes from show name
- \sseq at obj@ifdef{#1.tooltip}{
- \pgfpointanchor{\sseq at thisnodename}{west}
- \pgf at xa=\pgf at x
- \pgfpointanchor{\sseq at thisnodename}{south}
- \pgf at ya=\pgf at y
-%
- \pgf at process{\pgfpointdiff{\pgfpointtransformed{\pgfpointanchor{\sseq at thisnodename}{west}}}{\pgfpointtransformed{\pgfpointanchor{\sseq at thisnodename}{east}}}}
- \pgf at xb=\pgf at x
- \pgf at process{\pgfpointdiff{\pgfpointtransformed{\pgfpointanchor{\sseq at thisnodename}{south}}}{\pgfpointtransformed{\pgfpointanchor{\sseq at thisnodename}{north}}}}
- \pgf at yb=\pgf at y
-%
- \setbox\tikz at tempbox=\hbox{
- \pgfinterruptpicture
- \sseqtooltip{\rule{\pgf at xb}{0pt}\rule{0pt}{\pgf at yb}}{\sseq at obj{#1.tooltip}}
- \endpgfinterruptpicture
- }
- {%
- \pgftransformshift{\pgfqpoint{\pgf at xa}{\pgf at ya}}%
- \pgfapproximatenonlineartransformation%
- \pgfqboxsynced{\tikz at tempbox}%
- }%
- }{}
+ \sseq at obj{#1.labelnodes}%
+ \sseq at classlabelnodes % classlabelnodes comes from show name (I guess it can't put them into #1.labelnodes? TODO: why?)
+ \sseq at obj@ifdef{#1.tooltip}{\sseq at 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 at outofrange
\sseq at eval{\@nx\pgftransformshift{\@nx\pgfqpointxy{\numexpr\sseq at tempx+\sseq at xoffset-\sseq at x\relax}{\numexpr\sseq at tempy+\sseq at yoffset-\sseq at y\relax}}}%
\pgftransformresetnontranslations
\sseq at globalrotatetransform
\sseq at classplacementtransform
- \sseq at offset{\sseq at thisposnum}{\sseq at obj{partcoord.\sseq at thispos.numnodes}}
+ \sseq at offset{\sseq at thisposnodeindex}{\sseq at thispostotalnodes}%
\pgfcoordinate{\sseq at thisnodename}{\pgfpointorigin}%
\fi
\endgroup
}
+\def\sseq at dotooltip#1{%
+ \pgfpointanchor{\sseq at thisnodename}{west}%
+ \pgf at xa=\pgf at x
+ \pgfpointanchor{\sseq at thisnodename}{south}%
+ \pgf at ya=\pgf at y
+%
+ \pgf at process{\pgfpointdiff{\pgfpointtransformed{\pgfpointanchor{\sseq at thisnodename}{west}}}{\pgfpointtransformed{\pgfpointanchor{\sseq at thisnodename}{east}}}}%
+ \pgf at xb=\pgf at x
+ \pgf at process{\pgfpointdiff{\pgfpointtransformed{\pgfpointanchor{\sseq at thisnodename}{south}}}{\pgfpointtransformed{\pgfpointanchor{\sseq at thisnodename}{north}}}}%
+ \pgf at yb=\pgf at y
+%
+ \setbox\tikz at tempbox=\hbox{%
+ \pgfinterruptpicture
+ \sseqtooltip{\rule{\pgf at xb}{0pt}\rule{0pt}{\pgf at yb}}{\sseq at obj{#1.tooltip}}%
+ \endpgfinterruptpicture
+ }
+ {%
+ \pgftransformshift{\pgfqpoint{\pgf at xa}{\pgf at ya}}%
+ \pgfapproximatenonlineartransformation%
+ \pgfqboxsynced{\tikz at tempbox}%
+ }%
+}
+
% #1 -- label text
% #2 -- options
+% Make the node textbox.
\def\sseq at setnodetext#1#2{%
- \setbox\pgfnodeparttextbox=\hbox{%
- \pgfscope%
- #2
- \tikzset{every text node part/.try}%
- \ifx\tikz at textopacity\pgfutil at empty%
+ \sseq at 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 at textopacity\pgfutil at empty%
+ \else%
+ \pgfsetfillopacity{\tikz at textopacity}%
+ \pgfsetstrokeopacity{\tikz at textopacity}%
+ \fi%
+ \pgfinterruptpicture
+ \ifx\tikz at text@width\pgfutil at empty%
+ \tikz at textfont%
+ \else%
+ \begingroup%
+ \pgfmathsetlength{\pgf at x}{\tikz at text@width}%
+ \pgfutil at minipage[t]{\pgf at x}\leavevmode\hbox{}%
+ \tikz at textfont%
+ \tikz at text@action%
+ \fi%
+ \ifx\tikz at textcolor\pgfutil at empty%
+ \else%
+ \pgfutil at colorlet{.}{\tikz at textcolor}%
+ \fi%
+ \pgfsetcolor{.}%
+ \tikz at atbegin@node%
+ #1%
+ \tikz at atend@node%
+ \ifx\tikz at text@width\pgfutil at empty%
+ \else%
+ \pgfutil at endminipage%
+ \endgroup%
+ \fi%
+ \endpgfinterruptpicture
+ \endpgfscope%
+ }%
+ \ifx\tikz at text@width\pgfutil at empty%
\else%
- \pgfsetfillopacity{\tikz at textopacity}%
- \pgfsetstrokeopacity{\tikz at textopacity}%
+ \pgfmathsetlength{\pgf at x}{\tikz at text@width}%
+ \wd\pgfnodeparttextbox=\pgf at x%
\fi%
- \pgfinterruptpicture
- \ifx\tikz at text@width\pgfutil at empty%
- \tikz at textfont%
- \else%
- \begingroup%
- \pgfmathsetlength{\pgf at x}{\tikz at text@width}%
- \pgfutil at minipage[t]{\pgf at x}\leavevmode\hbox{}%
- \tikz at textfont%
- \tikz at text@action%
- \fi%
- \ifx\tikz at textcolor\pgfutil at empty%
+ \ifx\tikz at text@height\pgfutil at empty%
\else%
- \pgfutil at colorlet{.}{\tikz at textcolor}%
+ \pgfmathsetlength{\pgf at x}{\tikz at text@height}%
+ \ht\pgfnodeparttextbox=\pgf at x%
\fi%
- \pgfsetcolor{.}%
- \tikz at atbegin@node%
- #1%
- \tikz at atend@node%
- \ifx\tikz at text@width\pgfutil at empty%
- \else%
- \pgfutil at endminipage%
- \endgroup%
- \fi%
- \endpgfinterruptpicture
- \endpgfscope%
- }%
- \ifx\tikz at text@width\pgfutil at empty%
- \else%
- \pgfmathsetlength{\pgf at x}{\tikz at text@width}%
- \wd\pgfnodeparttextbox=\pgf at x%
- \fi%
- \ifx\tikz at text@height\pgfutil at empty%
- \else%
- \pgfmathsetlength{\pgf at x}{\tikz at text@height}%
- \ht\pgfnodeparttextbox=\pgf at x%
- \fi%
- \ifx\tikz at text@depth\pgfutil at empty%
- \else%
- \pgfmathsetlength{\pgf at x}{\tikz at text@depth}%
- \dp\pgfnodeparttextbox=\pgf at x%
- \fi%
+ \ifx\tikz at text@depth\pgfutil at empty%
+ \else%
+ \pgfmathsetlength{\pgf at x}{\tikz at text@depth}%
+ \dp\pgfnodeparttextbox=\pgf at x%
+ \fi%
+ }
}
+
+% A small part of the tikz main loop that has been paired down as much as possible for efficiency.
\def\sseq at drawnode{%
\pgfutil at tempdima=\pgflinewidth%
{%
\tikz at mode%
- %\iftikz at mode@clip \sseq at error@internal{Clip shouldn't happen here, but this error should be caught earlier}{}\fi %
\iftikz at mode@draw%
\iftikz at mode@double%
% Change line width
@@ -793,27 +835,27 @@
% #1 -- label text
% #2 -- options
-\def\sseq at drawlabel#1#2{
+\def\sseq at drawlabel#1#2{%
\bgroup\pgfscope
- \def\tikz at mode{}
+ \def\tikz at mode{}%
\let\sseq at tikz@transform at save\tikz at transform
- \pgfkeyssetvalue{/pgf/inner xsep}{2pt}
- \pgfkeyssetvalue{/pgf/inner ysep}{2pt}
+ \pgfkeyssetvalue{/pgf/inner xsep}{2pt}%
+ \pgfkeyssetvalue{/pgf/inner ysep}{2pt}%
\def\tikz at shape{rectangle}
- \let\tikz at transform\empty % The next line was set up to fix the classlabelstyle glitch
+ \let\tikz at transform\empty % The next line was set up to fix the classlabelstyle glitch (what does this mean?)
\sseq at options@secondpassmode
\sseq at thesseqstyle\sseq at thelabelstyle\sseq at theclasslabelstyle#2
\tikz at options
\pgftransformreset
- \pgftransformshift{\tikz at node@at}
+ \pgftransformshift{\tikz at node@at}%
\tikz at lib@pos at call
\tikz at transform
\tikz at mode
\let\tikz at transform\sseq at tikz@transform at save
- \sseq at setnodetext{\sseq at labeltextfn{#1}}{}
+ \sseq at setnodetext{\sseq at labeltextfn{#1}}{}%
\pgfmultipartnode{\tikz at shape}{\tikz at anchor}{label}{\sseq at drawnode}%
\ifsseq at pin
- \def\sseq at pinoptions{}
+ \def\sseq at pinoptions{}%
\let\tikz at options\empty
\let\tikz at mode\empty
\sseq at thepinstyle
@@ -821,11 +863,11 @@
\sseq at pinoptions
\tikz at options
\tikz at mode
- \sseq at drawedge@findsourcetarget{\tikz at fig@name}{}{label}{}
+ \sseq at drawedge@findsourcetarget{\tikz at fig@name}{}{label}{}%
\pgfpathmoveto{\sseq at sourcecoord}%
\pgfpathlineto{\sseq at targetcoord}%
\sseq at eval{\noexpand\pgfusepath{%
- draw
+ draw,
\iftikz at mode@fill fill,\fi
\iftikz at mode@draw draw,\fi
}}%
@@ -972,6 +1014,7 @@
\pgfpathlineto{\sseq at targetcoord}%
\pgfgetpath\thispath
\pgfusepath{discard}%
+ \pgfintersectionsortbysecondpath
\pgfintersectionofpaths{\pgfsetpath\sseq at 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 at drawedge@handletrickyedge{%
\ifsseq at draworphanedges
+ \pgfintersectionsortbysecondpath
\pgfintersectionofpaths{\pgfsetpath\sseq at therangepath}{\pgfsetpath\thispath}%
\ifnum\pgfintersectionsolutions=\z@
\sseq at drawedgefalse % don't draw orphan edges that never intersect actual range
@@ -1024,8 +1068,8 @@
\def\sseq at drawedge@handleorphan{%
- \def\sseq at sourcecoord{\pgfpointintersectionsolution{1}}%
- \def\sseq at targetcoord{\pgfpointintersectionsolution{2}}%
+ \def\sseq at sourcecoord{\pgfpointintersectionsolution{2}}%
+ \def\sseq at targetcoord{\pgfpointintersectionsolution{1}}%
\edef\temparrowstartspec{\@nx\pgfsetarrowsstart{\csname sseq at runoffarrow@start@\sseq at edgetype @spec\endcsname}}%
\edef\temparrowendspec{\@nx\pgfsetarrowsend{\csname sseq at runoffarrow@end@\sseq at edgetype @spec\endcsname}}%
\pgfcoordinate{tempa}{\sseq at sourcecoord}%
Modified: trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqforeach.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqforeach.code.tex 2018-10-09 00:18:10 UTC (rev 48865)
+++ trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqforeach.code.tex 2018-10-09 20:25:43 UTC (rev 48866)
@@ -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 at mit.edu
-%% Date: 2017-12-10
+%% Date: 2018-10-08
%% License: Latex Project Public License
%%
%% File: sseqforeach.code.tex
Modified: trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqkeys.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqkeys.code.tex 2018-10-09 00:18:10 UTC (rev 48865)
+++ trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqkeys.code.tex 2018-10-09 20:25:43 UTC (rev 48866)
@@ -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 at 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 at sseqsetdirectory{/sseqpages/global/default}
-
\def\sseq at 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 at 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 at 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 at savedoptioncode for later use.
@@ -618,7 +617,7 @@
\pgfutil at in@{--}{#2}\ifpgfutil at in@
\sseq at getnumrange@range#1#2\sseq at nil
\else
- \edef#1{\the\numexpr#2}
+ \sseq at getnumrange@range#1#2--\sseq at infinity\sseq at nil
\fi
}
\def\sseq at getnumrange@range#1#2--#3\sseq at nil{\edef#1{\the\numexpr#2}\@xp\edef\csname\sseq at 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 at globalkeys#1{%
\let\sseq at storetilde~%
\def~{}%
- \pgfqkeys{/sseqpages/global}{#1}%
- \sseq at globalkeys@#1,\sseq at nil
+ \pgfqkeys{/sseqpages/global}{#1}% run keys in global directory
+ \sseq at globalkeys@#1,\sseq at nil % handle defaults
\let~\sseq at storetilde
}
\def\sseq at globalkeys@#1,{%
\sseq at tempiftrue
- \sseq at keys@removehandler{#1}%
- \ifsseq at tempif
+ \sseq at keys@removehandler{#1}% this sets \sseq at tempif to be false if it has an ignored handler
+ % It also sets \sseq at temp to be the key.
+ \ifsseq at tempif % If not ignored handler
\pgfkeys{/sseqpages/\sseq at 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 at temp/. at cmd}{}{%
\pgfkeys{/sseqpages/global/default/\sseq at temp/.ecode={\@nx\pgfkeysalso{sseqs={\sseq at temp}}}}%
}%
@@ -1313,6 +1317,7 @@
\sseq at globalkeys@next
}
+% iterate over keys, throwing away empty keys and ones that start with ~.
\def\sseq at globalkeys@next{%
\@ifnextchar\sseq at nil{\@gobble}{%
\@ifnextchar~{\sseq at globalkeys@eatentry}{%
@@ -1323,6 +1328,7 @@
}%
}
+% Handlers to ignore for
\def\sseq at 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 at thepagecount=\sseq at thepage\relax
\let\page\sseq at thepage
\edef\sseq at thepagemm{\the\numexpr\sseq at thepagecount-1\relax}
- \ifx\sseq at thepagemax\undefined
+ \ifx\sseq at thepagemax\sseq at infinity
\edef\sseq at thepagemaxpp{\the\numexpr\sseq at thepagecount+1\relax}
\else
\ifnum\sseq at thepagemax=\z@
Modified: trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqloadstore.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqloadstore.code.tex 2018-10-09 00:18:10 UTC (rev 48865)
+++ trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqloadstore.code.tex 2018-10-09 20:25:43 UTC (rev 48866)
@@ -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 at 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 at obj@ifundef#1{\@ifundefined{\sseq at obj@fullname{#1}}}
\def\sseq at obj@ifdef#1#2#3{\@ifundefined{\sseq at obj@fullname{#1}}{#3}{#2}}
\def\sseq at obj@useifdef at else#1#2{\@ifundefined{\sseq at obj@fullname{#1}}{#2}{\sseq at obj{#1}}}
-\def\sseq at obj@inc#1{\bgroup\sseq at tempcount\sseq at obj{#1}\relax\advance\sseq at tempcount\@ne\sseq at obj@xdef{#1}{\the\sseq at tempcount}\egroup}
+\def\sseq at obj@inccheckdef#1{\sseq at obj@ifundef{#1}{\sseq at obj@gdef{#1}{1}}{\sseq at obj@inc{#1}}}
+\def\sseq at obj@inc#1{\sseq at obj@xdef{#1}{\the\numexpr\sseq at obj{#1}+1}}
\def\sseq at obj@gaddto#1{\sseq at obj@ifundef{#1}{\sseq at obj@gdef{#1}}{\@xptwo\sseq at g@addto at macro\sseq at obj{#1}}}
\def\sseq at obj@xaddto#1{\sseq at obj@ifundef{#1}{\sseq at obj@xdef{#1}}{\@xptwo\sseq at x@addto at macro\sseq at obj{#1}}}
\def\sseq at obj@xoaddto#1{\sseq at obj@ifundef{#1}{\sseq at obj@xodef{#1}}{\@xp\sseq at g@addto at macro\csname \sseq at obj@fullname{#1}\@xp\endcsname\@xp}}
Modified: trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmacromakers.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmacromakers.code.tex 2018-10-09 00:18:10 UTC (rev 48865)
+++ trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmacromakers.code.tex 2018-10-09 20:25:43 UTC (rev 48866)
@@ -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 at 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 at macro@setthiscall at toks
+\newtoks\sseq at macro@defaultarggetters at toks
+
\cs_new_protected:Npn\DeclareSseqCommand#1#2#3{%
\cs_if_exist:cTF { sseq @ builtin @ \cs_to_str:N #1 } {\sseq at error@x{wont-override-system-macro}{\string#1}\sseq at 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 at 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 at 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 at temptoks
+ \the\sseq at macro@setthiscall at toks
}{}{\sseq at 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 at temptoks
+ \the\sseq at macro@setthiscall at toks
}{}{\sseq at 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 at error
\@xp\sseq at break
\fi
- \sseq at temptoks\@xp{\sseq at SseqGroup@argspec} % This gets added to the command by DeclareSseqCommand
+ \sseq at macro@setthiscall at toks\@xp{\sseq at SseqGroup@argspec} % This gets added to the command by DeclareSseqCommand
#1#2{od()}{%
%can't use \sseq at atbeginusermacro@msgsetup until next spot b/c don't know what the whole call looks like yet
\IfNoValueTF{##1}{\def\sseq at options{}}{\def\sseq at options{##1}}%
@@ -267,20 +270,19 @@
\sseqnewgroup at splitcoord##2\sseq at nil
}%
\csname sseq @ usermacro @ \sseq at macroname #2 @ helper \@xp\endcsname\@gobbletwo % This gobble eats the endgroup added by sseqDeclareDocumentCommand
- }%
-
+ }
\sseq at 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 at temptoks
+ \the\sseq at macro@setthiscall at toks
}{}{\sseq at 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 at temptoks
+ \the\sseq at macro@setthiscall at toks
}{}{\sseq at 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,7 +312,7 @@
\bgroup\catcode`\#=12\relax
\gdef\sseq at SseqGroup@argspec{
\sseq at eval{\global\sseq at groupargspectoks{\IfNoValueF{#1}{\unexpanded{[#1]}}\IfNoValueF{#2}{\unexpanded{(#2)}}}}
- \@gobbletwo
+ \@gobbletwo % What does this \@gobbletwo do?
}
\gdef\sseq at thearg{#\the\sseq at tempcount}
\egroup
@@ -317,13 +319,13 @@
% 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 at macro@defaultarggetters at toks is for.
\def\sseq at parseargspec#1#2{%
\sseq at tempcount=\z@
\sseq at temptoks{\@nx#1}% Holds the stuff that goes in \esetthiscall (so most stuff)
- \sseq at temptoksii{}
+ \sseq at macro@defaultarggetters at toks{}
\sseq at parseargspec@#2\sseq at nil
- \sseq at eval{\sseq at temptoks{\the\sseq at temptoksii\@nx\sseq at usermacro@esetthiscall{\the\sseq at temptoks}}}
+ \sseq at eval{\sseq at macro@setthiscall at toks{\the\sseq at macro@defaultarggetters at toks\@nx\sseq at usermacro@esetthiscall{\the\sseq at temptoks}}}
}
% For NewGroup:
@@ -331,12 +333,11 @@
\def\sseq at parseargspec@newgroup#1#2{%
\sseq at tempcount=\z@
\sseq at temptoks{}
- \sseq at temptoksii{}%
+ \sseq at macro@defaultarggetters at toks{}%
\sseq at parseargspec@#2\sseq at nil
- % What's the second temptoks for?
\sseq at eval{
- \sseq at temptoks{
- \the\sseq at temptoksii
+ \sseq at macro@setthiscall at toks{
+ \the\sseq at macro@defaultarggetters at toks
\@nx\sseq at esetthiscall{
\@nx\@nx\@nx#1
\@nx\the\sseq at groupargspectoks
@@ -375,7 +376,7 @@
}
\def\sseq at parseargspec@setargdefault#1{%
- \sseq at e@addto at toks\sseq at temptoksii{%
+ \sseq at e@addto at toks\sseq at macro@defaultarggetters at toks{%
\def\@xp\@nx\csname sseq at parseargspec@temparg\@alph\sseq at tempcount\endcsname{\sseq at thearg}%
\def\@xp\@nx\csname sseq at parseargspec@tempdefault\@alph\sseq at tempcount\endcsname{\unexpanded{#1}}%
}
Modified: trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmain.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmain.code.tex 2018-10-09 00:18:10 UTC (rev 48865)
+++ trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmain.code.tex 2018-10-09 20:25:43 UTC (rev 48866)
@@ -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 at 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 at restorefont{\font at name}
+ \edef\sseq at restorefont{\font at name}%
\selectfont\nullfont % Avoid space hazards!
- \def\par{}
+ \def\par{}%
%
\ifx\pgfpictureid\@undefined\else %Uh-oh, we're inside tikz.
\sseq at error@n{env-inside-tikz}{sseqdata}\@xp\sseq at breakdataenv
\fi
- \ifsseq at inprogress % Uh-oh, we're already in a sseq environment. This is not good.
+ \ifsseq at inprogress % Uh-oh, we're already in a sseq environment.
\sseq at error@n{env-inside-sseq}{sseqdata}\@xp\sseq at breakdataenv
\fi
\sseq at inprogresstrue
@@ -63,11 +63,11 @@
\sseq at installmacros
\sseq at installmsghooks
\sseq at install@xparse at 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 at 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 at ifpgfmathexpr will break in
% \sseq at tikzprimitives@coords at notaclass@handle at .
\def\xmin{\protect\sseq at xmin}\def\xmax{\protect\sseq at xmax}
\def\ymin{\protect\sseq at ymin}\def\ymax{\protect\sseq at ymax}
@@ -108,11 +108,11 @@
}
% Just store all the settings
-\def\endsseqdata{
+\def\endsseqdata{%
\let\sseq at error@setup\sseq at error@setup at noinfo
- \sseq at checkend{sseqdata}
+ \sseq at checkend{sseqdata}%
\sseq at savedpaths@add{\endgroup} % prevent some of the two-pass user macros horrors
- \xdef\sseq at restorestyles{\sseq at stylelist}
+ \xdef\sseq at restorestyles{\sseq at stylelist}%
\sseq at storecmds
\ignorespacesafterend
\sseq at breakpoint
@@ -121,9 +121,9 @@
\def\sseqpage{\@ifnextchar[{\sseqpage@}{\sseqpage@[]}} %]
\def\sseqpage@[#1]{%
- \edef\sseq at restorefont{\font at name}
+ \edef\sseq at restorefont{\font at name}%
\selectfont\nullfont % Avoid space hazards!
- \def\par{}
+ \def\par{}%
%
\ifx\pgfpictureid\@undefined\else %Uh-oh, we're inside tikz.
\sseq at error@n{env-inside-tikz}{sseqpage}\@xp\sseq at 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 at savedpaths
\sseq at g@addto at macro#1{\endgroup}
\endgroup
- \@xp\let\csname\sseq at macroname#1 code\endcsname\sseq at copymacro
- \DeclareSseqGroup #1 {} { \csname\sseq at macroname#1 code\endcsname }
+ \@xp\let\csname\sseq at macroname#1 copiedcode\endcsname\sseq at copymacro
+ \DeclareSseqGroup #1 {} { \csname\sseq at macroname#1 copiedcode\endcsname }
\let\sseq at savedpaths\sseq at savedpaths@save
}
@@ -478,6 +478,59 @@
\protected\def\sseq at xcoord{}\protected\def\sseq at ycoord{}
+
+%%% "Quick" commands for "compiled" code.
+\def\sseq at qclass(#1,#2){
+ \sseq at obj@inccheckdef{partcoord.(#1,#2).numnodes}
+ \edef\tempn{\sseq at obj{partcoord.(#1,#2).numnodes}}
+ \edef\classname{class.(#1,#2,\tempn)}
+ \sseq at obj@xdef{\classname.n}{\tempn}
+ \sseq at obj@xdef{\classname.num}{0}
+ \sseq at obj@xdef{\classname[0].page}{\sseq at infinity}
+ \sseq at savedpaths@addclass{class.(#1,#2,\tempn)}
+}
+\def\sseq at qclassnamed(#1,#2)#3{
+ \sseq at qclass(#1,#2)
+ \def\sseq at class@name{#3}
+ \sseq at obj@xdef{\classname[0].name}{\sseq at class@name}
+ \sseq at obj@xdef{class.namedclass.\detokenize\@xp{\sseq at class@name}}{#1,#2,\tempn}
+}
+
+\def\sseq at qdnamed#1(#2)(#3){\sseq at eval{\@nx\sseq at qd#1(\sseq at obj{class.namedclass.\detokenize{#2}})(\sseq at obj{class.namedclass.\detokenize{#3}})}}
+\def\sseq at qd#1(#2,#3,#4)(#5,#6,#7){
+ \bgroup
+ \def\sseq at dname{d.#1(#2,#3,#4)(#5,#6,#7)}
+ \def\source{(#2,#3,#4)}
+ \def\target{(#5,#6,#7)}
+ \sseq at obj@gdef{\sseq at dname.page}{#1}
+ \sseq at obj@gdef{\sseq at dname.source}{(#2,#3,#4)}
+ \sseq at obj@gdef{\sseq at dname.target}{(#5,#6,#7)}
+ \sseq at d@setpageminrec{class.\source}{#1}{source}% automatically handles \sseq at cleanup@obj
+ \sseq at d@setpageminrec{class.\target}{#1}{target}
+ \sseq at savedpaths@adddifferential{\sseq at dname}
+ \egroup
+}
+
+\def\sseq at qstructlinenamed(#1)(#2){\sseq at eval{\@nx\sseq at qstructline(\sseq at obj{class.namedclass.\detokenize{#1}})(\sseq at obj{class.namedclass.\detokenize{#2}})}}
+\def\sseq at qstructline(#1,#2,#3)(#4,#5,#6){
+ \def\source{(#1,#2,#3)}
+ \def\target{(#4,#5,#6)}
+ \sseq at obj@xdef{structline.\source\target.num}{0}
+ \def\sseq at pagemin{0}
+ \edef\sseq at structlinename{structline.\source\target[\sseq at obj{structline.\source\target.num}]}
+ \sseq at cleanup@obj{\sseq at structlinename.page}
+ \sseq at obj@xdef{\sseq at structlinename.page}{\sseq at infinity}
+ \sseq at obj@xdef{\sseq at structlinename.pagemin}{\sseq at pagemin}
+ \sseq at obj@xdef{\sseq at structlinename.source}{\source}
+ \sseq at obj@xdef{\sseq at structlinename.target}{\target}
+ \sseq at class@adddependence{class.\source}{\sseq at structlinename}% If the source or target is already dead, this will set structlinename.page
+ \sseq at class@adddependence{class.\target}{\sseq at structlinename}
+ \sseq at savedpaths@addstructline{structline.\source\target}
+ %\sseq at cleanup@obj{\sseq at structlinename.options}
+ %\sseq at obj@xdef{\sseq at structlinename.options}{\ifsseq at needstikz\@nx\sseq at needstikztrue\fi\unexpanded\@xp{\sseq at 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 at gen to be the generation of that class, otherwise set \sseq at gen to be -1.
\def\sseq at obj@pagetogen#1#2{
@@ -1021,20 +1074,20 @@
\def\sseq at d@main#1#2#3#4#5{%
\sseq at options@firstpassmode
- \def\sseq at edgetype{differential}
+ \def\sseq at edgetype{differential}%
\the\sseq at sseqstyle
\the\sseq at edgestyle
\the\sseq at differentialstyle
\the\sseq at scope@toks
\sseq at options@normalmode
- \IfNoValueF{#2}{
+ \IfNoValueF{#2}{%
\sseq at processoptions{differential}{#2}% Outputs result into \sseq at savedoptioncode
- }
+ }%
\sseq at xsetthiscall{\@xp\string\csname#1\endcsname\IfNoValueF{#2}{\unexpanded{[#2]}}\unexpanded{#3}\IfNoValueF{#4}{\unexpanded{(#4)}}\IfNoValueF{#5}{\unexpanded{(#5)}}}%
\sseq at ifintexpr{#3}{%
\sseq at tempcount=\numexpr#3\relax % this is a convenient way to get rid of spaces because #3 has to be a number
}{%
- \sseq at error@n{d-invalid-page}{#3}\sseq at break%
+ \sseq at error@n{d-invalid-page}{#3}\sseq at break
}%
\sseq at eval{\@nx\sseq at dparsecoord{\the\sseq at tempcount}{\IfNoValueTF{#4}{\lastclass0}{\unexpanded{#4}}}{\unexpanded{#5}}}
\sseq at eval{\unexpanded{\csname sseq at d@#1\endcsname{#2}}{\the\sseq at tempcount}}%
@@ -1196,7 +1249,7 @@
\bgroup
\sseq at eval{
\@nx\sseq at drawedge\sseq at obj{#1.source}\sseq at obj{#1.target}{differential}{%
- \@xptwo\@nx\sseq at obj{#1.options}
+ \@nx\sseq at obj{#1.options}
}
}
\egroup
@@ -1295,7 +1348,7 @@
\endgroup
}
\def\sseq at structline@structline{
- \@ifundefined{sseq at structline@pagemax}{}{\sseq at error{structline-no-page-max}}% could be warning
+ \@ifundefined{sseq at structline@pagemax}{}{\ifnum\sseq at structline@pagemax=\sseq at infinity\else \sseq at error{structline-no-page-max}\fi}% could be warning
\ifnum\sseq at pagemin<\sseq at obj{class.\source[\sseq at obj{class.\source.num}].page}\relax\else
\sseq at error{structline-stillborn}
\sseq at breakfi
@@ -1551,6 +1604,7 @@
}
\let\sseq at processlabels\sseq at 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 at handleclassquotes@inner#1#2{%
\begingroup\pgfscope
@@ -1562,6 +1616,7 @@
\sseq at theclasslabelstyle
\the\sseq at scope@toks
\sseq at options@normalmode
+ \gdef\sseqlastlabel{#2}
\sseq at processoptions{class/label}{#2}%
\sseq at classlabel@handler{#1}% labeltextfn is a private handler for transformations, sseq at classlabel@handler is exposed via "class label handler"
\ifsseq at classlabel
@@ -1570,7 +1625,7 @@
\sseq at x@addto at macro\sseq at classlabelnodes{%
\@nx\sseq at drawlabel{%
\sseq at maybemathswitch\unexpanded\@xp{\result}\sseq at 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 at sseqstyle\@nx\the\sseq at sseqstyle@page
\the\sseq at labelstyle\@nx\the\sseq at labelstyle@page
\the\sseq at classlabelstyle\@nx\the\sseq at classlabelstyle@page
Modified: trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmessages.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmessages.code.tex 2018-10-09 00:18:10 UTC (rev 48865)
+++ trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqmessages.code.tex 2018-10-09 20:25:43 UTC (rev 48866)
@@ -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 at mit.edu
-%% Date: 2017-12-10
+%% Date: 2018-10-08
%% License: Latex Project Public License
%%
%% File: sseqmessages.code.tex
Modified: trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqparsers.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqparsers.code.tex 2018-10-09 00:18:10 UTC (rev 48865)
+++ trunk/Master/texmf-dist/tex/latex/spectralsequences/sseqparsers.code.tex 2018-10-09 20:25:43 UTC (rev 48866)
@@ -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 at 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 at error so this is easy.
More information about the tex-live-commits
mailing list