1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
%D \module
%D [ file=node-ini,
%D version=2006.08.20,
%D title=\CONTEXT\ Node Macros,
%D subtitle=Initialization,
%D author=Hans Hagen,
%D date=\currentdate,
%D copyright=PRAGMA]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
\writestatus{loading}{ConTeXt Node Support / Initialization}
\unprotect
\newcount\filterstate \filterstate\plusone
\registerctxluafile{node-ini}{1.001}
\registerctxluafile{node-dir}{1.001}
\registerctxluafile{node-aux}{1.001}
\registerctxluafile{node-tst}{1.001}
\registerctxluafile{node-tra}{1.001} % we might split it off (module)
\registerctxluafile{node-seq}{1.001} % we might generalize this one
\registerctxluafile{node-tsk}{1.001}
\registerctxluafile{node-tex}{1.001}
\registerctxluafile{node-res}{1.001}
\registerctxluafile{node-pro}{1.001}
\registerctxluafile{node-shp}{1.001}
\registerctxluafile{node-ser}{1.001}
\registerctxluafile{node-ext}{1.001}
\registerctxluafile{node-inj}{1.001} % we might split it off
\registerctxluafile{node-typ}{1.001} % experimental
\newtoks \attributesresetlist
\ifdefined \v!global \else \def\v!global{global} \fi % for metatex
\unexpanded\def\defineattribute
{\dodoubleempty\dodefineattribute}
\def\dodefineattribute[#1][#2]% alternatively we can let lua do the housekeeping
{\expandafter\newattribute\csname @attr@#1\endcsname
\expandafter \xdef\csname :attr:#1\endcsname{\number\lastallocatedattribute}%
\ctxlua{attributes.define("#1",\number\lastallocatedattribute)}%
%\writestatus\m!systems{defining attribute #1 with number \number\lastallocatedattribute}%
\doifnotinset\v!global{#2}{\appendetoks\csname @attr@#1\endcsname\attributeunsetvalue\to\attributesresetlist}}
\unexpanded\def\definesystemattribute
{\dodoubleempty\dodefinesystemattribute}
\def\dodefinesystemattribute[#1][#2]% alternatively we can let lua do the housekeeping
{\scratchcounter\ctxlua{tex.print(attributes.private("#1"))}\relax
\global\expandafter\attributedef\csname @attr@#1\endcsname\scratchcounter
\expandafter \xdef\csname :attr:#1\endcsname{\number\scratchcounter}%
%\writestatus\m!systems{defining system attribute #1 with number \number\scratchcounter}%
\doifnotinset\v!global{#2}{\appendetoks\csname @attr@#1\endcsname\attributeunsetvalue\to\attributesresetlist}}
% expandable so we can \edef them for speed
\def\dosetattribute#1#2{\csname @attr@#1\endcsname#2\relax}
\def\doresetattribute#1{\csname @attr@#1\endcsname\attributeunsetvalue}
\def\dogetattribute #1{\number\csname @attr@#1\endcsname}
\def\dogetattributeid#1{\csname :attr:#1\endcsname}
\let\dompattribute\gobbletwoarguments
\def\resetallattributes{\the\attributesresetlist}
\newcount\shownodescounter
\def\shownextnodes {\afterassignment\doshownodes\shownextnodescounter}
\def\showflatnodes {\afterassignment\doshownodes\showflatnodescounter}
\def\doshownextnodes {\ctxlua{texio.write_nl('log',nodes.serializebox(\number\shownodescounter,false,true))}}
\def\doshowflatnodes {\ctxlua{texio.write_nl('log',nodes.serializebox(\number\shownodescounter,true, true))}}
\def\visualizenextnodes{\dowithnextbox{\ctxlua{nodes.visualizebox(\number\nextbox,false,true)}}}
\def\visualizeflatnodes{\dowithnextbox{\ctxlua{nodes.visualizebox(\number\nextbox,true,true)}}}
\unexpanded\def\starttracingnodes[#1]{\ctxlua{nodes.tracers.characters.start("#1")}}
\unexpanded\def\stoptracingnodes {\ctxlua{nodes.tracers.characters.stop()}}
% \starttext
% \starttracingnodes[characters]
% \input tufte \par
% \input tufte \par
% \stoptracingnodes
% \stoptext
\protect \endinput
|