strc-ind.mkxl /size: 4429 b    last modification: 2023-12-21 09:44
1%D \module
2%D   [       file=strc-ind, % was part of strc-des,
3%D        version=2008.10.20,
4%D          title=\CONTEXT\ Structure Macros,
5%D       subtitle=Indented Text,
6%D         author=Hans Hagen,
7%D           date=\currentdate,
8%D      copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
9%C
10%C This module is part of the \CONTEXT\ macro||package and is
11%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
12%C details.
13
14\writestatus{loading}{ConTeXt Structure Macros / Indented Text}
15
16\unprotect
17
18%D \macros
19%D   {defineindentedtext,
20%D    setupindentedtext}
21%D
22%D Ok, we keep it but with a different command as it all looks too
23%D much like indentation and indenting. We also assume start/stop
24%D usage or some explicit par.
25
26\installcorenamespace{indentedtext}
27
28\installcommandhandler \??indentedtext {indentedtext} \??indentedtext
29
30%D \startbuffer
31%D \defineindentedtext[one][text=one]
32%D \defineindentedtext[two][text=two]
33%D
34%D \one test test \par
35%D \subone test test \par
36%D \subtwo test test \par
37%D \subsubone test test \par
38%D
39%D \startone
40%D     test test
41%D     \startone
42%D         test test
43%D         \startone
44%D             test test
45%D         \stopone
46%D         \starttwo
47%D             test test
48%D             \startone
49%D                 test test
50%D             \stopone
51%D         \stoptwo
52%D     \stopone
53%D \stopone
54%D \stopbuffer
55%D
56%D \typebuffer \getbuffer
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   % to be avoided ... might go away
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% we need to get rid of \spr
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\relax
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% \protected\def\strc_indentedtexts_direct#1#2#3\par % no longer clever grabpar trickery
114%   {\strc_indentedtexts_start{#1}{#2}#3\strc_indentedtexts_stop}
115
116\protected\def\strc_indentedtexts_direct#1#2% more modern anyway
117  {\strc_indentedtexts_start{#1}{#2}\wrapuppar{\strc_indentedtexts_stop}}
118
119\setupindentedtext
120  [\c!style=\v!normal,
121   \c!headstyle=\v!normal,
122  %\c!color=,
123  %\c!headcolor=,
124   \c!width=\v!fit,
125   \c!text=\unknown,
126  %\c!sample=,
127   \c!before=\blank,
128   \c!after=\blank,
129   \c!distance=1em,
130   \c!separator={ :}]
131
132\protect \endinput
133