1
2
3
4
5
6
7
8
9
10
11
12
13
14\writestatus{loading}{ConTeXt Structure Macros Indented Text}
15
16\unprotect
17
18
19
20
21
22
23
24
25
26\installcorenamespace{indentedtext}
27
28\installcommandhandler \??indentedtext {indentedtext} \??indentedtext
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
57
58\newinteger \c_strc_indentedtexts_nesting
59\newdimension\d_strc_indentedtexts_width
60\newdimension\d_strc_indentedtexts_distance
61
62\appendtoks
63 \frozen\instance\protected\edefcsname\e!start\currentindentedtext\endcsname{\strc_indentedtexts_start{\currentindentedtext}\c_strc_indentedtexts_nesting}
64 \frozen\instance\protected\edefcsname\e!stop \currentindentedtext\endcsname{\strc_indentedtexts_stop}
65
66 \frozen\instance\protected\edefcsname \currentindentedtext\endcsname{\strc_indentedtexts_direct{\currentindentedtext}{0}}
67 \frozen\instance\protected\edefcsname \v!sub\currentindentedtext\endcsname{\strc_indentedtexts_direct{\currentindentedtext}{1}}
68 \frozen\instance\protected\edefcsname\v!sub\v!sub\currentindentedtext\endcsname{\strc_indentedtexts_direct{\currentindentedtext}{2}}
69\to \everydefineindentedtext
70
71\protected\def\strc_indentedtexts_start#1#2
72 {\par
73 \begingroup
74 \cdef\currentindentedtext{#1}
75 \c_strc_indentedtexts_nesting#2\relax
76 \indentedtextparameter\c!before
77 \d_strc_indentedtexts_distance{\indentedtextparameter\c!distance}
78 \ifempty{\indentedtextparameter\c!sample}
79 \setindentedtextparameter\c!sample{\indentedtextparameter\c!text}
80 \fi
81 \assignwidth
82 {\indentedtextparameter\c!width}
83 {\d_strc_indentedtexts_width}
84 {\useindentedtextstyleandcolor\c!headstyle\c!headcolor
85 \indentedtextparameter\c!sample
86 \spr{\indentedtextparameter\c!separator}}
87 {\d_strc_indentedtexts_distance}
88 \advanceby\d_strc_indentedtexts_width \d_strc_indentedtexts_distance
89 \setbox\scratchbox\hbox to \d_strc_indentedtexts_width
90 {\useindentedtextstyleandcolor\c!headstyle\c!headcolor
91 \strut
92 \indentedtextparameter\c!text
93 \hss
94 \spr{\indentedtextparameter\c!separator}
95 \hskip\d_strc_indentedtexts_distance}
96 \parindent\zeropoint
97 \hskip\c_strc_indentedtexts_nesting\d_strc_indentedtexts_width
98 \advanceby\c_strc_indentedtexts_nesting\plusone
99 \dontleavehmode\box\scratchbox
100 \hangindent\c_strc_indentedtexts_nesting\d_strc_indentedtexts_width
101 \useindentedtextstyleandcolor\c!style\c!color}
102
103\protected\def\strc_indentedtexts_stop
104 {\indentedtextparameter\c!after
105 \par
106 \endgroup}
107
108\permanent\tolerant\protected\def\startindentedtext[#1]
109 {\strc_indentedtexts_start{#1}\c_strc_indentedtexts_nesting}
110
111\permanent\let\stopindentedtext\strc_indentedtexts_stop
112
113
114
115
116\protected\def\strc_indentedtexts_direct#1#2
117 {\strc_indentedtexts_start{#1}{#2}\wrapuppar{\strc_indentedtexts_stop}}
118
119\setupindentedtext
120 [\c!style=\v!normal,
121 \c!headstyle=\v!normal,
122
123
124 \c!width=\v!fit,
125 \c!text=\unknown,
126
127 \c!before=\blank,
128 \c!after=\blank,
129 \c!distance=1em,
130 \c!separator={ :}]
131
132\protect \endinput
133 |