summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/node-fin.mkiv
blob: 6c5bf17f1a149881412db67de8a84e77b5ea56a2 (plain)
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
%D \module
%D   [       file=attr-ini,
%D        version=2007.06.06, % probably a bit older
%D          title=\CONTEXT\ Node Macros,
%D       subtitle=Finalizing,
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%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 / Finalizing}

% Objects are processed indepently \unknown\ actually we may
% need a proper callback.

\unprotect

\registerctxluafile{node-shp}{1.001}
\registerctxluafile{node-fin}{1.001} % we might generalize this one

% we might have two variants at some point (efficiency)

\unexpanded\def\finalizeobjectbox #1{\clf_finalizebox#1\relax}
\unexpanded\def\finalizeshipoutbox#1{\clf_finalizebox#1\relax}

% Experimental (for Aditya):

\unexpanded\def\cleanupbox#1{\clf_cleanupbox#1\relax}

% Tricky stuff: this might become obsolete.

\definesystemattribute[trigger][public]

\newcount\c_syst_attr_trigger

\edef\startinheritattributes{\attribute\triggerattribute\plusone}
\edef\stopinheritattributes {\attribute\triggerattribute\attributeunsetvalue}

\def\syst_attr_trigger_copy_yes{\afterassignment\syst_attr_trigger_copy_indeed\c_syst_attr_trigger}
\def\syst_attr_trigger_dump_yes{\afterassignment\syst_attr_trigger_dump_indeed\c_syst_attr_trigger}

\def\syst_attr_trigger_copy_indeed
  {\ifvbox\c_syst_attr_trigger
     \vpack attr \triggerattribute \plusone {\unvcopy\c_syst_attr_trigger}%
   \else
     \hpack attr \triggerattribute \plusone {\unhcopy\c_syst_attr_trigger}%
   \fi}

\def\syst_attr_trigger_dump_indeed
  {\ifvbox\c_syst_attr_trigger
     \vpack attr \triggerattribute \plusone {\unvbox\c_syst_attr_trigger}%
   \else
     \hpack attr \triggerattribute \plusone {\unhbox\c_syst_attr_trigger}%
   \fi}

\unexpanded\def\enableattributeinheritance
  {\clf_enablestatetriggering
   \let\attributedcopy\syst_attr_trigger_copy_yes
   \let\attributedbox \syst_attr_trigger_dump_yes}

\unexpanded\def\disableattributeinheritance
  {\clf_disablestatetriggering
   \let\attributedcopy\copy
   \let\attributedbox \box}

\disableattributeinheritance

\installtexdirective
  {attributes.inheritance}
  {\enableattributeinheritance}
  {\disableattributeinheritance}

% \appendtoks
%     \enableattributeinheritance % might become default
% \to\everyjob

\protect \endinput