typo-chr.mkiv /size: 3141 b    last modification: 2020-07-01 14:35
1
%D \module
2
%D [ file=typo-chr,
3
%D version=2015.01.01, % or about that time
4
%D title=\CONTEXT\ Typesetting Macros,
5
%D subtitle=Cleaning Up Mess,
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
Typesetting
Macros
/
Characters
}
15 16
\unprotect
17 18
%D This is a very experimental feature, mostly for Alan and me to play with in
19
%D publication hell.
20
%D
21
%D \startbuffer
22
%D before, after\par
23
%D before,\removepunctuation after\par
24
%D before\markcontent[gone]{\darkred gone}\removemarkedcontent[gone]after\par
25
%D before\markcontent[kept]{\darkgreen kept}\removemarkedcontent[gone]after\par
26
%D \markcontent[gone]{\darkred gone}\removemarkedcontent[gone]after\par
27
%D \markcontent[kept]{\darkgreen kept}\removemarkedcontent[gone]after\par
28
%D \stopbuffer
29
%D
30
%D \typebuffer \blank \getbuffer\blank
31
%D
32
%D This feature is paragraph based and is only to be used for small snippets of text,
33
%D for instance when combining bit and pieces where keeping a state is complex compared
34
%D to cleaning up unwanted stuff.
35 36
\registerctxluafile
{
typo
-
chr
}{}
37 38
\definesystemattribute
[
marked
][
public
]
39 40
\unexpanded
\def
\removepunctuation
41
{
\clf_pickuppunctuation
action
{
remove
}
\relax
}
% the first experiment
42 43
\unexpanded
\def
\pushpunctuation
44
{
\clf_pickuppunctuation
action
{
push
}
\relax
}
% the first experiment
45 46
\unexpanded
\def
\poppunctuation
47
{
\clf_pickuppunctuation
action
{
pop
}
\relax
}
% the first experiment
48 49
\unexpanded
\def
\markcontent
50
{
\dosingleempty
\typo_marked_mark
}
51 52
\def
\typo_marked_mark
[#
1
]#
2
%
53
{
\dontleavehmode
54
\bgroup
55
\clf_markcontent
{
#
1
}
%
56
\bgroup
57
#
2
% double grouping makes aftergroups work ok
58
\egroup
59
\egroup
}
60 61
\unexpanded
\def
\startmarkedcontent
62
{
\dontleavehmode
63
\bgroup
64
\dosingleempty
\typo_marked_start
}
65 66
\def
\typo_marked_start
[#
1
]
%
67
{
\clf_markcontent
{
#
1
}
%
68
% double grouping makes aftergroups work ok
69
\bgroup
}
70 71
\unexpanded
\def
\stopmarkedcontent
72
{
\egroup
73
\egroup
}
74 75
\unexpanded
\def
\removemarkedcontent
76
{
\dosingleempty
\typo_marked_remove
}
77 78
\def
\typo_marked_remove
[#
1
]
%
79
{
\clf_pickupmarkedcontent
action
{
remove
}
mark
{
#
1
}
\relax
}
80 81
\unexpanded
\def
\doifelsemarkedcontent
#
1
%
82
{
\clf_doifelsemarkedcontent
{
#
1
}}
83 84
%D A few helpers (put here for convenience):
85
%D
86
%D \starttyping
87
%D test test\doifelselastnode{boundary}{word}{YES}{NOP}test
88
%D test test\wordboundary \doifelselastnode{boundary}{word}{YES}{NOP}test
89
%D test test\wordboundary \doifelseatwordboundary{YES}{NOP}test
90
%D test test \lastnodeidstring test
91
%D test test\lastnodeidstring test
92
%D test test\number\lastnodeid test
93
%D \stoptyping
94 95
\newcount
\c_syst_last_node_id
96 97
\unexpanded
\def
\doifelselastnode
{
\clf_lastnodeequals
}
98
\unexpanded
\def
\doifelseatwordboundary
{
\clf_atwordboundary
}
99
\unexpanded
\def
\lastnodeid
{
\clf_lastnodeid
\c_syst_last_node_id
}
100
% \lastnodeidstring % public expandable
101
% \lastnodesubstring % public expandable
102 103
\protect
\endinput
104