[XeTeX] XeTeX : request for enhancement

Philip Taylor Philip.Taylor at Hellenic-Institute.Uk
Fri Apr 5 11:16:34 CEST 2024


Philip Taylor wrote:
> [...] Once we realise this, we are in a position to write the code :
>
>     % !TeX Program=XeTeX
>
>     \pdfpageheight = 210 mm
>     \pdfpagewidth = 297 mm
>
>     \hsize = \pdfpagewidth
>     \vsize = \pdfpageheight
>
>     \parindent = 1 cm
>
>     \output = {\advance \hoffset by -1 in \advance \voffset by -1 in
>     \shipout \box 255 }
>
>     \newcount \xmin
>     \newcount \ymin
>     \newcount \xmax
>     \newcount \ymax
>     \newcount \height
>     \newcount \width
>
>     \xmin = 1900
>     \ymin = 300
>
>     \width = 700
>     \height = 70
>
>     \xmax = \numexpr \xmin + \width \relax
>     \ymax = \numexpr \ymin + \height \relax
>
>     \setbox 0 = \vbox {\XeTeXpdffile Example-image-3.pdf }
>     \setbox 0 = \hbox to \width bp {\kern - \xmin bp \box 0 \hss}
>     \setbox 0 = \vbox to \height bp {\kern \dimexpr \ymax bp - (\ht 0
>     + \dp 0) \box 0 \vss}
>
>     \setbox 0 = \hbox
>         \bgroup
>             \special {x:gsave}
>             \special {pdf:literal 0 0 \number \width \space \number
>     \height \space re W n }
>             \box 0
>             \special {x:grestore}
>         \egroup
>
>     \topglue 1 cm
>     \leavevmode \box 0
>
>     \end
>
> The file that I was seeking to clip, renamed as Example-image-3.pdf, 
> is attached.  It is 100 cm wide by 20 cm tall (plus bleed and trim 
> marks), or about 2800 x 600 bp, so I would normally want to express 
> \xmin, \ymin, ..., \width in cm rather than in bp, as is implied in 
> the code above, but that would just be syntactic sugar so I leave the 
> code as I initially wrote it. Note that my code does not correctly 
> handle non-zero box depths as it stands.
And for those who /like/ syntactic sugar, and who want to be able to 
handle included graphics with non-zero depth, herewith today’s version :

         % !TeX Program=XeTeX

         \pdfpageheight = 210 mm
         \pdfpagewidth = 297 mm

         \hsize = \pdfpagewidth
         \vsize = \pdfpageheight

         \parindent = 1 cm

         \output = {\advance \hoffset by -1 in \advance \voffset by -1
    in \shipout \box 255 }

         \newcount \xmin
         \newcount \ymin
         \newcount \xmax
         \newcount \ymax
         \newcount \height
         \newcount \width

         \def \then #1 {#1}

         \def \cm #1{\numexpr \dimexpr #1 cm / 65536 * 7200 / 7227
    \relax \relax}
         \def \depth {\ifnum \dp 0 = 0 \then 0 \else -\the \numexpr \dp
    0 / 65536 \relax \fi}

         \xmin = \cm {67} % 1900
         \ymin = \cm {10.5} % 300

         \width = \cm {25} % 700
         \height = \cm {2.5} % 70

         \xmax = \numexpr \xmin + \width \relax
         \ymax = \numexpr \ymin + \height \relax

         \setbox 0 = \vbox {\XeTeXpdffile Example-image-3.pdf }
         \setbox 0 = \hbox to \width bp {\kern - \xmin bp \box 0 \hss}
         \setbox 0 = \vbox to \height bp {\kern \dimexpr \ymax bp - (\ht
    0 + \dp 0) \box 0 \vss}

         \setbox 0 = \hbox
             \bgroup
             \special {x:gsave}
             \special {pdf:literal 0 \depth \space \number \width \space
    \number \height \space re W n }
             \box 0
             \special {x:grestore}
             \egroup

         \topglue 1 cm
         \leavevmode \box 0

         \end


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://tug.org/pipermail/xetex/attachments/20240405/db3ab0c9/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Example-image-3.pdf
Type: application/pdf
Size: 5182 bytes
Desc: not available
URL: <https://tug.org/pipermail/xetex/attachments/20240405/db3ab0c9/attachment-0001.pdf>


More information about the XeTeX mailing list.