1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
%
% CoDi: Commutative Diagrams for TeX
% Copyright (c) 2015-2020 Paolo Brasolin <paolo.brasolin@gmail.com>
% SPDX-License-Identifier: MIT
%
% This file is part of CoDi 1.0.1, released on 2020/06/11 under MIT license.
%
% βάπτω • (báptō)
% 1. I dip, submerge
% 2. I dye, colour
% 3. I baptise
% Bapto is a node labeling mechanism.
% It allows non-invasive relabeling and preprocessing.
% ,-- input input hook
% `-> controller --. the controller conditionally
% ,---[overwrite]--' (depending upon the given overwriting behaviour)
% `-> trigger -----. calls the trigger
% ,--- ??? <-------' either short the keys or do preprocessing here
% `-> dispatcher --. the dispatcher conditionally
% ,---[overwrite]--| (depending upon the given overwriting behaviour)
% `-> (name|alias) | assigns the label
% output <-----' output hook
%==[ input ]====================================================================
\pgfqkeys{/bapto/input}{
.forward to=/bapto/controller
}
%==[ controller/dispatcher ]====================================================
\pgfqkeys{/bapto/overwrite}{.is choice,
false/.style={/bapto/controller/.code={\def\kDTmp{##1}\ifx\kDTmp\empty\else
\tikz@fig@name\ifx\tikz@fig@name\empty
\pgfqkeys{/bapto}{trigger={##1}}\fi\fi},
/bapto/dispatcher/.code={\pgfqkeys{/tikz}{name=##1}%
\pgfqkeys{/bapto}{output=##1}}},
alias/.style={/bapto/controller/.code={\def\kDTmp{##1}\ifx\kDTmp\empty\else
\pgfqkeys{/bapto}{trigger={##1}}\fi},
/bapto/dispatcher/.code={\pgfqkeys{/tikz}{alias=##1}%
\pgfqkeys{/bapto}{output=##1}}},
true/.style= {/bapto/controller/.code={\def\kDTmp{##1}\ifx\kDTmp\empty\else
\pgfqkeys{/bapto}{trigger={##1}}\fi},
/bapto/dispatcher/.code={\pgfqkeys{/tikz}{name=##1}%
\pgfqkeys{/bapto}{output=##1}}},
false, % default is no name overwriting and no aliasing
}
%==[ output ]===================================================================
\pgfqkeys{/bapto/output}{
.code={}
}
|