1
2
3
4
5
6
7
8
9
10
11
12
13
14\writestatus{loading}{ConTeXt Structure Macros Blockmoves}
15
16\registerctxluafile{strcblk}{}
17
18\unprotect
19
20
21
22
23
24
25
26
27
28
29
30\installcorenamespace {block}
31\installcorenamespace {blocktemp}
32
33\installcommandhandler \??block {block} \??block
34
35\appendtoks
36 \clf_definestructureblock{\currentblock}
37 \frozen\setuevalue{\e!begin\currentblock}{\strc_blocks_begin{\currentblock}}
38 \frozen\letvalue {\e!end \currentblock}\donothing
39\to \everydefineblock
40
41
42
43
44
45
46\let\m_block \empty
47\let\m_subblock\empty
48
49\protected\def\strc_blocks_begin#1
50 {\edef\m_block {#1}
51 \let \m_subblock\empty
52 \doifelsenextoptionalcs\strc_blocks_begin_yes\strc_blocks_begin_nop}
53
54\protected\def\strc_blocks_begin_yes[#1]
55 {\doifelseassignmentcs{#1}
56 \strc_blocks_begin_indeed
57 \strc_blocks_begin_tagged
58 {#1}}
59
60\protected\def\strc_blocks_begin_tagged#1
61 {\edef\m_subblock{#1}
62 \doifelsenextoptionalcs\strc_blocks_begin_yes_yes\strc_blocks_begin_nop}
63
64\protected\def\strc_blocks_begin_yes_yes[#1]
65 {\strc_blocks_begin_indeed{#1}}
66
67\protected\def\strc_blocks_begin_nop
68 {\strc_blocks_begin_indeed{}}
69
70\protected\def\strc_blocks_begin_indeed#1
71 {\normalexpanded{\buff_pickup{\??block}{\e!begin\m_block}{\e!end\m_block}}
72 {}
73 {\clf_savestructureblock{\m_block}{\m_subblock}{#1}{\??block}}
74 \plusone}
75
76\let\strc_blocks_setup\relax
77
78\newconstant \c_strc_blocks_index
79\newconditional\c_strc_blocks_display
80
81\permanent\protected\def\dostarthiddenblock
82 {\begingroup
83 \visiblefalse
84 \startnointerference
85 \strc_start_block}
86
87\permanent\protected\def\dostophiddenblock
88 {\strc_stop_block
89 \stopnointerference
90 \endgroup}
91
92\permanent\protected\def\dostartnormalblock
93 {\begingroup
94 \visibletrue
95 \strc_start_block}
96
97\permanent\protected\def\dostopnormalblock
98 {\strc_stop_block
99 \endgroup}
100
101\def\strc_start_block#1#2
102 {\edef\currentblock{#2}
103 \c_strc_blocks_index#1\relax
104 \strc_blocks_setup
105 \let\strc_blocks_setup\relax
106 \edef\p_alternative{\blockparameter\c!alternative}
107 \ifx\p_alternative\v!text
108 \setfalse\c_strc_blocks_display
109 \else
110 \settrue\c_strc_blocks_display
111 \fi
112 \ifconditional\c_strc_blocks_display
113 \blockparameter\c!before
114 \fi
115 \begingroup
116 \usesetupsparameter\blockparameter\relax
117 \dostarttagged\t!block\currentblock
118 \useblockstyleandcolor\c!style\c!color
119 \blockparameter\c!inner
120 \ifconditional\c_strc_blocks_display
121 \usealignparameter\blockparameter
122 \else
123 \blockparameter\c!left
124 \fi
125 \ignorespaces}
126
127\def\strc_stop_block
128 {\removeunwantedspaces
129 \ifconditional\c_strc_blocks_display
130 \par
131 \else
132 \blockparameter\c!right
133 \fi
134 \dostoptagged
135 \endgroup
136 \ifconditional\c_strc_blocks_display
137 \blockparameter\c!after
138 \fi}
139
140\tolerant\def\strc_blocks_set_state[#1]#*[#2]#*[#3]
141 {\clf_setstructureblockstate{#1}{#2}{#3}}
142
143\tolerant\def\strc_blocks_select[#1]#*[#2]#*[#3]#*[#4]
144 {\begingroup
145 \ifhastok={#3}
146 \getparameters[\??blocktemp][\c!criterium=\v!text,#3]
147 \def\strc_blocks_setup{\setupcurrentblock[#3]}
148 \clf_selectstructureblock{#1}{#2}{}{\csname\??blocktemp\c!criterium\endcsname}
149 \else
150 \getparameters[\??blocktemp][\c!criterium=\v!text,#4]
151 \def\strc_blocks_setup{\setupcurrentblock[#4]}
152 \clf_selectstructureblock{#1}{#2}{#3}{\csname\??blocktemp\c!criterium\endcsname}
153 \fi
154 \endgroup}
155
156\permanent\def\blockuservariable#1
157 {\clf_structureblockuservariable\c_strc_blocks_index{#1}}
158
159
160
161
162
163
164
165\permanent\protected\def\hideblocks {\strc_blocks_set_state[hide]}
166\permanent\protected\def\keepblocks {\strc_blocks_set_state[keep]}
167\permanent\protected\def\useblocks {\strc_blocks_select [use]}
168\permanent\protected\def\processblocks{\strc_blocks_select [process]}
169\permanent\protected\def\selectblocks {\strc_blocks_select [use]}
170
171\permanent\protected\def\doifelseblocksempty{\clf_doifelsestructureblocksempty}
172
173\protect \endinput
174 |