# Sliding binding correcton

I'm printing a document which is typeset as an A5 booklet version of my thesis (classicthesis, scrreprt class). I'm printing it on A4 paper and bind it myself with some common office gadgets. Now the problem is that the papers in the middle will get pushed outside due to how the whole thing is folded.

I would like to apply about -0.4 mm binding offset correction (in the same sense how BCOR works) in steps at each 4th page (so that each leaf of paper would have consistent binding corrections). Is there an automated way to do this in LaTeX?

I realize this could be possible manually using the geometry package, but I'm already using \areaset elsewhere and I'm told those two don't mix well.

EDIT:

So as I said, the pages are A5 but are printed on A4 paper, folded in half and stapled:

The problem I want to fix is this:

I want to cut the edge of the booklet off, so that all the papers are aligned. This consequently shortens the outer margin of the pages, but more in the middle and less at the outside. Hence the need for changing the binding correction.

I'm currently typesetting this as a single sided A5 document which I print as "booklet, double sided, flip at the short side" in my printer settings, which puts four pages on a single leaf of paper. That's why I need to increase the correction each four pages (although not so important, the 0.1 mm shift would likely be imperceptible -- but I'd know and it would wake me up in the middle of the night).

• Exactly, either geometry or typearea, not both. You already mention BCOR, which does the job. But i don't understand why you print on A4 and bind A5 and why you need only every 4th page adjusted. I also don't understand why papers get pushed outside and you need a negative binding correction. Usually, you need a correction greater 0 because you need that space for binding. Aug 28, 2016 at 7:51
• I'll take a picture. Aug 28, 2016 at 7:53
• I don't know that it is traditional to compensate in this way. Usually, signatures are composed of a small enough number of pages for differences to be negligible. The pages are traditionally cut to create a smooth edge, but I don't know that the inner margins are changed to compensate. I don't really recommend doing this in LaTeX. Contrary to what @Johannes_B 's comment might suggest, there really isn't any ready-made mechanism to do this provided by any class or package except zwpagelayout. I've never used it, but it seems to support something like this. However, you would need to switch.
– cfr
Aug 29, 2016 at 2:23
• That is really for leaflets, though, where it is likely to be more significant. As I say, I am not sure this is traditional in book binding.
– cfr
Aug 29, 2016 at 2:24
• @cfr This is not a questioni about book binding, so BCOR won't help. I am not aware that there is a solution at hand. I would just print it on A5 paper and then do the binding (maybe with the help of a copy shop). But folding and stapling? No way. This gets very ugly very quickly. As seen in the photos. Aug 29, 2016 at 4:14

Here’s a two step solution I blogged this month (german: Booklets erzeugen):

1. make you document in single pages (A5) as you already do
2. use the following code to impose a booklet
\documentclass[
paper=296mm:210mm,
]{scrartcl}

\usepackage{xparse}

\usepackage{graphicx}

\usepackage{tikz}
\usetikzlibrary{calc}
\tikzset{
every node/.style = {
inner sep = 0pt,
outer sep = 0pt,
}
}

\ExplSyntaxOn

\int_new:N \l_booklet_sheets_int
\int_new:N \l_booklet_counter_int
\int_new:N \l_booklet_total_pages_int
\int_new:N \l_booklet_total_pages_to_four_int
\dim_new:N \l_booklet_creep_dim

\cs_new:Npn \booklet_get_page:nn #1#2 {
\int_compare:nT { ( #1 ) <= \l_booklet_total_pages_int } {
\includegraphics [
width = 0.5\paperwidth,
height = \paperheight,
keepaspectratio,
page = #1,
] { #2 }
}
}

\NewDocumentCommand { \MakeBooklet } { O{0mm} m } {
\file_if_exist:nTF { #2 .pdf } {
\int_zero:N \l_booklet_counter_int
\dim_zero:N \l_booklet_creep_dim
\pdfximage { #2 .pdf }
\int_set:Nn \l_booklet_total_pages_int
{ \the \pdflastximagepages }
\int_compare:nTF { \int_mod:nn { \l_booklet_total_pages_int } { 4 } != 0 } {
\int_set:Nn \l_booklet_total_pages_to_four_int
{ \l_booklet_total_pages_int + 4 - \int_mod:nn { \l_booklet_total_pages_int } { 4 } }
} {
\int_set_eq:NN \l_booklet_total_pages_to_four_int \l_booklet_total_pages_int
}
\int_set:Nn \l_booklet_sheets_int
{ \l_booklet_total_pages_to_four_int / 2 }
\int_do_while:nn { \l_booklet_counter_int < \l_booklet_sheets_int } {
\clearpage
\int_incr:N \l_booklet_counter_int
\begin{tikzpicture}[remember~picture, overlay]
\clip (current~page.north) rectangle (current~page.south~east);
\node [anchor = west] at ($(current~page.center) - (\dim_use:N \l_booklet_creep_dim, 0)$) {
\booklet_get_page:nn
{ \int_use:N \l_booklet_counter_int }
{ #2 }
};
\end{tikzpicture}
\begin{tikzpicture}[remember~picture, overlay]
\clip (current~page.north~west) rectangle (current~page.south);
\node [anchor = east] at ($(current~page.center) + (\dim_use:N \l_booklet_creep_dim, 0)$) {
\booklet_get_page:nn
{ \int_eval:n { \l_booklet_total_pages_to_four_int - \l_booklet_counter_int + 1 } }
{ #2 }
};
\end{tikzpicture}
\clearpage
\int_incr:N \l_booklet_counter_int
\begin{tikzpicture}[remember~picture, overlay]
\clip (current~page.north~west) rectangle (current~page.south);
\node [anchor = east] at ($(current~page.center) + (\dim_use:N \l_booklet_creep_dim, 0)$) {
\booklet_get_page:nn
{ \int_use:N \l_booklet_counter_int }
{ #2 }
};
\end{tikzpicture}
\begin{tikzpicture}[remember~picture, overlay]
\clip (current~page.north) rectangle (current~page.south~east);
\node [anchor = west] at ($(current~page.center) - (\dim_use:N \l_booklet_creep_dim, 0)$) {
\booklet_get_page:nn
{ \int_eval:n { \l_booklet_total_pages_to_four_int - \l_booklet_counter_int + 1 } }
{ #2 }
};
\end{tikzpicture}
\dim_set:Nn \l_booklet_creep_dim {
#1 * \l_booklet_counter_int / 2
}
}
} {
\Huge
\noindent \textbf { Error! } \\
File ~ \texttt { #2 .pdf } ~ not ~ found.
}
}

\ExplSyntaxOff

\pagestyle{empty}

\begin{document}

% #1 = shift per sheet (= thickness of paper, see below) [optional]
% #2 = filename without suffix (must be a PDF)
\MakeBooklet[1mm]{singe-pages}

\end{document}


The paper size of the printing sheets is given as class option paper=b:h with b = 2 × width of close booklet width and h = booklet hight. Then one can simply copy the implementation code and use \MakeBooklet. Run pdflatex (at least) twice to get the correct positions.

You can finde details about the implementation in my german blog article, linked above …

How to calculate the shift per page?

The shift of the most inner (middle) pages compared to the outer (first and last) pages – the creep - can be calculated with this equation:

creep = (count of pages incl. cover – 4) ÷ 4 × thickness of paper
creep = (count of sheets – 1) × thickness of paper

The shift for pages on a certain sheet – lets call it v – with this one:

v = creep ÷ (count of sheets – 1) × (sheet number – 1)
v = thickness of paper × (sheet number – 1)

Where “page” refers to the pages of the single paged (A5) document and “sheet” to the printed (A4) paper sheets.