Continuing with the theme of reading stacks of paper (see my previous two posts, I have had a marvellous idea (at least I think so; I will let you judge for yourself). Let me take you through my thought process, starting with triple-sided paper and then returning to the real world. If you think this triple-sided paper business is nonsense, stay with me for just a minute!
A simple algorithm for reading triple-sided paper
In a comment on my previous post, blasepascal2014 gave a fairly simple algorithm for reading all the sides of a stack of triple-sided paper, though it requires making some marks on the paper, and requires you to do something different when you encountered a mark again. It does not, of course, go through the sides in order, but that’s fine. In reflecting on that solution, I realized that you can do something similar but even simpler. Here is my algorithm:
- Read one side. When you are done, flip the sheet, and then move it to the bottom of the stack.
That’s the entire algorithm! You just do the same operation every time. If you start with a stack like this: then after doing this once you have , after doing it twice you have , and so on. After rounds, is back on top but all the sheets are flipped, and you have read the front sides of all the sheets. After another rounds, you have read all the flip sides, and the sheets are now all anti-flipped (that is, double-flipped); after yet another rounds you have read all the sides and the stack is back in its original state (ready for someone else to read it, I suppose).
Wait a minute…
At this point I had two additional insights:
- This same algorithm works for normal double-sided paper. By doing the same action repeatedly, you read both sides of every sheet—but not in order of course. You would read all the odd pages, followed by all the even pages.
- But wait a minute—who says what order the sides have to be in!? In theory you could print the pages of a document in whatever order you want! So why not just print them in the order that they are visited by this algorithm?
Concretely, here is what I mean. Normally, we print things double-sided like this:
This is natural for a number of reasons: the page numbers progress as you progress physically through the paper; it’s the way you would print pages for a book; and so on. But this is not a book, it is a stack of loose paper! Here’s my alternative proposal, shown for a stack of 4 sheets with eight pages:
When you are finished reading page 1, you flip the sheet over (so now page 5 is on the front) and put it on the bottom of the stack. Now the stack looks like this:
Notice how page 5 has taken its place behind page 4. After you read page 2, you do the same operation a second time, resulting in
Doing the operation 8 times in a row, you read all the pages in order, and the stack ends up restored to its original position. Sweet!
What if there are an odd number of pages? That’s fine, just leave the last side blank, like this:
This is not just silly theoretical nonsense, I really think this is a superior way to print and read double-sided documents.
- Printing and reading things this way completely removes the need for any rules, mnemonic devices, etc. to remember where you are and what to do next. No post-its, no marks, nothing. When you’re done reading a page, just flip it and move it to the back, period.
- There is another benefit to this method: notice that in a document of length , if you pick any set of up to consecutive pages, they will all be on different sheets of paper! This is really great when you are reading something complex where you need to refer to several pages at once—as long as the pages are not too far apart in the document, you can look at them all at once. This is particularly nice in the common situation of referring to something on the previous page. With the “standard” printing method, half the time this will be on the other side of the same sheet, and you can’t look at both pages at once. (The other half the time, of course, it is on another sheet—but it’s confusing to remember which is which!) With my printing method, the previous page will always be on the previous sheet—so you can look at it side-by-side with the current page.
There are downsides, though. One is that it’s hard to jump ahead in the document by more than one page at a time. With the traditional printing method, you can jump ahead just by moving a whole bunch of pages to the bottom of the stack all at once. With my method, you have to actually move the pages one at a time.
So how does one actually print a document like this? I’m glad you asked! I know of two ways, one low-tech and one high-tech.
The low-tech way is this: first, print the first half (rounded up) of the document single-sided. Then take the resulting stack of paper and put it back in the printer, with page 1 facing up and the top towards you. Then print the second half of the document single-sided. It just so happens that this works out nicely with most printers, so that you don’t need to reverse all the sheets before putting them back in the printer. This method is a little involved, but not too hard, and you can do it using tools you already have.
The high-tech way is to reorder the pages of your PDF before printing. Using the
pdftk tool, I wrote a little unix script which does this: it takes a PDF as input, and outputs a new PDF with the pages rearranged in the right order. (For lack of a better term the script is called
spliff. I’m open to other suggestions.) Then all you have to do is print the resulting PDF double-sided. I actually tried it and it works great. It felt really magical holding a phyiscal stack of 6 sheets of paper, doing the same operation 12 times in a row, and progressing through all 12 pages in order!
Feel free to use my script (besides
pdftk it requires
zsh), or write your own! Also, if you use this method of printing/reading double-sided, I’d love to hear about your experience, ideas for improvement, or alternatives!