Excellently type-set a cute little zine about your favorite topic!
Providing your eight pages in order will produce a US-Letter page with the content in a layout ready to be folded into a zine! The content is wrapped before movement so that padding and alignment are respected.
Here is the template and its preview:
#import "@preview/zen-zine:0.2.0": zine
#set document(author: "Tom", title: "Zen Zine Example")
#set text(font: "Libertinus Serif", lang: "en")
// this page size is what the printer page size is
// if building a digitial zine, the page will be re-set
// so that the PDF pages align with the zine page size
// and not the printer page size
#set page("us-letter")
// update heading rule to show that style is preserved
#show heading.where(level: 1): hd => {
pad(top: 2em, text(10em, align(center, hd.body)))
}
#show: zine.with(
// whether to make output PDF pages align with zine pages (true)
// or have the zine pages located onto a printer page (false)
// with this code, you can provide which kind you want on the command line
// typst compile input.typ output.pdf --input digital=(true|false)
digital: json.decode(sys.inputs.at("digital", default: "false")),
// zine_page_margin: 0.25in // margin of zine pages
// draw_border: true // draw border boxes in printing mode
)
// provide your content pages in order and they
// are placed into the zine template positions.
// the content is wrapped before movement so that
// padding and alignment are respected.
= 1
#pagebreak()
= 2
#pagebreak()
== 3
#lorem(50)
#pagebreak()
== 4
#pagebreak()
= 5
#v(1fr)
five
#pagebreak()
six
#pagebreak()
= 7
seven
#pagebreak()
$ 8 $
Roughly in order of priority.
- Write documentation and generate a manual
Deducepage
properties so that user can change the page they wish to use.- Commit 96fd477a
- Make sure the page is
flipped
and deduce the zine page width and height from the full page width and height (and the zine margin) - Have
zine
function be providedcontext
sopage.width
andpage.height
are available
- Add other zine sizes (there is a 16 page one I believe?)
Digital mode where zine pages are separate pages (of the same size) rather than 'sub pages' of a printer pageFigure out how syntax to enable#show.zine(config)
syntax like other templates- PR #3
- can "unpack" argument sinks
..sink
withsink.pos()
to get an array of positional arguments - having user use
#pagebreak()
to signal where pages are within document content
- Tweak margins to optimize for folding
- Zines have 4 borders - outer margin, cut, outer fold, inner fold
- we can squeeze the inner folds to expand the outer folds so that there is more tolerance on the folds and text wrapping around the outside is less likely
- the outer margin is limited by a user's printer's capabilities
- 🤯give user acces to two next pages next to each other (in final zine) so they can decide how to handle an inner fold🤯