diff options
Diffstat (limited to 'Master')
41 files changed, 350 insertions, 255 deletions
diff --git a/Master/texmf-dist/doc/latex/spectralsequences/README.md b/Master/texmf-dist/doc/latex/spectralsequences/README.md index 250334c312d..582a9c0804a 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/README.md +++ b/Master/texmf-dist/doc/latex/spectralsequences/README.md @@ -1,9 +1,9 @@ -spectralsequences v1.2.1 +spectralsequences v1.2.2 ======================== Author: Hood Chatham Email: hood@mit.edu -Date: 2018-10-08 +Date: 2019-02-18 License: All files have the Latex Project Public License. Description: Print spectral sequence diagrams using pgf/tikz. @@ -13,6 +13,18 @@ Email me at hood@mit.edu to submit bug reports, request new features, etc. The c Changelog: ========== +## [1.2.2] (2018-02-18) +### Fixed: +- expl3 defined \exp_after:NNNf recently, so I changed \cs_new:Npn \exp_after:NNNf to \cs_set:Npn \exp_after:NNNf and copied the definition given by + expl3. +- expl3 changed the definition of \peek_meaning_ignore_spaces to be in terms of \peek_meaning so \letting \peek_meaning to \peek_meaning_ignore_spaces + caused an infite regress. +- expl3 changed \c__xparse_no_value_tl to \c__novalue_tl, so now I try to use each of them in sequence. +- Fixed U argument type. +- \sseqnewfamily was broken by an update to tikz that added a \scantokens call to the .ecode key handler, causing issues with @. +- If \d was called without a source or target argument and was followed by a macro, \d would eat the first token of the expansion of that macro + causing an error. +- Draft mode works a lot better now, though it's probably still buggy. ## [1.2.1] (2018-10-08) ### Fixed: diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_2.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_2.pdf Binary files differindex e702ee7dd82..63b932aaa35 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_2.pdf +++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_2.pdf diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_2.tex b/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_2.tex index 36e56f373d7..777a3303fa0 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_2.tex +++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_2.tex @@ -9,7 +9,6 @@ minimum height=width("16"), minimum width=width("16") }} - \sseqnewfamily{imJ} \begin{document} diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_3.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_3.pdf Binary files differindex 730e363cdd8..9423dd535a4 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_3.pdf +++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/ANSS-S_3.pdf diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_2.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_2.pdf Binary files differindex a5292efcb59..34323e4f332 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_2.pdf +++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_2.pdf diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_3.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_3.pdf Binary files differindex 7e3ff833566..88cd00c005c 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_3.pdf +++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-S_3.pdf diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-tmf_2.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-tmf_2.pdf Binary files differindex 87434a8cdc4..ba38e1dc08e 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-tmf_2.pdf +++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/ASS-tmf_2.pdf diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-EO2_3.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-EO2_3.pdf Binary files differindex de7f059a67e..8769aa6c7ee 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-EO2_3.pdf +++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-EO2_3.pdf diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-KO.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-KO.pdf Binary files differindex 6bf98a727b7..4fb86edd2a2 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-KO.pdf +++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/HFPSS-KO.pdf diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.pdf Binary files differindex d5cff75b375..b5729dae9a4 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.pdf +++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.pdf diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.tex b/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.tex index 4a34be94e4c..d71c48d808b 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.tex +++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/J_RPinfty.tex @@ -1,8 +1,8 @@ %% -%% Package: spectralsequences v1.2.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: example_endofVFoS.tex diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-bo-A1.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-bo-A1.pdf Binary files differindex f7e8d733b14..701b66fc368 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-bo-A1.pdf +++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-bo-A1.pdf diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.pdf Binary files differindex a9e7532a675..b145578082b 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.pdf +++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.pdf diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.tex b/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.tex index 2ab7badd614..c2ce0a1d553 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.tex +++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/MaySS-tmf-A2.tex @@ -8,7 +8,6 @@ \documentclass[tooltips]{spectralsequence-example} \begin{document} \sseqset{htwostructstyle/.sseq style = {gray,very thin, run off=-}} -%\pgfkeys{/sseqpages/struct line/htwostructstyle/.show code} \NewSseqCommand\twods{ O{} U( r() m m }{ diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KF3n.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KF3n.pdf Binary files differindex 745c5476edf..bd14cc30b1b 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KF3n.pdf +++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KF3n.pdf diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KZ3.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KZ3.pdf Binary files differindex d71cfeaa763..d29570b7b8b 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KZ3.pdf +++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/SSS-KZ3.pdf diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.pdf Binary files differindex 43072c438f8..17c750ae636 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.pdf +++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.pdf diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.tex b/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.tex index 07ae39ed4d2..3515aaacd0f 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.tex +++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/hatcher.tex @@ -1,8 +1,8 @@ %% -%% Package: spectralsequences v1.2.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: example_hatcher.tex diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.pdf b/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.pdf Binary files differindex 065073b8f97..48a9746aa93 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.pdf +++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.pdf diff --git a/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.tex b/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.tex index 4180f52635c..7bd7350dd1f 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.tex +++ b/Master/texmf-dist/doc/latex/spectralsequences/examples/unstable_ASS_SO.tex @@ -1,8 +1,8 @@ %% -%% Package: spectralsequences v1.2.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: example_unstable_ASS_SO.tex diff --git a/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-KORP8.tex b/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-KORP8.tex index d1fcebff065..f5a767b2de2 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-KORP8.tex +++ b/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-KORP8.tex @@ -1,27 +1,27 @@ \NewSseqCommand \KOstar {m}{ - \begin{scope}[xshift = -#1, xshift=8*\b, yshift = #1] - \class[rectangle,name=b^{\b}[0]](0,0) - \class[name=b^{\b} e[0]](1,0) \structline - \class[name=b^{\b} e^2[0]](2,0) \structline - \class[rectangle,fill=none,name=b^{\b} u[0]](4,0) + \begin{scope}[ xshift = -#1, xshift = 8*\b, yshift = #1 ] + \class[rectangle, name = b^{\b}[0]](0,0) + \class[name = b^{\b} e[0]](1,0) \structline + \class[name = b^{\b} e^2[0]](2,0) \structline + \class[rectangle, fill = none, name = b^{\b} u[0]](4,0) \end{scope} } \NewSseqCommand \KOpcell {m}{ \d1(b^{\b}[#1]) \replacetarget \d1(b^{\b} u[#1]) \replacetarget \structline(b^{\b}[#1+1])(b^{\b} e[#1+1]) - \structline[page=2,dashed](b^{\b} e[#1])(b^{\b} e^2[#1+1]) - \structline[page=2,dashed](b^{\b} e^2[#1])(b^{\b} u[#1+1]) + \structline[page = 2, dashed](b^{\b} e[#1])(b^{\b} e^2[#1+1]) + \structline[page = 2, dashed](b^{\b} e^2[#1])(b^{\b} u[#1+1]) } \NewSseqCommand \KOetacell {m}{ \DrawIfValidDifferential2(b^{\b}[#1]) \d2(b^{\b} e[#1]) \DrawIfValidDifferential3(b^{\b} e^2[#1]) } -\begin{sseqdata}[name=KO^*RP^8, Adams grading, class name handler=\SseqAHSSNameHandler, - classes=fill, x range={-8}{10},xscale=0.7, yscale=0.5, x tick step = 4 ] +\begin{sseqdata}[ name = KO^*RP^8, Adams grading, class name handler = \SseqAHSSNameHandler, + classes = fill, x range = {-8}{10}, xscale = 0.7, yscale = 0.5, x tick step = 4 ] \foreach \b in {-2,...,2}{ \foreach \n in {0,...,6}{\KOstar{\n}} \foreach \n in {1,3,...,5}{\KOpcell{\n}} @@ -30,5 +30,5 @@ \structline[dashed](b^{\b}[4])(b^{\b}e[5]) } \end{sseqdata} -\printpage[name=KO^*RP^8, title=AHSS for $KO^*\mathbb{R}P^8$]\vskip6pt -\printpage[name=KO^*RP^8,page=6]
\ No newline at end of file +\printpage[ name = KO^*RP^8, title = AHSS for $KO^*\mathbb{R}P^8$ ] \vskip6pt +\printpage[ name = KO^*RP^8, page = 6 ]
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2a.tex b/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2a.tex index 609df037f1a..90a9b9bc3c1 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2a.tex +++ b/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2a.tex @@ -5,13 +5,13 @@ \class(0,3) \d3(1,0) \replacesource -\classoptions[fill,red](1,0) % (a) applies to most recent (last) generation. +\classoptions[fill, red](1,0) % (a) applies to most recent (last) generation. \end{sseqdata} \printpage[ name = page_example2, page = 1 ] % generation 0 of (1,0), not styled \quad \begin{sseqpage}[ name = page_example2, page = 1, keep changes ] -\classoptions[fill,blue](1,0) % (b) applies to the generation present on page 1, that is, generation 0. +\classoptions[fill, blue](1,0) % (b) applies to the generation present on page 1, that is, generation 0. \end{sseqpage} \quad % generation 0 of (1,0), so class is blue from (b) diff --git a/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2b.tex b/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2b.tex index c6df218978e..3d5854f0546 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2b.tex +++ b/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-class-page2b.tex @@ -6,11 +6,11 @@ \printpage[ name = page_example2, page = 1 ]% generation 0 of (1,0), so class is red \quad \begin{sseqpage}[ name = page_example2, page = 1, keep changes ] -\classoptions[fill,blue](1,0) % (d) applies to the generation present on page 1, that is, generation 0. +\classoptions[fill, blue](1,0) % (d) applies to the generation present on page 1, that is, generation 0. \end{sseqpage} \quad % generation 0 of (1,0), class is blue from (d) -\printpage[ name = page_example2,page = 2 ] \quad +\printpage[ name = page_example2, page = 2 ] \quad % generation 1 of (1,0), class is red from (c) \printpage[ name = page_example2, page = 3 ] diff --git a/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-imJ.tex b/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-imJ.tex index 626a9a5fd63..20335a33f2e 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-imJ.tex +++ b/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-imJ.tex @@ -1,22 +1,22 @@ \SseqNewFamily{imJ} \begin{sseqdata}[ name=ANSS-S_2, Adams grading, - class labels={below}, label distance=-1pt, - class placement transform={rotate=90,scale=2}, - differentials=blue, - x range={0}{9}, y range={0}{4}, - xscale=0.7, grid=go + class labels = {below}, label distance = -1pt, + class placement transform = {rotate = 90, scale = 2}, + differentials = blue, + x range = {0}{9}, y range = {0}{4}, + xscale = 0.7, grid = go ] % Image of J classes \begin{scope}[imJ] \class[rectangle,fill,inner sep=3pt](0,0) \DoUntilOutOfBoundsThenNMore{3}{\etaclass} \classoptions["\alpha_1" above left](1,1) -\class["\alpha_{2/2}",circlen=2](3,1) +\class["\alpha_{2/2}", circlen = 2](3,1) \structline(0,0) \structline[dashed](3,3) \class["\alpha_3"](5,1) \d3\relax \DoUntilOutOfBounds{ \etaclass \d3 } -\class["\alpha_{4/4}", rectangle, "16" {font=\tiny,inside}, inner sep=1pt](7,1) +\class["\alpha_{4/4}", rectangle, "16" {font = \tiny, inside}, inner sep = 1pt](7,1) \DoUntilOutOfBoundsThenNMore{3}{\etaclass} \end{scope} @@ -27,6 +27,6 @@ \etaclass\structline(6,2,2) % This is a *nu \end{sseqdata} -\printpage[name=ANSS-S_2, title = with image of J, imJ style=purple] +\printpage[ name = ANSS-S_2, title = with image of J, imJ style = purple] -\printpage[name=ANSS-S_2, no imJ, x range={2}{9}, title = without image of J]
\ No newline at end of file +\printpage[ name = ANSS-S_2, no imJ, x range={2}{9}, title = without image of J]
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-insert.tex b/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-insert.tex index c97a8be7682..2784ca0d3c9 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-insert.tex +++ b/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-insert.tex @@ -6,28 +6,28 @@ } } -\begin{sseqdata}[name=insert-example, y range={0}{4}, class pattern = linear] +\begin{sseqdata}[ name = insert-example, y range = {0}{4}, class pattern = linear ] \tower(0,2) \tower(0,3) \tower(0,1) \end{sseqdata} \qquad -\begin{sseqpage}[name=insert-example] -\tower[red,classes={insert=1}](0,0) +\begin{sseqpage}[ name = insert-example ] +\tower[ red, classes = { insert = 1 } ](0,0) \end{sseqpage} \qquad -\begin{sseqpage}[name=insert-example] -\tower[red,classes={insert=2}](0,0) +\begin{sseqpage}[ name = insert-example ] +\tower[ red, classes = { insert = 2 } ](0,0) \end{sseqpage} \qquad -\begin{sseqpage}[name=insert-example] -\tower[red,classes={insert=3}](0,0) +\begin{sseqpage}[ name = insert-example ] +\tower[ red, classes = { insert = 3 } ](0,0) \end{sseqpage} \qquad -\begin{sseqpage}[name=insert-example] -\tower[red,classes={insert=-2}](0,0) +\begin{sseqpage}[ name = insert-example ] +\tower[ red, classes = { insert = -2 } ](0,0) \end{sseqpage} \qquad -\begin{sseqpage}[name=insert-example] -\tower[red,classes={insert=-3}](0,0) -\end{sseqpage}
\ No newline at end of file +\begin{sseqpage}[ name = insert-example ] +\tower[ red, classes = { insert = -3 } ](0,0) +\end{sseqpage}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-tikz.tex b/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-tikz.tex index 7c72cc79887..d12a0c02427 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-tikz.tex +++ b/Master/texmf-dist/doc/latex/spectralsequences/manual/examples/spectralsequencesmanual-tikz.tex @@ -6,20 +6,20 @@ \class(0,2) \d2(1,0) \end{sseqdata} - +% \begin{sseqpage}[ name = tikz example ] \circleclasses[ name path = myellipse, inner sep = 3pt, ellipse ratio = 1.6 ] (1,0) (0,2) \path[ name path = myline ] (1.3,1.25) -- (0.6,1); \draw[ name intersections = { of = myellipse and myline } ] (intersection-1) to (1.3,1.25) node[ right, text width = 1.6cm ] {Consider this differential}; \end{sseqpage} \qquad - +% \begin{sseqpage}[ name = tikz example ] \draw[ xshift = 1 ] (0,0) to (0.6,0.2) node[ right, text width = 1.1cm ] {This is the source}; \draw[ yshift = 2 ] (0,0) to (0.6,0.2) node[ right, text width = 1.1cm ] {This is the target}; \end{sseqpage} \qquad - +% \begin{sseqpage}[ page = 3, name = tikz example ] -\circleclasses[ name path = myellipse, inner sep = 3pt, ellipse ratio = 1.6 ] (1,0)(0,2) +\circleclasses[ inner sep = 3pt, ellipse ratio = 1.6 ] (1,0)(0,2) \node[ right, font = \tiny ] at (1.2,1.2) {Now it's gone!}; -\end{sseqpage}
\ No newline at end of file +\end{sseqpage}
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual-draftmode.pdf b/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual-draftmode.pdf Binary files differnew file mode 100755 index 00000000000..f517d3ad932 --- /dev/null +++ b/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual-draftmode.pdf diff --git a/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.pdf b/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.pdf Binary files differindex 71208ce3fa5..d5cbde1a3c9 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.pdf +++ b/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.pdf diff --git a/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.tex b/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.tex index bb4228f2211..4681bd03df2 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.tex +++ b/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanual.tex @@ -1,8 +1,8 @@ %% -%% Package: spectralsequences v1.2.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: spectralsequencesmanual.tex @@ -21,7 +21,7 @@ % explain / cross reference examples folder? % \sseqlastlabel is not currently documented. % -\def\version{Version 1.2.1} +\def\version{Version 1.2.2} \input spectralsequencesmanualpreamble @@ -79,7 +79,11 @@ The easiest solution is to run \LuaLaTeX. \LuaLaTeX\ dynamically allocates memor Another option is to increase the static memory caps for \pdfLaTeX. See \href{https://tex.stackexchange.com/a/26213}{this \TeX stack exchange post} for instructions on how to do this. \subsection{A warning about fragile macros} -All the data in a \sseqpages\ environment is stored and used later. As a result, most of the \sseqpages\ commands currently cannot tolerate fragile macros. Unfortunately, it is impossible for \sseqpages\ to warn you about this situation -- if you use a fragile command in a place that it doesn't belong, the result will be an incomprehensible error message. If you are getting nonsense error messages, this might be why. The solution is to convert fragile macros into robust ones. \href{http://www.tex.ac.uk/FAQ-protect.html}{See here for more information.} +All the data in a \sseqpages\ environment is stored and used later. As a result, most of the \sseqpages\ commands currently cannot tolerate fragile macros. Unfortunately, it is impossible for \sseqpages\ to warn you about this situation -- if you use a fragile command in a place that it doesn't belong, the result will be an incomprehensible error message. If you are getting nonsense error messages, this might be why. The solution is to convert fragile macros into robust ones. Common examples of fragile macros include |\widehat| and |\underline|. My suggested solution to this is to add the following code to your preamble for each fragile macro (example given for |\mathbb|): +\begin{codeexample}[code only] +\let\oldwidehat\widehat +\protected\def\widehat{\oldwidehat} +\end{codeexample} \section{Package Options and Environments} @@ -143,7 +147,7 @@ After a class is the source or target of a differential, it disappears on the ne \class["\mathbb{Z}"](1,0) \d["\cdot 2"]2(1,1) \replacetarget["\mathbb{Z}/2"] %\replaceclass["\mathbb{Z}/2"](0,3) -\d[-> >]3(1,0) +\d[->>]3(1,0) \replacesource["2\mathbb{Z}"] % \replaceclass["2\mathbb{Z}"](1,0) \end{sseqdata} \printpage[ name = replace class example, page = 2 ] \qquad @@ -362,17 +366,17 @@ These come from the \LaTeX\ \colorpkg\ package via \tikzpkg, so see the \href{ \end{manualentry} \begin{manualentry}{\pgfmanualpdflabel{""quotes}{}|"|\meta{text}|"|\opt{\meta{options}}} -Specify a label for a class, a differential, or a structure line. This uses the \tikzpkg\ quotes syntax. If the label text includes an equal sign or comma, you need to enclose the entire label in braces, e.g., |\class["{x = y}"](0,0)|. The options include anything you might pass as an option to a \tikzpkg\ node, including arbitrary coordinate transforms, colors, opacity options, shapes, fill, draw, etc. The behavior is a little different depending on whether you use it on a class or on a differential or structure line. +Specify a label for a class, a differential, or a structure line. This uses the \tikzpkg\ quotes syntax. If the label text includes an equal sign or comma, you need to enclose the entire label in braces, e.g., \codeverb|\class["{x = y}"](0,0)|. The options include anything you might pass as an option to a \tikzpkg\ node, including arbitrary coordinate transforms, colors, opacity options, shapes, fill, draw, etc. The behavior is a little different depending on whether you use it on a class or on a differential or structure line. For a class, the \meta{text} is placed in the position |inside| the node by default -- in effect, the \meta{text} becomes the label text of the node (so saying |\class["label text"](0,0)| causes a similar effect to saying |\node at (0,0) {label text};|). There are other position options such as |left|, |above left|, etc which cause the label text to be placed in a separate node positioned appropriately. If the placement is above, left, etc, then any option that you may pass to a \tikzpkg\ node will also work for the label, including general coordinate transformations. If the placement is ``inside'', then the only relevant \opt{\meta{options}} are those that alter the appearance of text, such as opacity and color. \begin{codeexample}[width = 4cm] \begin{sseqpage}[ classes = { minimum width = width("a") + 0.5em }, no axes ] \class["a"](0,0) -\class["a",red](1,0) -\class["a" black,red](2,0) +\class["a", red](1,0) +\class["a" black, red](2,0) \class["b" above](0,1) -\class["b" {below right,yshift = 0.1cm}](1,1) -\class["a" {above right = {1em}}](2,1) +\class["b" { below right, yshift = 0.1cm }](1,1) +\class["a" { above right = {1em} }](2,1) \end{sseqpage} \end{codeexample} You can adjust the default behavior of class labels using the |labels| style option or its relatives |class labels|, |inner class labels| or |outer class labels|. @@ -381,7 +385,7 @@ Note that it is also possible to give a label to a |\node| this way, although th \begin{sseqpage}[ no axes ] \class(0,0) \class(2,0) -\node[circle,fill,"a"] at (1,0) {}; +\node[circle, fill, "a"] at (1,0) {}; \end{sseqpage} \end{codeexample} @@ -390,7 +394,7 @@ The |pin| key makes \sseqpages\ draw a line connecting the label to the relevant \begin{codeexample}[width = 6cm] \begin{sseqpage} \class(0,0) -\class["xy" {above, xshift=-4pt, pin = red}](0,0) +\class["xy" { above, xshift = -4pt, pin = red }](0,0) \class(0,0) \class(0,1) \structline @@ -509,23 +513,24 @@ Named classes are immune to coordinate transformations. For example, in the foll \end{key} \begin{key}{show name = \meta{label options}} +\declareasstyle{show name} This option is like saying |"class name"\marg{label options}| if the class has a name, and does nothing if the class has no name. If the class has multiple names, only the most recent is used. This is particularly useful with class styles, . For instance, by saying |this page classes = { show name = above }| you can display names of all of the sources and targets of differentials on each page. \begin{codeexample}[width=7cm] \begin{sseqdata}[ name = show name example, - this page classes = { show name = {above right, pin} } + this page classes = { show name = { above right, pin } } ] -\class[name=a](0,2) -\class[name=b](0,3) -\class[name=x](1,0) +\class[ name = a ](0,2) +\class[ name = b ](0,3) +\class[ name = x ](1,0) \d2(x)(a) \replacesource[name=2x] \d3(x)(b) \end{sseqdata} -\printpage[name=show name example,page=2] +\printpage[ name = show name example, page = 2] -\printpage[name=show name example,page=3] +\printpage[ name = show name example, page = 3] \end{codeexample} \end{key} @@ -549,8 +554,8 @@ This key adds a tag to the current class. Tags are used for identifying which of \begin{sseqpage}[ degree = {-1}{1}, yscale = 1.1, x range = {0}{5}, y range = {0}{5} ] \tower(3,0) -\hvee[tag = id](0,0) -\hvee[tag = h21](4,2) +\hvee[ tag = id ](0,0) +\hvee[ tag = h21 ](4,2) \foreach \n in {0,...,5} { \d2(4+\n,2+\n,h21,id) } @@ -606,12 +611,14 @@ There's another example at the beginning of the section on the \hyperref[sec:cla \end{key} \begin{keylist}{class:page = \meta{page}\opt{-{}-\meta{page max}},generation = \meta{generation}\opt{-{}-\meta{generation max}}} +\def\classpagehandler#1#2{\textcolor{keycolor}{\noligs{#2}}} +\declarecustomhandler{class:page}{\classpagehandler} These options only work in |\classoptions|. The |page| option gives a range of pages for which the options apply to. If only one page is specified, it is the minimum page and the option applies to all larger pages. \begin{codeexample}[width = 6cm] \begin{sseqdata}[ name = page_example, no axes, title = \page, title style = {yshift = -0.5cm} ] \class(0,0) -\classoptions[class:page = {2--3},fill,blue](0,0) +\classoptions[class:page = 2 -- 3, fill, blue](0,0) \end{sseqdata} \printpage[ name = page_example, page = 1 ] \qquad @@ -658,8 +665,8 @@ See the \href{\pgfmanualurl#subsubsection.15.3.2}{\tikzpkg\ manual} for a compl \class(\x,\y) } \structline[densely dotted](0,0)(0,1) -\structline[dashed,red, "a"](1,0)(1,1) -\structline[dash dot,red, "a" black](2,0)(2,1) +\structline[dashed, red, "a"](1,0)(1,1) +\structline[dash dot, red, "a" black](2,0)(2,1) \end{sseqpage} \end{codeexample} % @@ -673,7 +680,7 @@ See the \href{\pgfmanualurl#subsubsection.15.3.2}{\tikzpkg\ manual} for a compl } \structline[bend left = 20](0,0)(0,1) \structline[bend right = 20](1,0)(1,1) -\structline[in = 20,out = north](2,0)(2,1) +\structline[in = 20, out = north](2,0)(2,1) \end{sseqpage} \end{codeexample} \end{keylist} @@ -713,13 +720,13 @@ By specifying a page number, you can adjust which page the |\structline| starts \d3(1,1)(0,4) \replacesource \structline[structline:page = 2](1,0)(1,1) \end{sseqdata} -\printpage[name = structpage example2,page = 1] +\printpage[ name = structpage example2, page = 1 ] \qquad -\printpage[name = structpage example2,page = 2] +\printpage[ name = structpage example2, page = 2 ] \qquad -\printpage[name = structpage example2,page = 3] +\printpage[ name = structpage example2, page = 3 ] \qquad -\printpage[name = structpage example2,page = 4] +\printpage[ name = structpage example2, page = 4 ] \end{codeexample} Similarly, for |\structlineoptions| you can specify a minimum page on which to apply the options, or a range of pages. @@ -729,12 +736,12 @@ Similarly, for |\structlineoptions| you can specify a minimum page on which to a \begin{key}{fit = \meta{coordinates or nodes}} The |\circleclasses| command uses the \href{\pgfmanualurl#section.52}{\tikzpkg\ fitting library}. Sometimes it's desirable to make the resulting node fit extra things, for example a label. It doesn't necessarily end up looking great though. \begin{codeexample}[] -\begin{sseqpage}[Adams grading,axes gap = 0.7cm] +\begin{sseqpage}[ Adams grading, axes gap = 0.7cm ] \class(0,2) \class(1,0) % Fit in the label x and also a symmetric invisible label to maintain symmetry -\d["x"{name = x},"x"'{name = x',opacity = 0}]2(1,0) -\circleclasses[fit = (x)(x'),rounded rectangle](1,0)(0,2) +\d["x"{name = x}, "x"'{name = x', opacity = 0}]2(1,0) +\circleclasses[fit = (x)(x'), rounded rectangle](1,0)(0,2) \end{sseqpage} \end{codeexample} \end{key} @@ -770,7 +777,7 @@ This key instructs \sseqpages\ to put the current \tikzpkg\ primitive in the b In particular, this means that foreground \tikzpkg\ paths can be clipped by the standard clipping, but background paths that are outside of the clipping expand the size of the \tikzpkg\ picture. \begin{codeexample}[] -\begin{sseqpage}[no ticks,yscale = 0.9,math nodes = false] +\begin{sseqpage}[ no ticks, yscale = 0.9, math nodes = false ] \class(0,0) \class(1,1) \begin{scope}[background] @@ -958,6 +965,7 @@ The one use case that |\foreach| doesn't cover all that well is if you want the \structline } \class(4,0) +\d3 \DoUntilOutOfBounds{ \class(\lastx+1,\lasty+1) \structline @@ -1051,21 +1059,21 @@ An example where this is actually useful: \end{codeexample} -The |\d| command has argument specification |O{} U( r()|. The argument type |U| is special to \sseqpages, and is a variant of until that reinserts the delimiting token. This allows the |(| token to also delimit the beginning of the |r()| argument. Note that the argument type |U| is specially added by \sseqpages\ and might be removed in the future if the \LaTeX3 team yells at me or something. - \ExplSyntaxOn - \cs_set_eq:NN \__xparse_add_type_U:w \sseq__xparse_add_type_U:w - \cs_set_eq:NN \__xparse_normalize_type_U:w \sseq__xparse_normalize_type_U:w - \sseq@install@xparse@Uarggrabber - \ExplSyntaxOff -\begin{codeexample}[width = 7cm,vbox] -\DeclareDocumentCommand {\demo} { O{} U( r() } - { \#1 = \textcolor{purple}{\{#1\}}; - \#2 = \textcolor{purple}{\{#2\}}; - \#3 = \textcolor{purple}{\{#3\}} } -\hbox{\demo[opts]page(x,y)} -\bigskip -\hbox{\demo5(x,y)} -\end{codeexample} +%The |\d| command has argument specification |O{} U( r()|. The argument type |U| is special to \sseqpages, and is a variant of until that reinserts the delimiting token. This allows the |(| token to also delimit the beginning of the |r()| argument. Note that the argument type |U| is specially added by \sseqpages\ and might be removed in the future if the \LaTeX3 team yells at me or something. +% \ExplSyntaxOn +% \cs_set_eq:NN \__xparse_add_type_U:w \sseq__xparse_add_type_U:w +% \cs_set_eq:NN \__xparse_normalize_type_U:w \sseq__xparse_normalize_type_U:w +% \sseq@install@xparse@Uarggrabber +% \ExplSyntaxOff +%\begin{codeexample}[width = 7cm,vbox] +%\DeclareDocumentCommand {\demo} { O{} U( r() } +% { \#1 = \textcolor{purple}{\{#1\}}; +% \#2 = \textcolor{purple}{\{#2\}}; +% \#3 = \textcolor{purple}{\{#3\}} } +%\hbox{\demo[opts]page(x,y)} +%\bigskip +%\hbox{\demo5(x,y)} +%\end{codeexample} The |\structline| and |\changeclasses| commands have argument specification |O{}r()r()|. \begin{codeexample}[width = 7cm,vbox] @@ -1285,12 +1293,12 @@ The |\gettag| command finds the most recent tag applied to the coordinate and st \begin{sseqpage}[ y range = {0}{6}, x tick step = 3, xscale=0.6, yscale=1.3 ] \class(0,2) \class(0,3) \class(3,2) -\class[tag=h_0^i](0,0) -\tower[tag=h_0^i] +\class[tag = h_0^i](0,0) +\tower[tag = h_0^i] \class(0,2) \class(0,1) -\htwotower[tag=h_2 h_0^i](0,0) -\htwotower[tag=h_2 h_0^i] +\htwotower[tag = h_2 h_0^i](0,0) +\htwotower[tag = h_2 h_0^i] \end{sseqpage} \end{codeexample} \end{command} @@ -1406,7 +1414,7 @@ This passes options to all features in all future spectral sequences in the curr \begin{codeexample}[width = 7cm] % Applies to both of the following sseqs: -\sseqset{ sseqs = { blue, scale = 0.5 } }% +\sseqset{ sseqs = { blue, scale = 0.5 } } \begin{sseqpage} \foreach \x in {0,1} \foreach \y in {0,1,2} { @@ -1500,7 +1508,7 @@ This style applies to labels on classes, differentials, and structure lines. All Inner class labels specifically applies to class labels that are inside the node, outer class labels specifically applies to ones outside it: \begin{codeexample}[] \begin{sseqpage}[ no axes, classes = { inner sep = 1pt }, - label distance=2pt, + label distance = 2pt, outer class labels = { red }, inner class labels = { blue } ] \class["a", "b" above](0,0) @@ -1523,7 +1531,7 @@ This sets the default distance from a class to an outer label. There are also va \begin{codeexample}[width = 6cm] \begin{sseqpage}[ label distance = 0.3em, right label distance = 0em, - no axes,yscale = 1.25 ] + no axes, yscale = 1.25 ] \class["a" above](0,0) \class["b" above right](0,1) \class["c" right](1,0) @@ -1611,8 +1619,8 @@ The main functions intended for use here are |\SseqAHSSNameHandler| and |\SseqNo \SseqNormalizeMonomialSetVariables{xy} \begin{sseqpage}[ class name handler = \SseqNormalizeMonomial, classes = {show name = {right,pin}} ] -\class[name=xy](0,0) -\class[name=yxy](0,1) +\class[name = xy](0,0) +\class[name = yxy](0,1) \class(1,0) \structline(yx)(yyx) \end{sseqpage} @@ -2020,7 +2028,7 @@ The value for |x tick handler| should be a function that takes in the current $\ The \meta{type} is either |border|, |center|, |frame|, or |none|. |no axes| is a shorthand for |axes type=none|. The |border| type is the default and puts the axes on the bottom and left of the picture. The |center| type by default places the axes to pass through $(0,0)$; this can be modified using the |x axis origin| and |y axis origin| keys. See \example{KRAHSS} and \example{KUHFPSS} for examples where this is used. The |frame| type draws a frame around the entire chart: \begin{codeexample}[width=6cm] -\begin{sseqpage}[axes type=frame] +\begin{sseqpage}[ axes type = frame ] \class(0,0) \class(3,2) \end{sseqpage} diff --git a/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanualpreamble.tex b/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanualpreamble.tex index 05d0ce06333..b9e76710c8a 100644 --- a/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanualpreamble.tex +++ b/Master/texmf-dist/doc/latex/spectralsequences/manual/spectralsequencesmanualpreamble.tex @@ -1,8 +1,8 @@ %% -%% Package: spectralsequences v1.2.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: spectralsequencesmanualpreamble.tex @@ -275,7 +275,8 @@ } \def\pgfmanual@pretty@collectquote{% \let\pgfmanualprettyprinterhandlecollectedargs=\pgfmanual@pretty@collectargs@finish@collectquote - \pgfmanualprettyprintercollectupto" + \let\pgfmanualprettyprinterhandlecollectedargsVtwo\pgfmanualprettyprinterhandlecollectedargsVtwo@default + \pgfmanualprettyprintercollectupto"% {\pgfmanual@pretty@collectquote@b}% } \def\pgfmanual@pretty@collectquote@b{% @@ -289,9 +290,9 @@ \def\afterpgfmanual@pretty@collectquote{\pgfmanual@pretty@pgfkeys@loop} \def\pgfmanual@pretty@collectargs@finish@collectquote#1{\textcolor{keycolor}{\pgfmanualpdfref{""quotes}{"#1"}}} \def\pgfmanual@pretty@collectargs@finish@collectquote@b#1{% + \def\thekey{#1}% \edef\temp{\ifpgfmanualprettyprinterfoundterminator,\fi}% \pgfkeys{/codeexample/prettyprint/key name/.code={\textcolor{keycolor}{##1}}}% - \def\thekey{#1}% \def\leadingtoks{}\def\trailingtoks{}% \pulloffstartspaces\pulloffsinglequote\pulloffstartspaces\pulloffstartbrace \removetrailingspaces\removetrailingbrace @@ -315,12 +316,13 @@ % Redefine point collection to correctly balance the parens % Has unfortunate side effect that it now throws an error if parens don't balance. \let\pgfmanual@pretty@collectpoint@old\pgfmanual@pretty@collectpoint -\def\pgfmanual@pretty@collectpoint{\pgfmanual@pretty@collectpoint@(} %) -\DeclareDocumentCommand\pgfmanual@pretty@collectpoint@{r()}{% - \pgfmanualprettyprinterfoundterminatortrue - \pgfmanual@pretty@collectargs@finish@collectpoint{#1}% - \afterpgfmanual@pretty@collectpoint -} +%\def\pgfmanual@pretty@collectpoint{\pgfmanual@pretty@collectpoint@(} %) +%\DeclareDocumentCommand\pgfmanual@pretty@collectpoint@{r()}{% +% \pgfmanualprettyprinterfoundterminatortrue +% \pgfmanual@pretty@collectargs@finish@collectpoint{#1}% +% \afterpgfmanual@pretty@collectpoint +%} + \pgfqkeys{/codeexample/prettyprint}{ @@ -399,7 +401,8 @@ }% \fi }, - point/.code={\pgfutil@in@){#1}\ifpgfutil@in@\prettyprintprocesspoint#1\else \textcolor{pointcolor}{\noligs{#1}}\fi}, + point/.code={%\pgfutil@in@){#1}\ifpgfutil@in@\def\temp{#1}\prettyprintprocesspoint{#1}\else \textcolor{pointcolor}{\noligs{#1}}\fi + \textcolor{pointcolor}{\noligs{#1}}}, %/cs/.code={\pgfmanualpdfref{#1}{\textcolor{blue}{#1}}}, % /cs with args/.code 2 args={\pgfmanualpdfref{#1}{\textcolor{blue}{#1}}\{\pgfmanualprettyprintcode{#2}\pgfmanualclosebrace}, %/colored @@ -420,7 +423,7 @@ \def\codeverb|{\pgfmanual@verb@code} % balance the braces -\NewDocumentCommand\prettyprintprocesspoint { r() } {% +\NewDocumentCommand\prettyprintprocesspoint { m } {% \textcolor{pointcolor}{% \bgroup \let\pgfmanual@pretty@collectpoint\pgfmanual@pretty@collectpoint@old @@ -440,6 +443,19 @@ \expandafter\endofcodeexample\expandafter{\examplelines}% } +% For some reason it's started duplicating the last line of the file, +% so I added an illogical extra \ifeof and that seems to fix the problem. +\def\readexamplelines{ + \ifeof\examplesource% + \else + \immediate\read\examplesource to \exampleline + \ifeof\examplesource\else %% Added + \edef\examplelines{\unexpanded\@xp{\examplelines}\unexpanded\@xp{\exampleline}}% + \fi %% Added + \expandafter\readexamplelines% + \fi +} + \pgfqkeys{/sseqpages}{ class/class:name/.forward to=/sseqpages/class/name, diff --git a/Master/texmf-dist/doc/latex/spectralsequences/manual/sseqmanualtest.tex b/Master/texmf-dist/doc/latex/spectralsequences/manual/sseqmanualtest.tex new file mode 100755 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/texmf-dist/doc/latex/spectralsequences/manual/sseqmanualtest.tex 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@} |