[XeTeX] [OS X TeX] Re: XeTeX and pdfpages: no dice?

Jonathan Kew jonathan_kew at sil.org
Tue Jul 24 12:14:35 CEST 2007


Hi Andreas,

Looking back at old email, I don't think I replied to this at the  
time.... sorry!

On 19 Apr 2007, at 6:10 pm, Andreas Matthias wrote:
> Jonathan Kew wrote:
>
>> I'd guess there are some kinds of PDF file that the clever macro
>> code  for counting pages can't quite understand.
>
> I found a bug concerning line breaks and have fixed that. Nevertheless
> there is still one problem. The macro uses the following loop:
>
>     \@whilenum\count@<256 \do{%
>       \catcode\count@=9
>       \advance\count@ by 1
>     }%
>
> And it seems that I am missing a lot of characters concerning XeTeX.
> How many character codes does XeTeX have? I have found
>
>    @d biggest_char=65535 {the largest allowed character number;
>
> but such a big number causes a TeX capacity exceeded error.
>
> What is the correct number in the above loop to ignore all
> characters?

The natural answer to this specific question would actually be  
"10FFFF, the largest possible Unicode value -- but obviously that's  
not a useful solution, if even 64K gives a "capacity exceeded" error.  
(Is it the "save stack" that overflows? I suppose making the setting  
\global might avoid that. But you *really* don't want)

The real solution, though, is to use a different approach altogether,  
and avoid attempting to parse the PDF with TeX macros at all. XeTeX  
0.997 (to be released shortly -- code is there, I just need to do  
some packaging) will include a new primitive \XeTeXpdfpagecount to  
determine the number of pages in a PDF document. This takes a  
filename (just like \XeTeXpdffile), but instead of including the  
graphic, it just returns the number of pages. So you can say things  
like:

    \count255 = \XeTeXpdfpagecount "mydoc.pdf"

(Note: be sure there's a space or \relax or similar after the  
filename, otherwise following text will be taken as part of the name  
even if it's outside the quotes. If embedding this in a macro, I'd  
suggest including an explicit \space for safety.)

For the pdfpages driver, you might like to test for the availability  
of \XeTeXpdfpagecount, and fall back to the pdf-parsing macro code if  
it isn't available; or else just give an error saying that a newer  
release of xetex is needed.

JK



More information about the XeTeX mailing list