pdfpages** は、すでにある PDF ファイルのページを、いま組んでいる文書の中へそのまま差し込むためのパッケージです(作者は Andreas Matthias)。表紙や署名済みの用紙を頭に付ける、別々の PDF をつなげて 1 冊の学位論文にする、スライドを 2×2 に並べて配布資料にする — そうした作業を \includegraphics のような余白の崩れなしにこなします。中心となる命令は **\includepdf[⟨オプション⟩]{ファイル.pdf}** ひとつです。
基本の使い方
プリアンブルで \usepackage{pdfpages} を読み込み、本文で \includepdf を呼びます。最小の例は次の通りです。これだけで、cover.pdf の全ページが用紙いっぱいに(余白なしで)差し込まれます。引数のファイル名に 空白を含めてはいけません。
\documentclass{article}
\usepackage{pdfpages}
\begin{document}
% 本文…
\includepdf[pages=-]{cover.pdf}
% …続きの本文
\end{document}\includepdf は内部で graphicx パッケージの \includegraphics を呼び出します。そのため、pdfpages 自身が解釈しないオプション(後述の trim・clip・scale など)は、そのまま \includegraphics へ渡されます。標準では各ページは用紙に合わせて 自動的に拡大・縮小 されます。
対応エンジンは公式マニュアル(v0.6g)に pdfTeX・VTeX・XeTeX・LuaTeX・pTeX と明記されています。つまり pdfLaTeX・LuaLaTeX・XeLaTeX・(up)pLaTeX のいずれでも使えます。ただし PDF を直接出力するエンジンが前提で、**DVI を出力する経路では PDF を取り込めず、pdfpages は代わりに空白ページを挿入します**。日本語で広く使う pLaTeX+dvipdfmx の構成では、ドライバとして dvipdfmx が効くように設定しておく必要があります(次章)。
どのページを入れるか(pages)
最も重要なオプションが **pages** です。差し込むページとその順序を、コンマ区切りのリストで指定します。既定値は pages=1(先頭ページのみ)なので、複数ページを入れたいときは必ず指定します。
| 書き方 | 効果 | 挿入されるページ |
|---|---|---|
pages=- | 全ページを順番に | 差し込む PDF のすべてのページ |
pages={1,3,5} | 指定したページだけ | 1・3・5 ページ目 |
pages={2-8} | 範囲 | 2 ページ目から 8 ページ目まで |
pages={3,{},15} | 空白ページを挟む({}) | 3 ページ目・白ページ・15 ページ目 |
pages=last-1 | 逆順 | 末尾から先頭へ(last は最終ページ) |
pages={1-3,5,{},7} | 組み合わせ | 範囲・単独・白・単独を混在 |
範囲は ⟨m⟩-⟨n⟩ と書きます。m を省くと先頭ページ、n を省くと最終ページとみなされます。だから pages=- は「最初から最後まで」、すなわち全ページの意味になります。最終ページはキーワード last でも指せます(範囲の中でのみ使えます)。空のページは {} を置くだけです — 表紙と本文の間に白ページを 1 枚入れたい、といったときに便利です。
% 表紙の次に白ページ、そのあと本文 1–20 ページ
\includepdf[pages={1,{},2-21}]{thesis-cover.pdf}
% 全ページを逆順で
\includepdf[pages=last-1]{scan.pdf}主なオプション
すべてのオプションは ⟨キー⟩=⟨値⟩ の形で、\includepdf の角括弧の中にコンマで並べます。真偽値のオプション(frame など)は値を省くと「真」になります。よく使うものを挙げます。
| オプション | 働き(既定値) | 使いどころ |
|---|---|---|
nup | 1 枚の用紙に複数ページを並べる(面付け)。nup=2x2 で横 2×縦 2。既定 1x1 | 配布資料・縮小印刷 |
frame | 各ページに枠線を付ける(既定 false) | ページの境界を見せる |
delta | 並べたページの間隔。delta=⟨横⟩ ⟨縦⟩(既定 0 0) | nup のページ間に余白 |
landscape | 用紙を 90° 回転して横向きに(既定 false) | 横長 PDF・冊子 |
scale | 倍率。graphicx へ渡る(noautoscale と併用) | 拡大率を手で決める |
fitpaper | 出力用紙を取り込む PDF の寸法に合わせる(既定 false) | 元の判型を保つ |
offset | ページ位置をずらす。offset=⟨横⟩ ⟨縦⟩(既定 0 0) | 綴じ代の調整 |
pagecommand | 各ページで実行する命令(既定 \thispagestyle{empty}) | ページ番号・ヘッダを足す |
link / linkname | 挿入ページをリンク先にする/その名前を変える(既定 false) | クリックで飛べるようにする |
nup(面付け, n-up imposition)** は、複数の論理ページを 1 枚の用紙に敷き詰める指定です。構文は nup=⟨横の枚数⟩x⟨縦の枚数⟩。標準では行方向(横)に詰めていきますが、column を付けると列方向(縦)優先になり、columnstrict は最終ページまで厳密に列優先で並べます。ページ間に隙間を空けたいときは delta、枠線で区切りたいときは frame を併せて使います。landscape は 用紙だけ を回転させる点に注意してください(中身のページ自体を回したいときは angle=90)。
pagecommand** は、差し込む各ページの上で実行される LaTeX 命令を指定します。既定は pagecommand={\thispagestyle{empty}}(ページ番号などを出さない)。逆にここを pagecommand={\thispagestyle{plain}} にすれば、取り込んだ PDF にも文書のページ番号を振れます。ヘッダやフッタ、透かしを重ねたいときの入口でもあります。
なお、\includegraphics 由来の **trim・clip** も使えます(pdfpages が知らないオプションは \includegraphics に渡されるため)。取り込むページの上下にあるヘッダ・フッタを切り落としたいときに便利です。例:\includepdf[pages=-, trim=0 2cm 0 2cm, clip]{paper.pdf}。
実例
配布資料を作る — スライドの PDF を 1 枚に 4 ページ(2×2)並べ、各ページを枠で囲み、ページ間に余白を入れます。
\includepdf[pages=-, nup=2x2, frame, delta=5mm 5mm]{slides.pdf}複数の PDF をつなげる — 別々のファイルを 1 つの文書にまとめるには **\includepdfmerge** を使います。引数は「ファイル名, ページ指定, ファイル名, ページ指定, …」の並び。ページ指定は pages と同じ書式で、省くとそのファイルの先頭ページだけが入ります。
% a.pdf の 1–2 ページと b.pdf の 3 ページ目をこの順に
\includepdfmerge{a.pdf, 1-2, b.pdf, 3}
% 学位論文を別々の章 PDF から組み立てる
\includepdfmerge{frontmatter.pdf, -, chap1.pdf, -, chap2.pdf, -}\includepdfmerge は \includepdf と同じオプションを受け付けます(ただし pages の代わりに上のページ指定を使います)。同じオプションを毎回書きたくなければ、**\includepdfset{⟨オプション⟩}** でまとめて既定値を設定できます。個別の \includepdf に書いたオプションが優先されます。
冊子(ブックレット)に面付けする — 用紙を二つ折りにして綴じる小冊子は、ページを折り順に並べ替える必要があります。pdfpages には **signature** オプションがあり、4 の倍数を渡すと折丁(signature)単位でページを並べ替え、自動的に nup=2x1 で配置します。簡易には pages=-, nup=1x2, landscape で 2 ページを横並びにする方法もありますが、折り順の並べ替えまでは行いません。本格的な小冊子組版には **booklet** パッケージも使えます。
% 縦長の文書を 8 ページ折丁の冊子に
\includepdf[pages=-, signature=8, landscape]{booklet-doc.pdf}日本語・ドライバの注意
pTeX 系(pLaTeX / upLaTeX)への対応は pdfpages v0.5a 以降に入りました。これらは DVI を出力し、dvipdfmx で PDF にする経路なので、PDF の取り込みは **dvipdfmx が担当** します。グラフィックスのドライバが正しく選ばれていれば \includepdf はそのまま動きます。うまく取り込めず白ページになる場合は、ドライバ指定を見直してください(クラスやグローバルオプションで dvipdfmx を渡す、\usepackage[dvipdfmx]{graphicx} を明示するなど)。
ひとつ覚えておきたい挙動として、取り込まれるのは各ページの 内容(見た目)だけ で、元 PDF の中のリンクや注釈は失われます。リンクを残したい場合は pax パッケージなどの補助が要ります。また、ページの背景色を \pagecolor で変えるときは、最初の \pagecolor を \usepackage{pdfpages} より 前 に置く必要があります。