Booklet 頁碼編排

想起就讀大學時常要繳報告,像一些程式作業的書面報告或其他學期報告等,篇幅都落落長。

為了省紙,除了雙面列印外,還會將它單面雙頁,於是每張紙就列印四頁原稿。(我是不是很有環保概念啊)

這過程中,我發現在頁數不是非常多的情況下(例如兩三百頁),可以將一張張 A4 疊起來,對折,然後於折線上以釘書機釘上。

以這種方式裝訂出小冊子的方式,有些印表機的驅動程式也有支援,叫做 Booklet 模式。

在印表機沒支援這種列印模式的情況,當然也可以手動的方式來實施。

但有個麻煩的地方,那就是列印順序。

當初我是以人工編好頁序,列印時才將這個頁序填進列印對話框

其實列印時的頁序編排,可以讓電腦代勞的:

def numPages(n):
    """Return two array of page number for a booklet printing
    Inputs:
        n - total pages
 
    Example:
    >>> numPages(11)
    (array([12,  1, 10,  3,  8,  5]), array([ 2, 11,  4,  9,  6,  7]))
    """
    N = (n+(4-1))/4*4
    h = range(1, N/2+1, 1) # head
    t = range(N, N/2, -1)  # tail
 
    import numpy as np
    even = np.array(zip(h,t))[np.arange(N/2)%2==1].flatten()
    odd  = np.array(zip(t,h))[np.arange(N/2)%2==0].flatten()
    return odd, even
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License