summaryrefslogtreecommitdiff
path: root/tex/context/base/mkiv/page-sel.mkvi
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkiv/page-sel.mkvi')
-rw-r--r--tex/context/base/mkiv/page-sel.mkvi49
1 files changed, 39 insertions, 10 deletions
diff --git a/tex/context/base/mkiv/page-sel.mkvi b/tex/context/base/mkiv/page-sel.mkvi
index eb8389032..335d01187 100644
--- a/tex/context/base/mkiv/page-sel.mkvi
+++ b/tex/context/base/mkiv/page-sel.mkvi
@@ -45,6 +45,9 @@
%D
%D This macros inserts the page, according to the settings provided.
+%D Beware: width is not the width of the image, but height can be used to control
+%D its dimensions.
+
\installcorenamespace{withpages}
\installsetuponlycommandhandler \??withpages {withpages}
@@ -64,7 +67,11 @@
{\bgroup
\dontcomplain
\getfiguredimensions[#filename]%
- \setupcurrentwithpages[\c!width=\zeropoint,\c!n=\noffigurepages,#settings]%
+ \setupcurrentwithpages
+ [\c!width=\zeropoint,%
+ \c!n=\noffigurepages,%
+ \c!category=,%
+ #settings]%
\global\c_page_selectors_n\directwithpagesparameter\c!n\relax
\scratchwidth\directwithpagesparameter\c!width\relax
\doifinset0{#emptylist}
@@ -82,7 +89,11 @@
{\bgroup
\dontcomplain
\getfiguredimensions[#filename]%
- \setupcurrentwithpages[\c!width=\zeropoint,\c!n=\noffigurepages,#settings]%
+ \setupcurrentwithpages
+ [\c!width=\zeropoint,%
+ \c!n=\noffigurepages,%
+ \c!category=,%
+ #settings]%
\global\c_page_selectors_n\directwithpagesparameter\c!n\relax
\scratchwidth\directwithpagesparameter\c!width\relax
\edef\p_selection{#selection}%
@@ -108,13 +119,19 @@
\egroup}
\def\page_selectors_filter_a_page#filename#page%
- {\hbox to \textwidth
+ {\hpack to \textwidth
{\ifdim\scratchwidth>\zeropoint
\rightorleftpageaction{\scratchwidth\zeropoint}{\hfill}%
\fi
- \setbox\scratchbox\hbox
+ \setbox\scratchbox\hpack
{\hskip-\scratchwidth
- \externalfigure[#filename][\c!page=#page,\c!height=\textheight]\hss}%
+ \edef\p_category{\directwithpagesparameter\c!category}% \useexternalfigure[foo][width=\textwidth]
+ \ifx\p_category\empty
+ \externalfigure[#filename][\c!page=#page,\c!height=\textheight]%
+ \else
+ \externalfigure[#filename][\p_category][\c!page=#page]%
+ \fi
+ \hss}%
\wd\scratchbox\zeropoint
\box\scratchbox}
\page}
@@ -125,14 +142,19 @@
\def\page_selectors_copy[#filename][#settings][#figuresettings]%
{\bgroup
\getfiguredimensions[#filename]%
- \setupcurrentwithpages[\c!marking=\v!off,\c!offset=\zeropoint,\c!n=\noffigurepages,#settings]%
+ \setupcurrentwithpages
+ [\c!marking=\v!off,%
+ \c!offset=\zeropoint,%
+ \c!n=\noffigurepages,%
+ \c!category=,%
+ #settings]%
\global\c_page_selectors_n\directwithpagesparameter\c!n\relax
\scratchoffset\directwithpagesparameter\c!offset\relax
\dorecurse\c_page_selectors_n
{\vbox to \textheight
{\hsize\textwidth
\centeredbox
- {\doifelse{\directwithpagesparameter\c!marking}\v!on\cuthbox\hbox % only place where cuthbox is used
+ {\doifelse{\directwithpagesparameter\c!marking}\v!on\cuthbox\hpack % only place where cuthbox is used
{\ifdim\scratchoffset>\zeropoint\relax
\advance\vsize -2\scratchoffset
\advance\hsize -2\scratchoffset
@@ -187,6 +209,7 @@
\c!before=\page,\c!after=\page,\c!inbetween=\blank,
\c!frame=,\c!background=,\c!backgroundcolor=,
\c!name={#filename},
+ \c!category=,
#settings]%
\global\c_page_selectors_n\directwithpagesparameter\c!n\relax
\directwithpagesparameter\c!before
@@ -199,7 +222,7 @@
\directwithpagesparameter\c!after
\egroup}
-\setvalue{\??combinepagesalternative\v!a}%
+\setvalue{\??combinepagesalternative\v!a}% use hpacks
{\global\combinedpagescounter\directwithpagesparameter\c!start\relax
\doloop
{\vbox to \textheight
@@ -322,8 +345,14 @@
\global\let\slicedpagenumber\!!zerocount
\getfiguredimensions[#filename]%
\setupcurrentwithpages
- [\c!offset=\zeropoint,\c!hoffset=\zeropoint,\c!voffset=\zeropoint,
- \c!width=\figurewidth,\c!height=\figureheight,\c!n=\noffigurepages,#oddsettings]%
+ [\c!offset=\zeropoint,%
+ \c!hoffset=\zeropoint,%
+ \c!voffset=\zeropoint,
+ \c!width=\figurewidth,%
+ \c!height=\figureheight,%
+ \c!n=\noffigurepages,%
+ \c!category=,%
+ #oddsettings]%
\global\c_page_selectors_n\directwithpagesparameter\c!n\relax
\ifnum\c_page_selectors_n>\zerocount
\definepapersize