summaryrefslogtreecommitdiff
path: root/tex
diff options
context:
space:
mode:
Diffstat (limited to 'tex')
-rw-r--r--tex/context/base/cont-new.tex57
-rw-r--r--tex/context/base/core-fig.tex84
-rw-r--r--tex/context/base/spec-dpx.tex14
3 files changed, 107 insertions, 48 deletions
diff --git a/tex/context/base/cont-new.tex b/tex/context/base/cont-new.tex
index aaf2f7f52..9b1fa1627 100644
--- a/tex/context/base/cont-new.tex
+++ b/tex/context/base/cont-new.tex
@@ -11,7 +11,7 @@
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.
-\newcontextversion{2006.05.16 18:35}
+\newcontextversion{2006.05.17 10:08}
%D This file is loaded at runtime, thereby providing an
%D excellent place for hacks, patches, extensions and new
@@ -26,6 +26,61 @@
\writestatus{\m!systems}{beware: some patches loaded from cont-new.tex}
+% This will move to core-fig asap:
+%
+% todo: process between runs
+
+\startXMLmapping[rli]
+ \defineXMLprocess[rl:identify]
+ \defineXMLsavecontent[rl:width] {\!!zeropoint}
+ \defineXMLsavecontent[rl:height]{\!!zeropoint}
+\stopXMLmapping
+
+\def\getRLIfiguredimensions#1%
+ {\let\rliwidth \!!zeropoint
+ \let\rliheight\!!zeropoint
+ \doiffileelse{\@@effilenametype.rli}
+ {}
+ {% let's try runtime running first
+ \writestatus\m!figures{using rlxtools to determine size of \@@effilenametype}%
+ \executesystemcommand{texmfstart rlxtools --identify \@@effilenametype}}%
+ \doiffileelse{\@@effilenametype.rli}
+ {}
+ {% we assume that runtime running failed
+ \installprogram{texmfstart rlxtools --identify \@@effilenametype}}%
+ \startnointerference
+ \startXMLmapping[rli]%
+ \startXMLignore
+ \processXMLfile{\@@effilenametype.rli}%
+ \edef\rliwidth {\XMLflush{rl:width}}%
+ \edef\rliheight{\XMLflush{rl:height}}%
+ \stopXMLignore
+ \stopXMLmapping
+ \stopnointerference}
+
+\def\getfiguredimensionsC
+ {\ifcase\figurestatus\ifcase\figurefilemode\else
+ \doifsomething\@@efcurrentpath
+ {\doifnotinset\@@effiletype{\c!tex,\c!tmp}
+ {\doiffileelse\@@efcurrentfile
+ {\@@eftrace{using rlxtools to identify \@@effilenametype}%
+ \getRLIfiguredimensions{\@@effilenametype}%
+ \ifdim\rliwidth>\zeropoint \ifdim\rliheight>\zeropoint
+ \geteparameters % e !
+ [\??ep]
+ [\c!x=\!!zeropoint,\c!y=\!!zeropoint, % brrr, todo: bbox
+ \c!w=\rliwidth,\c!h=\rliheight]%
+ \let\@@eftype\@@efcurrenttype
+ \let\@@effullname\@@efcurrentfile
+ \chardef\figurestatus\plusfour % todo, message is wrong now
+ \fi \fi
+ \@@eftrace{\ifcase\figurestatus not \fi found}}
+ {}}}%
+ \fi\fi}
+
+\let\doanalyzefigurefilesB\relax % obsolete
+\let\doanalyzefigurefilesC\relax % obsolete
+
\def\environment #1 % at outermost level only (load only once)
{\pushmacro\startenvironment
\pushmacro\stopenvironment
diff --git a/tex/context/base/core-fig.tex b/tex/context/base/core-fig.tex
index cceb9cb1d..0c2d4f0c3 100644
--- a/tex/context/base/core-fig.tex
+++ b/tex/context/base/core-fig.tex
@@ -461,7 +461,7 @@
\@EA\DOIF\@EA{\@@effilenametype}{#1} % hm, tzt ook nog eens met pad/naam
{\getparameters[\??ep][#2]%
\ExpandBothAfter\doif\@@epe\@@efcurrenttype
- {\chardef\figurestatus4
+ {\chardef\figurestatus\plusfour
\let\@@eftype\@@efcurrenttype
\let\@@effullname\@@efcurrentfile}}%
\else
@@ -471,24 +471,22 @@
\def\getfiguredimensionsC
{\ifconsultutilityfile \ifrunutilityfile
\ifcase\figurestatus\ifcase\figurefilemode\else
-\doifsomething\@@efcurrentpath
-{%
- \doifnotinset\@@effiletype{\c!tex,\c!tmp}
- {\doiffileelse\@@efcurrentfile
- {\edef\@@effilenametype{\@@effilename.\@@efcurrenttype}%
- \@@eftrace{running texutil on \@@effilenametype}%
- \def\@@efloadname{\f!utilityfilename.\f!temporaryextension}%
- \executesystemcommand{texutil --fig --out=\@@efloadname\space\@@effilenametype}%
- \@@eftrace{analyzing \@@efloadname\space on \@@effilenametype}%
- \pushendofline
- \startreadingfile
- \let\presetfigure\presetfigureB
- \readsetfile{.}\@@efloadname\donothing\donothing
- \stopreadingfile
- \popendofline
- \@@eftrace{\ifcase\figurestatus not \fi found}}
- {}}%
-}%
+ \doifsomething\@@efcurrentpath
+ {\doifnotinset\@@effiletype{\c!tex,\c!tmp}
+ {\doiffileelse\@@efcurrentfile
+ {\edef\@@effilenametype{\@@effilename.\@@efcurrenttype}%
+ \@@eftrace{running texutil on \@@effilenametype}%
+ \def\@@efloadname{\f!utilityfilename.\f!temporaryextension}%
+ \executesystemcommand{texutil --fig --out=\@@efloadname\space\@@effilenametype}%
+ \@@eftrace{analyzing \@@efloadname\space on \@@effilenametype}%
+ \pushendofline
+ \startreadingfile
+ \let\presetfigure\presetfigureB
+ \readsetfile{.}\@@efloadname\donothing\donothing
+ \stopreadingfile
+ \popendofline
+ \@@eftrace{\ifcase\figurestatus not \fi found}}
+ {}}}%
\fi\fi
\fi\fi}
@@ -503,19 +501,17 @@
\def\doanalyzefigurefilesB
{\ifconsultutilityfile\ifcase\figurestatus\ifcase\figurefilemode\else
-\doifsomething\@@efcurrentpath
-{%
- \assignfullfilename\@@efcurrentpath\@@exfile\to\@@efloadname
- \edef\@@effilenametype{\@@effilename.\figureextension{\@@efcurrenttype}}%
- \@@eftrace{analyzing \@@efloadname\space on \@@efcurrentpath\space for \@@effilenametype}%
- \pushendofline
- \startreadingfile
- \let\presetfigure\presetfigureC
- \readsetfile\@@efcurrentpath\@@exfile\donothing\donothing
- \stopreadingfile
- \popendofline
- \@@eftrace{\ifcase\figurestatus not \fi found}%
-}%
+ \doifsomething\@@efcurrentpath
+ {\assignfullfilename\@@efcurrentpath\@@exfile\to\@@efloadname
+ \edef\@@effilenametype{\@@effilename.\figureextension{\@@efcurrenttype}}%
+ \@@eftrace{analyzing \@@efloadname\space on \@@efcurrentpath\space for \@@effilenametype}%
+ \pushendofline
+ \startreadingfile
+ \let\presetfigure\presetfigureC
+ \readsetfile\@@efcurrentpath\@@exfile\donothing\donothing
+ \stopreadingfile
+ \popendofline
+ \@@eftrace{\ifcase\figurestatus not \fi found}}%
\fi\fi\fi}
\def\presetfigureC[#1][#2]%
@@ -523,7 +519,7 @@
\@EA\DOIF\@EA{\@@effilenametype}{#1}
{\getparameters[\??ep][#2]%
\doif\@@epe\@@efcurrenttype
- {\chardef\figurestatus4
+ {\chardef\figurestatus\plusfour
\let\@@eftype\@@efcurrenttype
\let\@@effullname\@@efcurrentfile}}%
\else
@@ -535,18 +531,16 @@
\def\doanalyzefigurefilesC
{\ifconsultutilityfile\ifcase\figurestatus\ifcase\figurefilemode\else
-\doifsomething\@@efcurrentpath
-{%
- \assignfullfilename\@@efcurrentpath\@@exfile\to\@@efloadname
- \@@eftrace{analyzing \@@efloadname\space on \@@efcurrentpath\space for \@@effilename.* surrogate}%
- \pushendofline
- \startreadingfile
- \let\presetfigure\presetfigureD
- \readsetfile\@@efcurrentpath\@@exfile\donothing\donothing
- \stopreadingfile
- \popendofline
- \@@eftrace{\ifcase\figurestatus not \fi found}%
-}%
+ \doifsomething\@@efcurrentpath
+ {\assignfullfilename\@@efcurrentpath\@@exfile\to\@@efloadname
+ \@@eftrace{analyzing \@@efloadname\space on \@@efcurrentpath\space for \@@effilename.* surrogate}%
+ \pushendofline
+ \startreadingfile
+ \let\presetfigure\presetfigureD
+ \readsetfile\@@efcurrentpath\@@exfile\donothing\donothing
+ \stopreadingfile
+ \popendofline
+ \@@eftrace{\ifcase\figurestatus not \fi found}}%
\fi\fi\fi}
\def\presetfigureD[#1][#2]%
diff --git a/tex/context/base/spec-dpx.tex b/tex/context/base/spec-dpx.tex
index 2e4aaa6f1..f317a3887 100644
--- a/tex/context/base/spec-dpx.tex
+++ b/tex/context/base/spec-dpx.tex
@@ -853,7 +853,7 @@
%D 7. Copied codes from \type{spec-dvi}
-% coming pdftex versions will provide pos support
+% coming pdftex versions will provide pos support in dvi mode (untested)
% \ifnum\pdftexversion>140 .. \fi
@@ -869,11 +869,21 @@
\let\flushDVIpositionpapersize\relax
\definespecial\dosetpositionpapersize#1#2%
- {\xdef\flushDVIpositionpapersize%
+ {\xdef\flushDVIpositionpapersize
{\special{pos:papersize #1 #2}%
\noexpand\installprogram{dvipos -o \jobname.tuo \jobname.dvi }%
\global\noexpand\let\noexpand\flushDVIpositionpapersize\relax}}
+\beginXETEX
+
+ \definespecial\dosetpositionpapersize#1#2%
+ {\xdef\flushDVIpositionpapersize
+ {\special{pos:papersize #1 #2}%
+ \noexpand\installprogram{dvipos -o \jobname.tuo \jobname.xdv }%
+ \global\noexpand\let\noexpand\flushDVIpositionpapersize\relax}}
+
+\endXETEX
+
\prependtoksonce \flushDVIpositionpapersize \to \everyshipout
\stopspecials