[racket-dev] scribble pdf

From: Eli Barzilay (eli at barzilay.org)
Date: Mon May 23 23:52:30 EDT 2011

8 minutes ago, Jay McCarthy wrote:
> Most of the time when I run scribble to get PDF output, I get something like:
> 
> /texmf-texlive-dist/fonts/type1/urw/times/utmb8a.pfb></opt/local/share/texmf-te
> xlive-dist/fonts/type1/urw/times/utmr8a.pfb></opt/local/share/texmf-texlive-dis
> t/fonts/type1/urw/times/utmri8a.pfb>
> Output written on main.pdf (8 pages, 272591 bytes).
> PDF statistics:
>  1061 PDF objects out of 1200 (max. 8388607)
>  736 compressed objects within 8 object streams
>  17 named destinations out of 1000 (max. 500000)
>  271 words of extra memory for PDF output out of 10000 (max. 10000000)
> 
> run-pdflatex: got error exit code

This error should be printed after the full error log is displayed, so
you should see some error message.  (This is done by the code in
"collects/scribble/private/run-pdflatex.rkt".)  Such an error message
should be much better than opening a broken PDF and trying to find
where it's broken...


> I'm guessing that it is because there is something like missing
> cross-references or something? But scribble deletes the PDF, so I
> can't look at it even though latex says it made it, and there's no
> other useful message.

The latex file and the pdf generation is done from a temporary
directory that is deleted at the end of the work.  This is done by
"collects/scribble/private/indirect-renderer.rkt".

I'm not sure that it's a good idea to copy the pdf out even if there
was an error.  It fits the *tex model of compile-what-you-can, but it
doesn't fit the racket compilation convention.  I think that this
difference can lead to broken assumptions made by people who are used
to the latter.  Finding out what problem you have might clarify if
it's a good idea or not.

(Adding some command line flag will be problematic, since there's no
setup for renderer-specific flags, I think, although some of them are
not doing much in pdf mode.)

BTW, for reference, the relevant picture is:

1 latex-render.rkt       renders latex files
2 private/run-pdflatex   knows how to run (and iterate) pdflatex
3 private/indirect-renderer.rkt
                         can combine two tools to create a new renderer
  pdf-render.rkt         uses 3 to combine 1->2 into a pdf renderer

-- 
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!


Posted on the dev mailing list.