|
|
<!doctype html>
|
|
|
<html>
|
|
|
<head>
|
|
|
<meta charset=utf-8>
|
|
|
<meta name=generator content="Pelican 4.9.1">
|
|
|
<meta name=author content="LEdoian">
|
|
|
<meta name=description content="My personal webpage">
|
|
|
<meta name=referrer content=no-referrer>
|
|
|
|
|
|
|
|
|
<link rel=stylesheet href="./theme/css/theme.css">
|
|
|
|
|
|
<title>Print your stuff on Möbius bands! – LEdoian's Blog</title>
|
|
|
</head>
|
|
|
<body>
|
|
|
|
|
|
<header>
|
|
|
<h1>LEdoian's Blog</h1>
|
|
|
</header>
|
|
|
|
|
|
<div id=main>
|
|
|
<nav>
|
|
|
<div>
|
|
|
<!-- Main navigation -->
|
|
|
<!-- TODO! -->
|
|
|
</div>
|
|
|
<div>
|
|
|
<h2>Categories</h2>
|
|
|
<ul>
|
|
|
<li><a href="./category/networking.html">networking</a></li>
|
|
|
<li><a href="./category/talks.html">talks</a></li>
|
|
|
<li><a href="./category/technology.html">technology</a></li>
|
|
|
<li><a href="./category/til.html">til</a></li>
|
|
|
</ul>
|
|
|
|
|
|
<h2>Tags</h2>
|
|
|
<ul>
|
|
|
<li><a href="./tag/lifehack.html">lifehack</a></li>
|
|
|
<li><a href="./tag/print.html">print</a></li>
|
|
|
<li><a href="./tag/comics.html">comics</a></li>
|
|
|
<li><a href="./tag/software.html">software</a></li>
|
|
|
<li><a href="./tag/ipv6-only.html">ipv6-only</a></li>
|
|
|
<li><a href="./tag/dns.html">dns</a></li>
|
|
|
<li><a href="./tag/meta.html">meta</a></li>
|
|
|
<li><a href="./tag/infrastructure.html">infrastructure</a></li>
|
|
|
<li><a href="./tag/smrst.html">smršť</a></li>
|
|
|
<li><a href="./tag/trains.html">trains</a></li>
|
|
|
<li><a href="./tag/software-engineering.html">software-engineering</a></li>
|
|
|
</ul>
|
|
|
</div>
|
|
|
<div>
|
|
|
<h2>Stalk me also at</h2>
|
|
|
TODO!
|
|
|
|
|
|
<h2>I stalk</h2>
|
|
|
TODO!
|
|
|
</nav>
|
|
|
|
|
|
<main>
|
|
|
<div>
|
|
|
<h1>Print your stuff on Möbius bands!</h1>
|
|
|
<p>I found a fun and useful way of printing stuff to ~~both~~all sides of a paper.
|
|
|
I just need to find the right printer!</p>
|
|
|
<div class="section" id="quick-recap-how-to-conventionally-print-stuff-two-sided">
|
|
|
<h2>Quick recap: how to conventionally print stuff two-sided</h2>
|
|
|
<p>A typical way is just sending the page to get printed two-sided (with setting
|
|
|
the correct way of flipping pages). That is, on the other side of page 1 is
|
|
|
page 2, next sheet contains pages 3,4, then 5 & 6, …</p>
|
|
|
<p>This is usually trivial to print on duplex printers, a bit hard to simulate on
|
|
|
one-sided printers (but some drivers can do that) and has drawbacks when you
|
|
|
need to look at stuff on other pages at the same time – you need to flip the
|
|
|
sheet often, as you only can put half of the pairs of pages next to each other
|
|
|
(even one and the following odd one).</p>
|
|
|
<div class="figure">
|
|
|
<object data="./images/mobius-print/twoside.svg" style="width: 66%;" type="image/svg+xml"></object>
|
|
|
<p class="caption">Ordinary two-sided printing. Red arrows show sheet flips between consecutive
|
|
|
pages.</p>
|
|
|
</div>
|
|
|
<p>A slight improvement hack is putting two pages on the same side of the paper
|
|
|
(works well with A-series of papers, I don't know for Letters &co.) – you can
|
|
|
put up to four pages of the original document next to each other, if they are
|
|
|
the right ones, but there are still pairs of pages that need turning sheets.
|
|
|
Also only works if the original pages do not have too tiny features on them.
|
|
|
<a class="footnote-reference" href="#illustrations" id="footnote-reference-1">[1]</a></p>
|
|
|
<p>Booklets are fun and approachable, but still suffer from the same issues as the
|
|
|
conventional duplex print. They might be a bit hard to print, but programs like
|
|
|
<tt class="docutils literal">pdfbook</tt> or <tt class="docutils literal">paperjam</tt> make it easy to prepare for the classic duplex
|
|
|
printing. Also, it is maybe hard to tell which page ends up where, as the order
|
|
|
is: last+first, second+penultimate, third-from-end+third, … until the pages
|
|
|
meet in the middle.</p>
|
|
|
<div class="figure">
|
|
|
<object data="./images/mobius-print/booklet.svg" style="width: 66%;" type="image/svg+xml"></object>
|
|
|
<p class="caption">The most common booklet order with two pages per side for landscape
|
|
|
orientation. (Note that we show more pages, and thus more sheet-flips; the
|
|
|
number of sheet-flips is in fact the same as for two-sided printing.)</p>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="section" id="the-improvement-for-seeing-multiple-consecutive-pages">
|
|
|
<h2>The improvement for seeing multiple consecutive pages</h2>
|
|
|
<p>In order to be able to look simultaneously at many consecutive pages of the
|
|
|
original, I think the order of first+first-past-half, second+second-past-half,
|
|
|
… middle+last is much better (or maybe even the best). Since consecutive pages
|
|
|
end up on different sheets (whenever there are at least three pages), if the
|
|
|
original has e.g. figures on different page or long code listing, you can see
|
|
|
it all!</p>
|
|
|
<div class="figure">
|
|
|
<object data="./images/mobius-print/mobius.svg" style="width: 66%;" type="image/svg+xml"></object>
|
|
|
<p class="caption">The "Möbius order" of pages.</p>
|
|
|
</div>
|
|
|
<p>And this is really easy to use: You read a page and when you don't need it
|
|
|
anymore, you flip it and put to the end of the page stack <a class="footnote-reference" href="#ordering" id="footnote-reference-2">[2]</a>. If you
|
|
|
need to look at several pages, just rotate them in the same order as they go the
|
|
|
first time. <a class="footnote-reference" href="#mistake" id="footnote-reference-3">[3]</a></p>
|
|
|
<p>Need to print this? For one-sided printers this is rather easy, too: just print
|
|
|
the first half (the bigger one) on the sheets, then put them back into the tray
|
|
|
and print the rest on them. You might need to experiment which side the sheets
|
|
|
should be put in and whether you need to print the rest in reverse order, but
|
|
|
that is it.</p>
|
|
|
<p>Got the pages shuffled? Sort them by the first half, as if the print was
|
|
|
one-sided.</p>
|
|
|
<p>The only annoying thing for me is that there is not much software that could
|
|
|
reorder the pages for two-sided printing, so that you don't need to re-insert
|
|
|
the sheets back in the tray. So I <a class="reference external" href="./images/mobius-print/interleave.patch">patched</a> <a class="reference external" href="https://mj.ucw.cz/sw/paperjam/">paperjam</a> to enable this. <a class="footnote-reference" href="#multi-mobius" id="footnote-reference-4">[4]</a></p>
|
|
|
<p>And the best part? If you would try to glue consecutive pages side-to-side,
|
|
|
you'd end up with a Möbius band! So if you get a Möbius paper, you can just
|
|
|
print this one-sided (duh :-D)</p>
|
|
|
</div>
|
|
|
<div class="section" id="honorable-mention-leporello">
|
|
|
<h2>Honorable mention: leporello</h2>
|
|
|
<p>Printing leporellos (aka concertina folded) also has many of the same benefits,
|
|
|
since there is only one pair of consecutive pages that need a page flip. The
|
|
|
order is first+last, second+penultimate, … and the original pages can be
|
|
|
shuffled this way with <tt class="docutils literal">paperjam</tt> or simply using the other order for the
|
|
|
second side printing, than for the Möbius band. But there is a bit of fun
|
|
|
topology missing here :-)</p>
|
|
|
<div class="figure">
|
|
|
<object data="./images/mobius-print/leporello.svg" style="width: 66%;" type="image/svg+xml"></object>
|
|
|
<p class="caption">A leporello order is also quite good, with only one sheet-flip in the entire
|
|
|
document.</p>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="section" id="is-this-the-best-order">
|
|
|
<h2>Is this the best order?</h2>
|
|
|
<p>Yes, if "best" means "the minimum difference of numbers of pages that get put
|
|
|
on the same sheet is as big as possible". The proof is left as an exercise for
|
|
|
the reader.</p>
|
|
|
<!-- Hint: you cannot pair the middle page to anything else to get a better
|
|
|
result. -->
|
|
|
<p>Of course, this holds for a set of pages with no additional assumptions. In
|
|
|
ordinary print, having a sheet-turn between chapters is fine and under similar
|
|
|
guarantees other approaches may yield better results.</p>
|
|
|
</div>
|
|
|
<div class="section" id="cheat-sheet-paperjam-commands">
|
|
|
<h2>Cheat sheet: paperjam commands</h2>
|
|
|
<table border="1" class="docutils">
|
|
|
<caption>Various commands for ordering pages for duplex printing with paperjam.</caption>
|
|
|
<thead valign="bottom">
|
|
|
<tr><th class="head">Order</th>
|
|
|
<th class="head">Command</th>
|
|
|
</tr>
|
|
|
</thead>
|
|
|
<tbody valign="top">
|
|
|
<tr><td>Classic two-sided</td>
|
|
|
<td><tt class="docutils literal">null</tt></td>
|
|
|
</tr>
|
|
|
<tr><td>Two pages per side</td>
|
|
|
<td><tt class="docutils literal">nup(2)</tt></td>
|
|
|
</tr>
|
|
|
<tr><td>Booklet</td>
|
|
|
<td><tt class="docutils literal">book</tt> (follow with <tt class="docutils literal">nup(2)</tt> for actual booklet print)</td>
|
|
|
</tr>
|
|
|
<tr><td>Leporello</td>
|
|
|
<td><tt class="docutils literal">modulo(2) {1 2} modulo(1,half) {1 <span class="pre">-1}</span></tt> (The first <tt class="docutils literal">modulo</tt> just adds blank pages to the end.)</td>
|
|
|
</tr>
|
|
|
<tr><td>Möbius (with patch)</td>
|
|
|
<td><tt class="docutils literal">interleave(2)</tt></td>
|
|
|
</tr>
|
|
|
<tr><td>Möbius (known page count)</td>
|
|
|
<td><tt class="docutils literal">select <span class="pre">{1..5</span> <span class="pre">10..6}</span> modulo(1,half) {1 <span class="pre">-1}</span></tt></td>
|
|
|
</tr>
|
|
|
<tr><td>Multiple Möbius bands, odd-even</td>
|
|
|
<td><tt class="docutils literal">modulo(4) {1 3 2 4}</tt></td>
|
|
|
</tr>
|
|
|
<tr><td>Multiple bands, "modulo 3"</td>
|
|
|
<td><tt class="docutils literal">modulo(6) {1 4 2 5 3 6}</tt></td>
|
|
|
</tr>
|
|
|
<tr><td>Second half (smaller) of pages in reverse order</td>
|
|
|
<td><tt class="docutils literal">modulo(1,half) <span class="pre">{-1}</span></tt></td>
|
|
|
</tr>
|
|
|
<tr><td>Second half (smaller) of pages in normal order</td>
|
|
|
<td><tt class="docutils literal">modulo(1,half) <span class="pre">{-1}</span> modulo(1) <span class="pre">{-1}</span></tt></td>
|
|
|
</tr>
|
|
|
<tr><td>First half (bigger) of pages</td>
|
|
|
<td><tt class="docutils literal">modulo(2) {1 2} modulo(1,half) {1}</tt></td>
|
|
|
</tr>
|
|
|
</tbody>
|
|
|
</table>
|
|
|
<p>I might create more patches for avoiding the weird <tt class="docutils literal">modulo</tt> commands…</p>
|
|
|
<hr class="docutils" />
|
|
|
<table class="docutils footnote" frame="void" id="illustrations" rules="none">
|
|
|
<colgroup><col class="label" /><col /></colgroup>
|
|
|
<tbody valign="top">
|
|
|
<tr><td class="label"><a class="fn-backref" href="#footnote-reference-1">[1]</a></td><td>Most of the figures in this article are drawn with a single
|
|
|
page per a side of a sheet. I consider putting more pages on a single side
|
|
|
of paper to be an implementation detail, because it is not always possible
|
|
|
(e.g. with too small font) and sometimes you could put more than two pages
|
|
|
on a single side of paper, which leads to the fact that if you put
|
|
|
everything on one side of the paper, you can see everything at once and save
|
|
|
the other side. Not very useful though… My only exception is the booklet
|
|
|
printing below, because that one seems to be rather common.</td></tr>
|
|
|
</tbody>
|
|
|
</table>
|
|
|
<table class="docutils footnote" frame="void" id="ordering" rules="none">
|
|
|
<colgroup><col class="label" /><col /></colgroup>
|
|
|
<tbody valign="top">
|
|
|
<tr><td class="label"><a class="fn-backref" href="#footnote-reference-2">[2]</a></td><td>See how this neatly puts the first-past-half page right after
|
|
|
the half of the stack? Awesome!</td></tr>
|
|
|
</tbody>
|
|
|
</table>
|
|
|
<table class="docutils footnote" frame="void" id="mistake" rules="none">
|
|
|
<colgroup><col class="label" /><col /></colgroup>
|
|
|
<tbody valign="top">
|
|
|
<tr><td class="label"><a class="fn-backref" href="#footnote-reference-3">[3]</a></td><td>Also, if you flip the page around the wrong edge, you can just
|
|
|
rotate the rest of the stack and end up with the correct orientation.</td></tr>
|
|
|
</tbody>
|
|
|
</table>
|
|
|
<table class="docutils footnote" frame="void" id="multi-mobius" rules="none">
|
|
|
<colgroup><col class="label" /><col /></colgroup>
|
|
|
<tbody valign="top">
|
|
|
<tr><td class="label"><a class="fn-backref" href="#footnote-reference-4">[4]</a></td><td>A slight variation for which I can generate the order
|
|
|
with upstream <tt class="docutils literal">paperjam</tt> is using this order on small subsets of pages.
|
|
|
For example, if you only want to be able to see any two consecutive pages,
|
|
|
you can do this for just four pages – the order is then 1+3, 2+4, 5+7, 6+8,…
|
|
|
Since each sheet either contains two odd or two even pages, the following
|
|
|
page is on different sheet than the previous one. And you can do this
|
|
|
"modulo 3" to see three pages: 1+4, 2+5, 3+6, 7+10, … This "simulates"
|
|
|
multiple smaller Möbius bands, but will be probably harder to use.</td></tr>
|
|
|
</tbody>
|
|
|
</table>
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
</main>
|
|
|
</div> <!-- #main -->
|
|
|
|
|
|
<footer>
|
|
|
<hr>
|
|
|
Written using Pelican 4.9.1 by LEdoian.
|
|
|
</footer>
|
|
|
|
|
|
</body>
|
|
|
</html>
|