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\protected\edefcsname\e!begin\currentblock\endcsname{\strc_blocks_begin{\currentblock}}
38 \frozen \letcsname \e!end \currentblock\endcsname\donothing
39\to \everydefineblock
40
41
42
43
44
45
46\lettonothing\m_block
47\lettonothing\m_subblock
48
49\protected\def\strc_blocks_begin#1
50 {\edef\m_block{#1}
51 \lettonothing\m_subblock
52 \doifelsenextoptionalcs\strc_blocks_begin_yes\strc_blocks_begin_nop}
53
54\protected\def\strc_blocks_begin_yes[#S#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[#S#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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100\let\strc_blocks_setup\relax
101
102\newconstant \c_strc_blocks_index
103\newconditional\c_strc_blocks_display
104
105\permanent\protected\def\dostarthiddenblock
106 {\begingroup
107 \visiblefalse
108 \startnointerference
109 \strc_start_block}
110
111\permanent\protected\def\dostophiddenblock
112 {\strc_stop_block
113 \stopnointerference
114 \endgroup}
115
116\permanent\protected\def\dostartnormalblock
117 {\begingroup
118 \visibletrue
119 \strc_start_block}
120
121\permanent\protected\def\dostopnormalblock
122 {\strc_stop_block
123 \endgroup}
124
125\def\strc_start_block#1#2
126 {\cdef\currentblock{#2}
127 \c_strc_blocks_index#1\relax
128 \strc_blocks_setup
129 \let\strc_blocks_setup\relax
130 \edef\p_alternative{\blockparameter\c!alternative}
131 \ifx\p_alternative\v!text
132 \c_strc_blocks_display\conditionalfalse
133 \else
134 \c_strc_blocks_display\conditionaltrue
135 \fi
136 \ifconditional\c_strc_blocks_display
137 \blockparameter\c!before
138 \fi
139 \begingroup
140 \usesetupsparameter\blockparameter\relax
141 \dostarttagged\t!block\currentblock
142 \useblockstyleandcolor\c!style\c!color
143 \blockparameter\c!inner
144 \ifconditional\c_strc_blocks_display
145 \usealignparameter\blockparameter
146 \else
147 \blockparameter\c!left
148 \fi
149 \ignorespaces}
150
151\def\strc_stop_block
152 {\removeunwantedspaces
153 \ifconditional\c_strc_blocks_display
154 \par
155 \else
156 \blockparameter\c!right
157 \fi
158 \dostoptagged
159 \endgroup
160 \ifconditional\c_strc_blocks_display
161 \blockparameter\c!after
162 \fi}
163
164\tolerant\def\strc_blocks_set_state[#1]#*[#2]#*[#3]
165 {\clf_setstructureblockstate{#1}{#2}{#3}}
166
167\tolerant\def\strc_blocks_select[#1]#*[#2]#*[#S#3]#*[#S#4]
168 {\begingroup
169 \ifhastok={#3}
170 \getparameters[\??blocktemp][\c!criterium=\v!text,#3]
171 \def\strc_blocks_setup{\setupcurrentblock[#3]}
172 \clf_selectstructureblock{#1}{#2}{}{\begincsname\??blocktemp\c!criterium\endcsname}
173 \else
174 \getparameters[\??blocktemp][\c!criterium=\v!text,#4]
175 \def\strc_blocks_setup{\setupcurrentblock[#4]}
176 \clf_selectstructureblock{#1}{#2}{#3}{\begincsname\??blocktemp\c!criterium\endcsname}
177 \fi
178 \endgroup}
179
180\permanent\def\blockuservariable#1
181 {\clf_structureblockuservariable\c_strc_blocks_index{#1}}
182
183
184
185
186
187
188
189\permanent\protected\def\hideblocks {\strc_blocks_set_state[hide]}
190\permanent\protected\def\keepblocks {\strc_blocks_set_state[keep]}
191\permanent\protected\def\useblocks {\strc_blocks_select [use]}
192\permanent\protected\def\processblocks{\strc_blocks_select [process]}
193\permanent\protected\def\selectblocks {\strc_blocks_select [use]}
194
195\permanent\protected\def\doifelseblocksempty{\clf_doifelsestructureblocksempty}
196
197\protect \endinput
198 |