summaryrefslogtreecommitdiff
path: root/tex/context/base/strc-tag.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/strc-tag.mkiv')
-rw-r--r--tex/context/base/strc-tag.mkiv73
1 files changed, 69 insertions, 4 deletions
diff --git a/tex/context/base/strc-tag.mkiv b/tex/context/base/strc-tag.mkiv
index 6563e884e..88377a600 100644
--- a/tex/context/base/strc-tag.mkiv
+++ b/tex/context/base/strc-tag.mkiv
@@ -256,13 +256,78 @@
[\c!state=\v!stop,
\c!method=\v!auto]
+% \unexpanded\def\startparagraph
+% {\dostarttagged\t!paragraph\empty}
+%
+% \unexpanded\def\stopparagraph
+% {% \removeunwantedspaces % yes or no
+% \dostoptagged
+% \par}
+
+% Cf suggestion by Wolfgang we now have named paragraphs. Watch out, the content
+% is grouped but only when we have an instance.
+%
+% \defineparagraph[red] [color=red]
+% \defineparagraph[bold][style=bold]
+%
+% \startparagraph \input ward \stopparagraph
+% \startparagraph[red] \input ward \stopparagraph
+% \startparagraph[bold] \input ward \stopparagraph
+
+\installcorenamespace {paragraph}
+\installcommandhandler \??paragraph {paragraph} \??paragraph
+
+\setupparagraph % someday maybe also strut (beg/end) and align
+ [\c!color=,
+ \c!style=]
+
\unexpanded\def\startparagraph
- {\dostarttagged\t!paragraph\empty}
+ {\dodoubleempty\paragraph_start}
+
+\def\paragraph_start
+ {\iffirstargument
+ \ifsecondargument
+ \doubleexpandafter\paragraph_start_two
+ \else
+ \doubleexpandafter\paragraph_start_one
+ \fi
+ \else
+ \expandafter\paragraph_start_zero
+ \fi}
+
+\def\paragraph_start_two[#1][#2]%
+ {\endgraf % we end before the group
+ \begingroup
+ \let\stopparagraph\paragraph_stop_indeed
+ \edef\currentparagraph{#1}%
+ \setupcurrentparagraph[#2]%
+ \paragraph_start_indeed}
+
+\def\paragraph_start_one[#1][#2]%
+ {\endgraf % we end before the group
+ \begingroup
+ \let\stopparagraph\paragraph_stop_indeed
+ \doifassignmentelse{#1}
+ {\let\currentparagraph\empty
+ \setupcurrentparagraph[#1]}
+ {\edef\currentparagraph{#1}}%
+ \paragraph_start_indeed}
+
+\def\paragraph_start_indeed
+ {\useparagraphstyleandcolor\c!style\c!color
+ \dostarttagged\t!paragraph\currentparagraph}
+
+\def\paragraph_start_zero[#1][#2]%
+ {\let\currentparagraph\empty
+ \paragraph_start_indeed}
+
+\unexpanded\def\paragraph_stop_indeed
+ {\dostoptagged
+ \endgraf % we end inside the group
+ \endgroup}
\unexpanded\def\stopparagraph
- {% \removeunwantedspaces % yes or no
- \dostoptagged
- \par}
+ {\dostoptagged}
\let\startpar\startparagraph
\let\stoppar \stopparagraph