summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/pack-obj.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/context/base/pack-obj.mkiv')
-rw-r--r--Master/texmf-dist/tex/context/base/pack-obj.mkiv84
1 files changed, 58 insertions, 26 deletions
diff --git a/Master/texmf-dist/tex/context/base/pack-obj.mkiv b/Master/texmf-dist/tex/context/base/pack-obj.mkiv
index 81220e32437..3d87f52b57d 100644
--- a/Master/texmf-dist/tex/context/base/pack-obj.mkiv
+++ b/Master/texmf-dist/tex/context/base/pack-obj.mkiv
@@ -41,7 +41,7 @@
% function objects.register(name)
% objects.n = objects.n + 1
% local list = texbox.objectbox
-% nodes.process_page(list)
+% nodes.handlers.finalize(list)
% data[name] = {
% codeinjections.restore(list),
% texdimen.objectwd,
@@ -90,6 +90,8 @@
% end
% \stopluacode
%
+% \unprotect
+%
% \newbox \objectbox
% \newtoks \everyobject
% \newif \ifinobject
@@ -101,7 +103,7 @@
%
% \def\objectoffset{1cm}
%
-% \everyobject{\the\everyPDFxform}
+% \everyobject{\the\pdfbackendeveryxform}
%
% \let\doresetobjects\relax
%
@@ -263,25 +265,55 @@
{\globalpopmacro\crossreferenceobject
\dododosetobject{#1}{#2}{#3}\egroup}}
-\def\dododosetobject#1#2#3%
- {\begingroup
- \dontshowcomposition % rather fuzzy in \setxvalue ... \hbox
- \scratchdimen\objectoffset
- \@EA\xdef\csname\r!object#2::#3\endcsname
- {\noexpand\dohandleobject{#2}{#3}%
- {\ifhbox\nextbox\hbox\else\vbox\fi}%
- {\number\nextboxwd}{\number\nextboxht}{\number\nextboxdp}%
- {\number\scratchdimen}}%
- \expanded % freeze the dimensions since \dostartobject may use \nextbox
- {\dostartobject{#2}{#3}{\the\nextboxwd}{\the\nextboxht}{\the\nextboxdp}}%
- \ifcase#1\relax\else \ifdim\objectoffset>\zeropoint
- \setbox\nextbox\vbox spread 2\scratchdimen
- {\forgetall \offinterlineskip
- \vss\hbox spread 2\scratchdimen{\hss\flushnextbox\hss}\vss}%
- \fi \fi
- \flushnextbox
- \dostopobject
- \endgroup}
+\ifnum\luatexversion<66
+
+ \def\dododosetobject#1#2#3% this is a hack: luatex adds 1bp around each side
+ {\begingroup
+ \dontshowcomposition % rather fuzzy in \setxvalue ... \hbox
+ \ifcase#1\relax
+ \scratchdimen-\onebasepoint % compensates auto 1 bp
+ \else\ifdim\objectoffset>\zeropoint
+ \scratchdimen \objectoffset
+ \else
+ \scratchdimen-\onebasepoint % compensates auto 1 bp
+ \fi\fi
+ \@EA\xdef\csname\r!object#2::#3\endcsname
+ {\noexpand\dohandleobject{#2}{#3}%
+ {\ifhbox\nextbox\hbox\else\vbox\fi}%
+ {\number\nextboxwd}{\number\nextboxht}{\number\nextboxdp}%
+ {\number\scratchdimen}}%
+ \expanded % freeze the dimensions since \dostartobject may use \nextbox
+ {\dostartobject{#2}{#3}{\the\nextboxwd}{\the\nextboxht}{\the\nextboxdp}}%
+ \setbox\nextbox\vbox spread 2\scratchdimen
+ {\forgetall \offinterlineskip
+ \vss\hbox spread 2\scratchdimen{\hss\flushnextbox\hss}\vss}%
+ \flushnextbox
+ \dostopobject
+ \endgroup}
+
+\else
+
+ \def\dododosetobject#1#2#3%
+ {\begingroup
+ \dontshowcomposition % rather fuzzy in \setxvalue ... \hbox
+ \scratchdimen\objectoffset
+ \@EA\xdef\csname\r!object#2::#3\endcsname
+ {\noexpand\dohandleobject{#2}{#3}%
+ {\ifhbox\nextbox\hbox\else\vbox\fi}%
+ {\number\nextboxwd}{\number\nextboxht}{\number\nextboxdp}%
+ {\number\scratchdimen}}%
+ \expanded % freeze the dimensions since \dostartobject may use \nextbox
+ {\dostartobject{#2}{#3}{\the\nextboxwd}{\the\nextboxht}{\the\nextboxdp}}%
+ \ifcase#1\relax\else \ifdim\objectoffset>\zeropoint
+ \setbox\nextbox\vbox spread 2\scratchdimen
+ {\forgetall \offinterlineskip
+ \vss\hbox spread 2\scratchdimen{\hss\flushnextbox\hss}\vss}%
+ \fi \fi
+ \flushnextbox
+ \dostopobject
+ \endgroup}
+
+\fi
\def\getobject#1#2%
{\begingroup
@@ -353,8 +385,8 @@
% no undefined test ! ! ! ! (pdftex fails on undefined objects)
-\def\doregisterobjectreference#1#2#3{\normalexpanded{\noexpand\ctxlatelua{jobobjects.save("#1::#2",#3,\noexpand\the\realpageno)}}}
-\def\dooverloadobjectreference#1#2#3{\ctxlua{jobobjects.set("#1::#2",#3,\the\realpageno)}}
+\def\doregisterobjectreference#1#2#3{\normalexpanded{\noexpand\ctxlatelua{job.objects.save("#1::#2",#3,\noexpand\the\realpageno)}}}
+\def\dooverloadobjectreference#1#2#3{\ctxlua{job.objects.set("#1::#2",#3,\the\realpageno)}}
\def\dosetobjectreference
{\ifcase\crossreferenceobject
@@ -370,8 +402,8 @@
\def\defaultobjectreference#1#2{0} % driver dependent
\def\defaultobjectpage #1#2{\realfolio}
-\def\dogetobjectreference #1#2#3{\xdef#3{\ctxlua{jobobjects.number("#1::#2","\defaultobjectreference{#1}{#2}")}}}
-\def\dogetobjectreferencepage#1#2#3{\xdef#3{\ctxlua{jobobjects.page("#1::#2","\defaultobjectpage{#1}{#2}")}}}
+\def\dogetobjectreference #1#2#3{\xdef#3{\ctxlua{job.objects.number("#1::#2","\defaultobjectreference{#1}{#2}")}}}
+\def\dogetobjectreferencepage#1#2#3{\xdef#3{\ctxlua{job.objects.page("#1::#2","\defaultobjectpage{#1}{#2}")}}}
\def\setobject {\driverreferenced\dosetobject1}
\def\settightobject{\driverreferenced\dosetobject0}
@@ -394,6 +426,6 @@
\expandafter\secondoftwoarguments
\fi}
-\def\doifobjectreferencefoundelse#1#2{\ctxlua{jobobjects.doifelse("#1::#2")}}
+\def\doifobjectreferencefoundelse#1#2{\ctxlua{job.objects.doifelse("#1::#2")}}
\protect \endinput