summaryrefslogtreecommitdiff
path: root/tex/context/base/node-fin.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/node-fin.mkiv')
-rw-r--r--tex/context/base/node-fin.mkiv74
1 files changed, 74 insertions, 0 deletions
diff --git a/tex/context/base/node-fin.mkiv b/tex/context/base/node-fin.mkiv
new file mode 100644
index 000000000..ea9e83f16
--- /dev/null
+++ b/tex/context/base/node-fin.mkiv
@@ -0,0 +1,74 @@
+%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]
+%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-fin}{1.001} % we might generalize this one
+
+\definesystemattribute[trigger] \chardef\triggerattribute \dogetattributeid{trigger} % feature inheritance
+
+\def\finalizeobjectbox #1{\ctxlua{nodes.process_page(tex.box[\number#1])}}
+\def\finalizeshipoutbox#1{\ctxlua{nodes.process_page(tex.box[\number#1])}}
+
+% tricky stuff:
+
+% THIS MIGHT BECOME OBSOLETE.
+
+\newcount\attributeboxcount
+
+\edef\startinheritattributes{\attribute\triggerattribute\plusone}
+\edef\stopinheritattributes {\attribute\triggerattribute\attributeunsetvalue}
+
+\def\doattributedcopy{\afterassignment\dodoattributedcopy\attributeboxcount}
+\def\doattributedbox {\afterassignment\dodoattributedbox \attributeboxcount}
+
+\def\dodoattributedcopy
+ {\startinheritattributes
+ \ifvbox\attributeboxcount
+ \vbox{\unvcopy\attributeboxcount}%
+ \else
+ \hbox{\unhcopy\attributeboxcount}%
+ \fi
+ \stopinheritattributes}
+
+\def\dodoattributedbox
+ {\startinheritattributes
+ \ifvbox\attributeboxcount
+ \vbox{\unvbox\attributeboxcount}%
+ \else
+ \hbox{\unhbox\attributeboxcount}%
+ \fi
+ \stopinheritattributes}
+
+\def\enableattributeinheritance
+ {\ctxlua{states.enabletriggering()}%
+ \let\attributedcopy\doattributedcopy
+ \let\attributedbox \doattributedbox}
+
+\def\disableattributeinheritance
+ {\ctxlua{states.disabletriggering()}%
+ \let\attributedcopy\copy
+ \let\attributedbox \box}
+
+\disableattributeinheritance
+
+% \appendtoks
+% \enableattributeinheritance % will become default
+% \to\everyjob
+
+\protect \endinput