Auto Book Meta Pub.

About

What does book design mean when layouts are no longer created page by page? When content updates automatically, systems make decisions, and design works through rules, structures, and algorithms? And what role does print play when web, code, and analog techniques intersect?

The project explores the tension between automated work processes and contemporary book design. Instead of traditional layout software, the focus lies on systemic thinking, fixed rules, and networked content. Automation enables new forms of production: content can be updated live, publications emerge from dynamic sources, and print often becomes a by-product of a larger, hybrid system.

Drawing on historical and current forms of automation—from lead typesetting to digital standards and web-to-print—the project examines both visible and invisible design rules. Topics such as hybrid publishing, print on demand, system design, Paged.js, open source, and AI form the basis for experimental and systematic approaches.

The resulting works highlight interfaces and symbioses between web-based design and analog techniques. Print is not replaced, but recontextualized.

The publications consciously work with processes, formats, and limitations. Automation is understood not only as a tool for efficiency, but also as a creative and artistic method to reveal, question, and rethink existing systems.


What?

The website & book present all projects created during the seminar—eight different positions on automated publishing that frame and expand the course chapters. Within these chapters, the course content is reflected and complemented by exercises and selected example outcomes.

The goal is to offer readers an easy and low-threshold introduction to the topics covered in the seminar—mirroring our own learning experience.

part 1


course documen­tation

Lesson 15.10.25

The Automatic Book

Course description

In this seminar, we examine the constitution of the book under the conditions of automated processes. What design is appropriate for current knowledge production today?

Automation has shaped book design since Gutenberg: from lead typesetting, which determined font sizes and grids, to phototypesetting and desktop publishing, which opened up new freedoms but was also shaped by grid principles and software logic.

For centuries, the typographic grid determined the order of text, images, and white space—while today, digital standards such as Unicode and EPUB define which characters can be displayed and how texts are structured and distributed on platforms.

Each medium and each technology brings its own logic, structures, aesthetics (and biases). Which of these fit with our viewing habits today? Which design rules will still be relevant in the future?

In pairs, we analyze and question the visible and invisible rules, systems, and algorithms of book production and publication. In the context of current developments such as print on demand, e.g.: www.apod.li and web-to-print, e.g.: https://prepostprint.org/resources/, we explore new possibilities for algorithmic, systematic design.

Practical experiments result in books and publications that address, challenge, or outsmart the automation of book design, production, and distribution. Each group develops the “content” individually through a systematic process according to self-imposed rules on a topic of their choice.

Thus, it is not only about the efficient implementation of layouts and print templates, but we also use the formats, processes, and restrictions creatively and artistically.


Preliminary schedule

Date Content
15/10 Introduction to the topic
22/10 Systems & Book Design
29/10 Web-To-Print 1
05/11 Web-to-print 2
12/11 Grid / Layout / InDesign Scripting
19/11 Print On Demand
26/11 Project Idea Presentation
03/12 Compile content
10/12 Project work
17/12 Interim presentation
24/12 (Christmas)
31/12 (Christmas)
07/01 Project work
14/01 Project work / Evaluation
21/01 (BaMa colloquium week)
28/01 Final presentation

Organization

Introduction

The book today!

Systematic book and layout design

Rule-based design

Web-to-print

Post digital Print (Ludovico)

Print on demand


(1) Auto Book

https://prepostprint.org/site/templates//img/ppp.svg

(2) Systematiken

https://seafile.rlp.net/lib/2db570d8-cb08-4e86-98f3-84dff78c4cb6/file/images/auto-upload/image-1760364064323.png?raw=1 https://i.ebayimg.com/images/g/o6AAAeSwobZotxFJ/s-l300.jpg

(3) Sol LeWitt Wall Drawings

https://miro.medium.com/v2/resize:fit:1400/0*FXAwV-uGAF4i58o1.jpg?

(4) Generative / Automatische Gestaltung

https://workbook.conditionaldesign.org/retina/book_ret_1.jpg? http://www.generative-gestaltung.de/

(5) InDesign Scripting

https://type.hanli.eu/typepad-manual/

(6) Web-To-Print

https://prepostprint.org/ https://pagedjs.org/ https://office-roxx.de/wp-content/uploads/2022/06/STRG-P.jpg?

(7) Einfluss auf Praxis

https://cc.vvvvvvaria.org/wiki/images/thumb/a/ab/01-toolsshape.png/400px-01-toolsshape.png?

(8) An der Hochschule entstanden

https://hybrid.publishing.systems/#/ https://unlearn.gestaltung.ai/de https://timrodenbroeker.de/wp-content/uploads/2024/08/01_Coverl-1.jpg https://cdn.shopify.com/s/files/1/0268/4407/0021/files/WEBBookImage-Environment.png

(9) Print on Demand

www.apod.li

References

Tools

Exercise 1

Conventional, unconven­tional

Rules in book design

Please look at (individual work) contemporary and antiquarian books and distill from your findings at least three conventional and three unconventional rules from microtypography (typesetting, detail typography, orthotypography) and macrotypography (layout).

Please scan or photograph these findings and print them out in black and white on A3 paper.

Please write down the rule—as short as possible, as long as necessary— as a single line on the A3 paper below the image.


Lesson 22.10.25

Systems

Discussion of the design rules found

What rules were found? How are the rules formulated? -> Possible corrections

Write rules in a pad as instructions?

https://pad.riseup.net/p/book-rules-keep

You can read the rules between the pages or on the back of the page before it is folded into the book.

Exercise 2

Why noise?

Please prepare

Reading

Task

Lesson 29.10.25

Web to Print

!disclaimer! The printing functions of browsers are often still uncared-for, buggy and imprecise, so be prepared for glitches and paradox situations.​

Post-Digital Print

Examples:

Frameworks:

What you will need ✏️

Framework used

https://pagedjs.org/ Paged.js is a free and open source JavaScript library that paginates content in the browser to create PDF output from any HTML content. This means you can design works for print (eg. books) using HTML and CSS!

Paged.js follows the Paged Media standards published by the W3C (ie the Paged Media Module, and the Generated Content for Paged Media Module). In effect Paged.js acts as a polyfill) for the CSS modules to print content using features that are not yet natively supported by browsers.

0 Creating a HTML / CSS project 📂

  1. Open Visual Studio Code (VSC)
  2. Create a project folder on your hard drive
  3. Open that folder in VSC
  4. create a new index.html and style.css
  5. in the index.html use ! (Emmet) to create a basic HTML file
  6. link the style.css in the head of the HTML using \
  7. test by launching the server

1 Including Paged js

Let's look at the documentation: https://pagedjs.org/en/documentation/
Download the latest version of paged js: https://unpkg.com/pagedjs@0.4.3/dist/paged.polyfill.js + download the interface.css stylesheet from: https://gitlab.coko.foundation/pagedjs/interface-polyfill
Put those files in you project folder and include
 <script
          src="js/paged.polyfill.js"></script>

      <link href="css/interface.css"
          rel="stylesheet" type="text/css" />
in the HTML head. 🙌 Great, we are ready for our first book layout.
To print the pdf do the following (from the paged.js documentation):
Click on the “Print” button of your browser. (It will most likely be in File > Print or, on your keyboard, CTRL/CMD + P)
                

2 @page 📄

The styling of pages can now be altered by using the @page rules in the css as well as @media print media queries (you might know this from responsive design: @media screen and (min-width: 900px) for instance)

General settings for the page:

@page { size: A5;
        margin-top:
        10mm;
        margin-bottom:
        10mm;
        font-family:
        'Franklin Gothic Medium',
        'Arial Narrow', Arial, sans-serif;
        @bottom-left { content:
        counter(page); } }
       

Options for left and right page:

    @page:left {
                        margin-left: 10mm;
                        margin-right: 20mm;
                        @top-left {
                            content: "Chapter";
                        }
                    }

                    @page:right {
                        margin-left: 20mm;
                        margin-right: 10mm;

                        @top-right {
                            content: "Hybrid Publishing";
                        }
                    }
                

In the @media print query we can include all the styles that we want ONLY to appear in the print

@media print {
                        html, body {
                            height: 99vh;
                            margin: 0;
                            padding: 0;
                          }
                }
                

3 web and print at the same time 🏗

To avoid loading the print preview already on the first load we can include the following little script:

<script>
                        window.PagedConfig = {
                                auto: false
                        };       
                </script>
                
! before the script include
(<script
          src="js/paged.polyfill.js"></script>)

and then create a button to call the preview:

 <button class="noprint"
          onclick="preview()">print preview</button>
<script>
                //this will load paged.js and generate the PDF preview
                function preview(){
                        window.PagedPolyfill.preview();
                }
                </script>
                

with the noprint class we can hide elements in the print version in @media print

.noprint{
                        display: none;
                }
                

4 get the flow right

Paged.js breaks the HTML content into multiple pages.

With CSS properties we can control that flow.

.chapter
                {
                break-before: page;
                }
                

to break the page before every .chapterelement

5 more options … … …​

Setting bleeds:

@page    {
                    bleed: 6mm;
                }
                

Setting up crop marks:

@page {
                    marks: crop;
                }
                

Add content before:

.note::before {
                    content: "Note: ";
                }
                

counters: (e.g. for counting images)

body {
                    counter-reset: figureNumber;
                }

                figcaption {
                    counter-increment: figureNumber;
                }

                figcaption::before {
                    content: counter(figureNumber);
                }
                

generated images:

.glossary::after {
                    content: " " url("/images/glossary-icon.png");
                }
                

showing links:

a::after {
                    content: " (" attr(href) ")";
                }
                

Running title with header:

h3 {
                    string-set: title content(text);
                }

                @page {
                    @bottom-center {
                        content: string(title);
                    }
                }
                

page templates

.frontmatter {
                        page: frontmatterLayout;
                }

                @page frontmatterLayout {
                        /* specifics rules for the frontmatter*/
                }
                

select specific page

@page:nth(5){
                }
                

Creating a table of contents is a bit more tricky, but doable with some JS / CSS:

https://pagedjs.org/posts/en/build-a-table-of-contents-from-your-html/

Building an index:

https://pagedjs.org/posts/en/build-an-index-with-pagedjs/

Parallel flows:

https://pagedjs.org/posts/en/parallel-flows-within-paged.js/

Cross references:

https://pagedjs.org/en/documentation/-cross-references/

🍳 Let's cook some PDFs

Experiment with CSS styles and content ~

Many more options can be found in the reference: https://pagedjs.org/en/documentation/

Booklet Imposition

Download the imposition.js: https://gitlab.coko.foundation/pagedjs/pagedjs-plugins/booklet-imposition/-/raw/master/imposition.js?ref_type=heads\&inline=false

Include in the index.html (! after the paged.js script):

<script
          src="js/imposition.js"></script>

In the CSS under @page add the following:

--paged-layout: booklet;
                

Now if you click CMD+P the layout should be layouted as a booklet and ready to print!

References and Resources


Reading

https://pagedjs.org/posts/en/parallel-flows-within-paged.js/

Exercise 3

Booklets

Make a Booklet with pajed.js

Use the Text and the Rules you formulated in the last exercise and make a booklet using only paged.js.

print & bring the finished zines

Exercise 4

Design = System

Media change: Poster.

Please work in GROUPS OF TWO to design a DIN A1 poster (digital only) using a new tool of your choice on the topic: Design = System.

Please use at least one of the following readings as a reference and then explain what you have taken from the reference.

Design: almost automatic.

Please roll the dice for the most important design parameters:

Microtypography (typesetting)

Macrotypography (layout)

Please bring two to three layouts per person as a group in a PDF file. (always roll the dice again :)

Lesson 12.11.25

InDesign scripting

Discussion posters & texts

Indesign Scripting

What you will need

  • Adobe Cloud Abo :((((
  • UXP Developer Tools, you can download from the Adobe Cloud
  • VSCode
  • A Laptop with Indesign installed

Create Plugin

In the UXP Dev Tools click create plugin

https://developer.adobe.com/indesign/uxp/static/34d8a6a31d12429b5c05ae1879c42001/e3dad/create-plugin.webp
My First Plugin

                            ├── manifest.json

                            ├── index.html

                            └── index.js
                            

You can click run and watch to test it

Making chances

In the index.html you can add elements:

<div class="wrapper">
                                    <h3>Hello World!</h3>
                                    <button id="btnCreateText">Create Text</button>
                                </div>
                            

Entry Points

There are two types of entry points: commands and panels.
  • Commands are "run and forget" entry points that are invoked by the user, such as a menu item or a keyboard shortcut.
  • Panels have a panel that can be opened by the user from the UI. The user can then interact with the panel.

Access to elements

InDesign Document Object Model

const myInDesign = require("indesign");

                            const app = myInDesign.app;
                            
https://developer.adobe.com/indesign/uxp/static/90109b1accdcec4bb3d4bed4275e08c6/d5269/id-om.webp

Get the foremost document

 let doc = app.activeDocument;
                            

Add a new document

    app.documents.add();
                            

Get pages from document

doc.pages;
                            doc.pages.length;
                            

Functions

add an entrypoint for the panel functions

entrypoints.setup({
                                commands: {
                                    showAlert: () => showAlert()
                                },
                                panels: {
                                    showPanel: {
                                        show({node} = {}) {
                                            const btn = document.querySelector('#btnCreateText');
                                            if (btn) {
                                                btn.addEventListener('click', createText);
                                            }
                                        }
                                    }
                                }
                            });
                            

This is an event listener for the button;

add text on page

    page = doc.layoutWindows.item(0).activePage;
                                const bounds = [12 + counter, 12, 72 + counter, 200]; // top, left, bottom, right in points (shifted down by counter)
                                counter = counter + 10;
                                const textFrame = page.textFrames.add({ geometricBounds: bounds });
                                textFrame.contents = "hello world";
                            

add a rect

 const rect = page.rectangles.add({ geometricBounds: bounds });
                            rect.strokeWeight = 2;
                            

add a new page

    // add a new page to the document
                                const newPage = doc.pages.add();
                                // make the new page the active page in the layout window
                                doc.layoutWindows.item(0).activePage = newPage
                            

select a specific page

const p = doc.pages.item(i);
                            

loop through all pages

      for (let i = 0; i < doc.pages.length; i++) {
                                    console.log(i)
                                    const p = doc.pages.item(i);
                                    const pageBounds = p.bounds; 
                                    const leftMargin = pageBounds[1] + 12;
                                    const bounds = [12 + counter, leftMargin, 72 + counter, leftMargin + 188];
                                    const textFrameOnPage = p.textFrames.add({ geometricBounds: bounds });
                                    textFrameOnPage.contents = String(i);
                                }
                            

The bounds of the Page, in the format [y1, x1, y2, x2].

Resources

Official Tutorial:

https://developer.adobe.com/indesign/uxp/plugins/getting-started/

InDesign DOM Api

https://developer.adobe.com/indesign/dom/api/d/Document/

Take an essay from Library of Artistic Print on Demand and at least 4 examples from the book.

Exercise 5

Print on Demand — book sharing extreme

Cut out (as a group assignment) an essay from the publication “Library of Artistic Print on Demand” and at least 4 examples of artistic works.

Rebind the pages.

Read the text and prepare 4–5 slides on the most important insights from the essay, making it accessible to others.

Think about how you could implement a print on demand project (within the infrastructure of the university) and how it could be well implemented in terms of design.

1 PDF as a group, please

Lesson 19.11.25


Print on Demand


Input

https://abc.nl/betty https://www.lulu.com/

Print auf Verlangen

Your browser does not support PDFs. Download the PDF instead.

Franzi & Tim

Why POD?

Your browser does not support PDFs. Download the PDF instead.

Lenny & Clara

Production Process

Your browser does not support PDFs. Download the PDF instead.

Kristina & Edda

Print Wikipedia

Your browser does not support PDFs. Download the PDF instead.

Johanna & Sooryeon

part 2

course projects

Jiyeon Yang
& Emily Wagner

r/DoesThisMatter

About

This project presents a book as an immersive scroll through online thinking. Rather than curating or explaining content, it recreates the experience of moving through Reddit, where people externalize everyday thoughts, fears, anger, and speculation. Posts often drift away from the present moment into imagined futures, worst-case scenarios, or emotional spirals. The project is motivated by the observation that fear of the future increasingly dominates online discourse. Technological anxieties and existential questions accumulate in digital spaces, making it difficult to stay grounded in the “now.” The internet becomes a shared environment where these thoughts are amplified, repeated, and validated.

Detail r/DoesThisMatter
Detail

Design Rules

The visual system remains identical throughout the entire book. All layout decisions are automated to mirror the uniform interface of online platforms. Variation in scale does not assign meaning or importance. Instead, it reflects the apparent randomness of online discourse, where very different voices and emotional states appear side by side.
Doublespread r/DoesThisMatter
Doublespread
Doublespread r/DoesThisMatter
Doublespread

Technical implementation

All content was collected and organized in Google Sheets, which functioned as a shared database. The texts were then connected to a custom web layout using HTML, CSS, and JavaScript. This setup allowed the project to function as a web-based system while simultaneously enabling a web-to-printworkflow. The same rules that structure the digital layout are directly translated into the printed book, reinforcing the idea of an automated, continuous feed.

Conclusion

The project explores immersion, loss of orientation, and the ease with which attention is pulled away from the present moment when engaging with the internet. By maintaining a fixed system while shifting emotional content, the book exposes how online spaces normalize speculative, fearful, and unresolved thinking — not through emphasis, but through accumulation.

Lily Heinritz & Lucas Terburg

Narrative Override

German Migration and Colonial Structures
in Southern Brazil

About

The project “Narrative Override: German Migration and Colonial Structures in Southern Brazil” collects and presents various historical sources on German emigration to southern Brazil in the 19th century. The aim is to make different perspectives on this migration accessible and to reveal how the history of settlement has been narrated.

Across the sources, stains spread according to an automated system that reacts to the properties of each visible source. They symbolize migration, displacement, the incompleteness of information, and its simultaneous visibility.

Detail Narrative Override
Detail

Design Rules

Doublespread Narrative Override
Doublespread
Doublespread Narrative Override
Doublespread

Technical implementation

The project was developed in Visual Studio Code.

Conclusion

The project understands history not as a fixed narrative, but as an interplay of different perspectives. By making sources visible side by side, it becomes clear that migration, settlement, and memory have been experienced and represented in different ways. The result is not a closed or unified image, but a conscious engagement with gaps, contradictions, and overlooked voices.

Franziska Stroh & Tim Bauer

Collabbook

About

In this project, we attempted to design a collaborative book using a web tool that we developed ourselves. The tool was intended to enable multiple people to jointly create a layout. It is deliberately unpredictable, aiming to move users away from conscious decision-making and toward intuitive design and play. The individual design elements were therefore intentionally conceived in a humorous way as “tools.” The book itself is a collection of four texts from the field of design, laid out by more than 41 different participants across 146 pages.

Detail Collabbook
Detail

Design Rules

Doublespread collabbook
Doublespread
Doublespread collabbook
Doublespread

Technical implementation

Conclusion

The project demonstrates the different approaches taken by designers and non-designers when they are given a new tool. This results in atypical double-page spreads as well as attempts to create classical layouts.

Lenny Bittger,
Clara Bröning, Kristina Goettgens & Edda Seibert

GrauZone
ZoneGrau

A question of theft and property

About

Theft is omnipresent. On a large and small scale, people steal and rob every day. From bank robberies, mask deals, and tax evasion to international wildlife smuggling, the list of thefts is long.

But you don't have to be a criminal to steal something. Not scanning something at the self-checkout, pocketing a mug at the Christmas market, crawling under the turnstile at Sanifair, or gaining access online to things you would actually have to pay for. All of this is theft (from a legal perspective).

Detail Collabbook
Detail

In order to steal, someone else must own something, but how does a person acquire this property in the first place, and is it fair? The concept of theft is at least as old as the concept of ownership—they go hand in hand. To rise above theft is to forget its origins. If God exists, why didn't he leave me a condominium (Beslik - Guten Morgen Deutschland).

Where is the moral line? Are some forms of theft more serious than others? The theft shown here is mostly in a legal and moral gray area. As a kind of encyclopedia of stolen things (from A for “accordion” to Z for “quote”), supplemented by essays, this book takes a critical and humorous look at theft and shows the absurdity of certain forms of property.

grau-zone_erste-seite
First Page Grau Zone
zone-grau_erste-seite
First Page Zone Grau

Design Rules

Doublespread collabbook
Doublespread
Doublespread collabbook
Doublespread

Technical implementation

Technically, we worked on the illustrated book using Python scripts created with the help of ChatGPT.

Based on our outgoing CVS table, in which we collected terms related to the topic, images were scraped (downloaded) from the Bing search engine, edited and collaged using another script (all based on prompts—i.e., without our direct visual control), and then converted into the final PDF in book format.

The scripts were executed in the Mac command line terminal, which was written down in a txt file and later found its way into the book in a visualization.

The text volume is based on the same table, from which the pages were created using JavaScript and pagedJS via web-to-print. Word breaks and articles were automatically extracted from Wiktionary. The references manually defined in the table form the basis for the glossary, which uses D3js for visualization.

Sadaf Jalalian & Polina Pashkina

Informational Overload

Essays and Visual Experiments

About

Our project investigates how automated digital data can be translated into a physical book format. We are working with current weather data as an example of fleeting real-time information that is quickly consumed and just as quickly forgotten in everyday life. Print on demand slows down this data and fixes it as a material object. Technology/Software The book is not intended to be a static publication, but rather a dynamic system that changes with every data update.

informational-overload_detail
Detail

Design Rules

informational-overload_doublespread
Doublespread
informational-overload_doublespread
Doublespread

Technical implementation

Conclusion

The project shows how the speed, topicality, and transience of digital information can be translated into a slow, reflective medium through print on demand. The book itself becomes a time-based object.

Johanna Ludewig
& Sooryeon Kwon

독일과 한국의 신화와 전설

German and Korean Myths and Legends

About

Our project combines language learning with cultural comparison.

The goal was to create a playful and visually engaging way to teach German and Korean through narrative content.

The project is based on six overarching themes, each represented by one German and one Korean legend or myth. This approach highlights similarities and differences between the two cultures and allows language to be experienced in context.

german-korean-myths-legends_detail
Detail

Design Rules

The overlapping logic of the website was deliberately omitted in the print version to ensure readability. Instead, the learning process is simulated through the daily focus on a single paragraph and the direct comparison of original text and translation.

german-korean-myths-legends_doublespread
Doublespread
german-korean-myths-legends_doublespread
Doublespread

Technical implementation

Conclusion

The project combines cultural exchange and language learning. The combination of an interactive website and an automated print product demonstrates how digital content can be systematically processed and transferred into an analog format. Language is not learned in isolation, but experienced through narrative and visual contexts.

Marei Hager & Ellinor Gockel

Rabbit Hole

About

“Rabbit Hole” describes exactly what it is: a rabbit hole. With the help of a browser plug-in, users can record their personal rabbit hole with a click, save it as a PDF, and/or print it out directly. Content such as text, images, video thumbnails, GIFs, and emojis are automatically transferred to a document. Since we, as the designers of the tool, have no influence on the content, the design was made as universal as possible so that it works for any type of content.

rabbit-hole_detail
Detail

Design Rules

rabbit-hole_doublespread
Doublespread
rabbit-hole_doublespread
Doublespread

Technical implementation

VS Code was used for the project.

In addition to the more playful version with different fonts and a pink-red color scheme, there is also a reduced version. This is in black, white, and gray and uses only the Erika font in different styles.

Conclusion

The technical implementation of the plug-in worked very well. Test prints are an important part of the process—in retrospect, we could have done more of them. At the same time, mistakes gave rise to new ideas, some of which worked even better than the original approaches.

Kristina Busch & Tobi Anspach

Trinkets #00000

The Identity Archive

About

Trinkets is an archive for personal, subjectively valuable objects. Users upload photos of small everyday items and share their significance, creating a digital archive that makes identity visible through seemingly “worthless” things. An AI transforms the photos into 3D models, translating memories into new technical forms. The collection is interactive: each participant can browse the archive and later 3D-print their own objects.
trinkets_detail
Detail

Design Rules

trinkets_doublespread
Doublespread
trinkets_doublespread
Doublespread

Technical implementation

Conclusion

Trinkets makes the subjective value of everyday objects visible and translates personal memories into interactive digital and physical experiences. The project merges design, technology, and participatory archiving in a novel way.

Imprint

Imprint

Contributions

Software

paged.js

Printing

RISO – Mainz University of Applied Sciences
Printing & Paper – Mainz University of Applied Sciences

Paper

Salzer EOS, 60 g/sqm

Fonts

Course

The Automatic Book
Alexander Roidl (Interim Professorship in Communication Design)
&
Johannes Bergerhausen (Professorship in Typography and Book Design)
Mainz University of Applied Sciences

Design & Implementation

Felix Stadler Marcos, Sophie Kunle & Annabel Scheffler