diff options
Diffstat (limited to 'tex')
-rw-r--r-- | tex/context/base/cont-new.tex | 57 | ||||
-rw-r--r-- | tex/context/base/core-fig.tex | 84 | ||||
-rw-r--r-- | tex/context/base/spec-dpx.tex | 14 |
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 |