diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /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.tex | 223 |
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 |