sile-typesetter / sile

The SILE Typesetter — Simon’s Improved Layout Engine
https://sile-typesetter.org
MIT License
1.68k stars 99 forks source link

We need an imposition option. #1893

Open jodros opened 1 year ago

jodros commented 1 year ago

Since I intent to make homemade book printing I miss a built-in way to render the pdfs imposed. The tools I found out in the internet are either deprecated or incomplete. Besides the fact that it would be useful for every user who plays with printing.

alerque commented 1 year ago

This topic has come up a number of times before and we've turned it down. I'm pretty sure this belongs in a post-processing step. You even could do that with SILE since you can use PDFs as figures embeded in a larger PDF, although honestly there are already pretty versatile tools available for this.

CaSILE for example does this as part of the book production pipeline: markdown inputs are converted behind the scenes to SIL, then rendered to PDFs, then post-processed to generate layouts with various impositions.

I don't see how (or why) SILE should do this as part of a single rendering pass. Generally when you generate print layouts you also want the original pages as a per-page PDF anyway, no? When would that ever not be the case?

Omikhleia commented 1 year ago

You both seem to know what "PDF imposing" (?) means, can you possibly clarify?

FWIW, one of my possible book projects with SILE includes embedding existing PDF books for which I no longer have the (original LaTeX) sources within a single SILE-made book (read: extra front and back matters, cover pages etc.), does it relate to this kind of things or is it something different?

Or does it possibly relate to #1784?

alerque commented 1 year ago

Imposition is the arrangement of pages into spreads that get printed in one pass on much larger sheets, then cut and folded in a specific sequence, usually to form a signature (group of 8/16/32 pages folded together as a chunk of a book). The layout, orientation, and exact position offsets of the pages matters a lot and can seem quite convoluted because the folding and cutting sequence collapses a whole flat sheet into essentially a mini booklet, but since each page is folded around a different number of others the paper thickness even factors into how much each page needs to be offset and the folds determine the orientation.

The details of this are usually handled by the press/production crew and sometimes (as in many digital presses) just by the press machine itself. Even in the case of being prepared ahead of time, it is usually a separate step from preparing the pages themselves, and it is almost always the case that the process will need a regular screen spread plus a special set of print spreads for the press. The very fact that both outputs are needed suggests doing this in SILE at typesetting time might not make the most sense.

Omikhleia commented 1 year ago

Thanks - so it does slightly relate to #1784 (as a generalization of tools such as pdfjam) and to what https://github.com/PietroCarrara/sine does for booklets. It would be perfectly doable using SILE as one of the tools -- And I'd even suggest, as in #1784, that this would probably be achievable with a SILE-based pdfjam-like tool. But it seems to me, then, that it does not need to be done in the SILE core distribution and that it could be a 3rd party module.

alerque commented 1 year ago

Yes and yes.

At this point the only reason I'm not closing the issue is that I think we need to document the options in regard to n-up layouts, print spreads, and signatures much more prominently. This keeps coming up in new issues and it would be nice to point to actual documentation.

Also even though I'm pretty sure most use cases should go the post-processing route there is one question mark in my mind, and that is how to handle multi-page spreads. We don't currently have a way for frames to span multiple pages, and this isn't something post-processing can handle very well. As far as I know the only way to handle it right now is to make the paper size the size of the spread, use frames for the pages, and then later split it with two separate crop operations. This gets supper messy when you introduce bleed/trim/feed/registration issues into the mix (c.f. #1439 and related PRs). It isn't clear to me what the best workflow is for handling those kind situations, most especially when the spread is an exception in a book like an insert rather than the default layout.

alerque commented 1 year ago

c.f. https://github.com/typst/typst/issues/2458 (not the first time it has been brought up their either).