1
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
blog/output/mobius-print.html

253 lines
12 KiB
HTML

9 months ago
<!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 &amp; 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 &amp;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 &quot;Möbius order&quot; 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 &quot;best&quot; means &quot;the minimum difference of numbers of pages that get put
on the same sheet is as big as possible&quot;. 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>
9 months ago
<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>
9 months ago
</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, &quot;modulo 3&quot;</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
&quot;modulo 3&quot; to see three pages: 1+4, 2+5, 3+6, 7+10, … This &quot;simulates&quot;
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>