LaTeXを使ったPDFファイルの面付け

先月、Project Vineとして、デブサミ2013オープンソースカンファレンス2013 Tokyo/Spring へ参加していました。そのとき、展示ブースでは、Vine Linux開発者ガイドの小冊子版を配布しました*1

おかげさまで「Vine Linux開発者ガイド」の小冊子は、大変好評でした。ということで、みなさま、ぜひVine Linuxの開発者になってください(笑

なお、小冊子版「Vine Linux開発者ガイド」のPDFファイルをこちらに置いています:
小冊子版「Vine Linux開発者ガイド」 (on trac.vinelinux.org)


さて、「Vine Linux開発者ガイド」のA5版小冊子を作るときに、LaTeXを使ったPDFファイルの面付けをしました。今回は、その面付け方法を紹介します。

面付け

その前に、面付けについて簡単な説明をします。

面付けとは、印刷・断裁・製本加工などの都合を踏まえて、印刷する版に対して複数頁を配置していくことをいいます。書籍や雑誌、辞書、論文誌などの様々な印刷物に応じて、面付けする方法もいくつかあります。

例えば、全16頁のPDFファイルを中綴じ小冊子にするためには、以下のように二面付けします。

実際に印刷するときは、①、②、③、④のそれぞれの表、裏を両面印刷します。その後、①、②、③、④を重ね合わせて、ホチキスで中綴じすれば、小冊子が完成します。

ゴリ押し(笑

こんときに、店頭で書いた \domentuke が以下の通りです*2

%#!pdflatex 
\documentclass[landscape,a4paper]{article}
\usepackage{graphicx}
\pagestyle{empty}
\begin{document}

\makeatletter
%% \domentuke[t(オプション;縦書きの場合)]{PDFファイルの総頁数(4の倍数)}{PDFファイル名}
\newcommand\domentuke[3][]{%
  \@tempcnta\@ne\relax
  \@tempcntb #2\relax
  \@whilenum \@tempcnta<\@tempcntb \do{%
    \vbox to \textheight{\vss
      \hbox to \textwidth{\hss
        \ifx#1t\relax
          %%縦書き
	  \includegraphics[page=\the\@tempcnta]{#3}%
	  \includegraphics[page=\the\@tempcntb]{#3}%
        \else
          %%横書き
          \includegraphics[page=\the\@tempcntb]{#3}%
          \includegraphics[page=\the\@tempcnta]{#3}%
        \fi
      \hss}%
    \vss}
    \clearpage
    \advance\@tempcnta\@ne\relax
    \advance\@tempcntb-\@ne\relax
    \vbox to \textheight{\vss
      \hbox to \textwidth{\hss
        \ifx#1t\relax
	  \rotatebox{180}{\includegraphics[page=\the\@tempcnta]{#3}}%
	  \rotatebox{180}{\includegraphics[page=\the\@tempcntb]{#3}}%
        \else
          % \includegraphics[page=\the\@tempcnta]{#3}%
          % \includegraphics[page=\the\@tempcntb]{#3}%
          %%「用紙の両面印刷」で「長辺を綴じる」ため
          \rotatebox{180}{\includegraphics[page=\the\@tempcntb]{#3}}%
          \rotatebox{180}{\includegraphics[page=\the\@tempcnta]{#3}}%
        \fi
      \hss}%
    \vss}
    \clearpage
    \advance\@tempcnta\@ne\relax
    \advance\@tempcntb-\@ne\relax
  }%
}
\makeatother

\domentuke{48}{devsumi13-vldevbk.pdf}

\end{document}

pdfpages パッケージの小冊子作成オプション booklet

後々、pdfpagesパッケージのドキュメントを思い出してみたら、bookletオプションがあるではないか(笑

ということで、以下でも小冊子作成がおkになります!

%#!pdflatex 
\documentclass[a4paper]{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=-,booklet,landscape]{devsumi13-vldevbk.pdf}
%% または
%% \includepdf[pages=-,signature=48,landscape]{devsumi13-vldevbk.pdf}
%% 縦書きの場合、
%% \includepdf[pages=-,signature*=48,landscape]{devsumi13-vldevbk.pdf}
\end{document}

*1:この小冊子作成の裏話を暴露すると……、デブサミ2013で配るものがなかったので、当日明朝に3, 4時間かけて、急遽DocBookからLaTeXへ変換して、とりあえず読める程度の組みました(ひどい

*2:\domentuke 内には、\expandafter が一度も出ていません……。\expandafter ファンのみなさま、すみません。