summaryrefslogtreecommitdiff
path: root/graphics/pgf/contrib/spectralsequences/sseqcheckdefinitions.code.tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /graphics/pgf/contrib/spectralsequences/sseqcheckdefinitions.code.tex
Initial commit
Diffstat (limited to 'graphics/pgf/contrib/spectralsequences/sseqcheckdefinitions.code.tex')
-rw-r--r--graphics/pgf/contrib/spectralsequences/sseqcheckdefinitions.code.tex223
1 files changed, 223 insertions, 0 deletions
diff --git a/graphics/pgf/contrib/spectralsequences/sseqcheckdefinitions.code.tex b/graphics/pgf/contrib/spectralsequences/sseqcheckdefinitions.code.tex
new file mode 100644
index 0000000000..5cd92a3bf3
--- /dev/null
+++ b/graphics/pgf/contrib/spectralsequences/sseqcheckdefinitions.code.tex
@@ -0,0 +1,223 @@
+%%
+%% Package: spectralsequences v1.2.2
+%% Author: Hood Chatham
+%% Email: hood@mit.edu
+%% Date: 2019-02-18
+%% License: Latex Project Public License
+%%
+%% File: sseqcheckdefinitions.code.tex
+%%
+%% A few tikz commands are modified in sseqpages. This file checks the definitions of all commands modified. Of course, this is insufficient to ensure that
+%% the behavior isn't completely wrong, but at least it's a sanity check.
+%%
+
+% TODO: we could recover from failing to patch keys.
+
+\sseq@tempiftrue
+\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
+}
+
+%%
+%% sseqmacromakers.code.tex
+%%
+
+\ExplSyntaxOn
+% I should work out how old the version of xparse has to be before this breaks, but I'm too lazy.
+% It would also be nice if I could figure out how to ensure that my trick of setting \l__xparse_grab_expandably_bool to false works correctly, but this might be difficult
+\@ifpackagelater{xparse}{2017/02/08}{
+ \sseq@checkprotecteddef \__xparse_grab_u:w #1#2 \__xparse_run_code:{
+ \__xparse_grab_u_aux:nnN {#1} {#2} \cs_set_protected_nopar:Npn
+ }
+
+ \sseq@checkprotecteddef\__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} }
+ \l__xparse_fn_tl
+ }
+
+
+ \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_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
+ \global\sseq@patchxparseUfalse
+ \fi
+ \sseq@tempiftrue
+}{}
+
+\@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
+%%
+
+
+\sseq@checkdef\pgfkeys@case@one{%
+ \pgfkeysifdefined{\pgfkeyscurrentkey/.@cmd}%
+ {\pgfkeysgetvalue{\pgfkeyscurrentkey/.@cmd}{\pgfkeys@code}%
+ \expandafter\pgfkeys@code\pgfkeyscurrentvalue\pgfeov}
+ {\pgfkeys@case@two}%
+}
+
+\sseq@checkdef\pgfkeys@case@two@extern{%
+ \ifx\pgfkeyscurrentvalue\pgfkeysnovalue@text%
+ \pgfkeysvalueof{\pgfkeyscurrentkey}%
+ \else%
+ \pgfkeyslet{\pgfkeyscurrentkey}\pgfkeyscurrentvalue%
+ \fi%
+}
+
+
+\ifsseq@tempif\else
+ \endgroup
+ \sseq@tempiffalse % We'll throw a critical error in spectralsequences.sty to end input
+ \endinput
+\fi
+%%
+%% sseqdrawing.code.tex
+%%
+
+%from \pgf\frontendlayer\tikz\libraries\tikzlibraryfit.code.tex line 81
+\sseq@checkdef\tikz@lib@fit@scan@handle#1{%
+ \iftikz@shapeborder%
+ % Ok, fit all four external anchors, if they exist
+ \tikz@lib@fit@adjust{\pgfpointanchor{\tikz@shapeborder@name}{west}}%
+ \tikz@lib@fit@adjust{\pgfpointanchor{\tikz@shapeborder@name}{east}}%
+ \tikz@lib@fit@adjust{\pgfpointanchor{\tikz@shapeborder@name}{north}}%
+ \tikz@lib@fit@adjust{\pgfpointanchor{\tikz@shapeborder@name}{south}}%
+ \else%
+ \tikz@lib@fit@adjust{#1}%
+ \fi%
+ \tikz@lib@fit@scan%
+}
+
+% from \pgf\frontendlayer\tikz\tikz.code.tex line 5164
+\sseq@checkdef\tikz@calc@anchor#1.#2\tikz@stop{%
+ \pgfpointanchor{\tikz@pp@name{#1}}{#2}%
+}
+
+\ifsseq@tempif
+ \global\sseq@patchfittrue
+\else
+ \sseq@warning{fit-patch-failed}
+ \global\sseq@patchfitfalse
+\fi
+
+\sseq@tempiftrue
+
+
+%%
+%% sseqforeach.code.tex
+%%
+\sseq@checkdef\pgffor@@vars@opt[#1]{\pgfkeys{/pgf/foreach/.cd,#1}\pgffor@vars}
+
+\sseq@checkdef\pgffor@doloop{%
+ \pgffor@begingroup
+ \edef\pgffor@temp{\expandafter\Pgffor@geT\the\pgffor@iter}%
+ \edef\pgffor@incheck{{.0/}{\pgffor@temp/}}%
+ \expandafter\pgfutil@in@\pgffor@incheck%
+ \ifpgfutil@in@%
+ \expandafter\pgffor@strip\pgffor@temp%
+ \fi%
+ \expandafter\pgfutil@in@\expandafter/\expandafter{\pgffor@var}%
+ \ifpgfutil@in@%
+ \expandafter\def\expandafter\pgffor@valuerest\expandafter{\pgffor@temp//\relax}%
+ \expandafter\pgffor@multiassign\pgffor@var/\pgffor@stop/\pgffor@stop/\relax%
+ \else%
+ % Convert to alphabetic sequence, if necessary.
+ \ifpgffor@alphabeticsequence%
+ \pgffor@makealphabetic\pgffor@temp%
+ \expandafter\let\pgffor@var=\pgffor@temp%
+ \else%
+ \expandafter\expandafter\expandafter\def\expandafter\pgffor@var\expandafter{\pgffor@temp}%
+ \fi%
+ \fi%
+ % Insert any context, if any.
+ \ifpgffor@context%
+ \let\pgffor@temp=\pgffor@dots@pre%
+ \expandafter\pgfutil@append@macrotomacro\expandafter%
+ {\expandafter\pgffor@temp\expandafter}\expandafter{\pgffor@var}%
+ \expandafter\pgfutil@append@macrotomacro\expandafter%
+ {\expandafter\pgffor@temp\expandafter}\expandafter{\pgffor@dots@post}%
+ \expandafter\let\pgffor@var=\pgffor@temp%
+ \fi%
+ % Perform assignments before loop body.
+ \ifx\pgffor@assign@before@code\pgfutil@empty%
+ \else%
+ \pgffor@assign@before@code%
+ \fi%
+ %
+ \expandafter\expandafter\expandafter\pgffor@reset@hooks\expandafter\pgffor@beginhook\expandafter\pgffor@body\pgffor@endhook%
+ %
+ % Perform assignments after loop body.
+ \ifx\pgffor@assign@after@code\pgfutil@empty%
+ \else%
+ \pgffor@assign@after@code%
+ \fi%
+ \pgffor@endgroup%
+ \pgffor@loop%
+}
+
+\sseq@checkdef\pgffor@invokebody{%
+ \pgffor@begingroup%
+ \expandafter\pgfutil@in@\expandafter/\expandafter{\pgffor@var}%
+ \ifpgfutil@in@%
+ \expandafter\def\expandafter\pgffor@valuerest\expandafter{\pgffor@value//\relax}%
+ \expandafter\pgffor@multiassign\pgffor@var/\pgffor@stop/\pgffor@stop/\relax%
+ \else%
+ \expandafter\expandafter\expandafter\def\expandafter\pgffor@var\expandafter{\pgffor@value}%
+ \fi%
+ % Execute assign once code.
+ \ifx\pgffor@assign@once@code\pgfutil@empty%
+ \else\pgffor@assign@once@code%
+ \fi%
+ % Execute assign before code.
+ \ifx\pgffor@assign@before@code\pgfutil@empty%
+ \else\pgffor@assign@before@code%
+ \fi%
+ %
+ \expandafter\expandafter\expandafter\pgffor@reset@hooks\expandafter\pgffor@beginhook\expandafter\pgffor@body\pgffor@endhook%
+ % Execute assign after code.
+ \ifx\pgffor@assign@after@code\pgfutil@empty%
+ \else%
+ \pgffor@assign@after@code%
+ \fi%
+ %
+ \pgffor@endgroup%
+}
+
+\ifsseq@tempif
+ \global\sseq@patchforeachtrue
+\else
+ \sseq@warning{foreach-patch-failed}
+ \global\sseq@patchforeachfalse
+\fi
+
+\endgroup \ No newline at end of file