2015年7月24日

pdfpages

pdfpagesパッケージがdvipdfmxに対応したようだ.めでたい.というわけでpdfpagesの使い方を書いてみようと思う.

はじめに

pdfpagesとはLaTeXにPDFの各ページを挿入するためのパッケージです.というとgraphicxの\includegraphicsと同じな気がしてきますが,\includegraphicsが文書に図を挿入するのに対し,pdfpagesは文書の特定のページにもともとのPDFのページを挿入することができます.例えば

\documentclass[dvipdfmx]{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=2]{inc.pdf}
\end{document}
とすると,「inc.pdfの2ページ目のみ切り取ったかのようなPDFファイル」が生成されます*1.新しく何か書く,というよりは複数のPDFをまとめる場合などに便利でしょう.もともとのPDFの2ページを1ページにまとめる,などという処理も可能です.

インストール

TeX Live,W32TeXともに既に含まれているので,改めて導入する必要はありません.

使い方

platex + dvipdfmxを使う時は

\documentclass[dvipdfmx]{jsarticle}
\usepackage{pdfpages}
とします.pdflatex/lualatexの場合はオプション無しで,
\documentclass{article}
\usepackage{pdfpages}
でよいようです.
\includepdf[pages={1,3}]{inc.pdf}
とすることで,inc.pdfの1ページ目と3ページ目が挿入されます.最初に述べた通り,inc.pdfの各ページが文書の各ページを占有します.pagesは
  • pages=2とすると2ページ目を挿入
  • pages={2-4}とすると2ページ目から4ページ目までを挿入
  • pages={-3}とすると1ページ目から3ページ目までを挿入
  • pages={4-}とすると4ページ目以降全てを挿入.pages={4-last}でも同様.(lastはこのようなページ範囲の指定のみで有効.pages={last}という指定ができるわけではない.)
  • pages={5-3}とすると3ページ目から5ページ目までを逆順で挿入.
  • pages={last-1}とすると全ページを逆順で挿入.
  • pages={1,{},4}とすると1ページ目と4ページ目を挿入し,その間に空ページを入れる
  • pages={8,2-4,{},11}とすると8,2,3,4ページ目,空ページ,11ページ目の順番で挿入
  • pages=-とすると全ページを挿入
というように指定ができます.なお省略すると最初のページのみが挿入されます.PDFのページ数(最終ページ)は自動で取得をするように試みられますが,うまく行かない場合は
\includepdf[pages=-,lastpage=9]{inc.pdf}
のようにlastpageオプションで指定します.

かなりたくさんのオプションがあります.ここで紹介するのはごく一部です.

\includepdf[nup=2x3,pages=-]{inc.pdf}

横2縦3に並べて配置します.順番はcolumnオプションの有無で変わり

  • \includepdf[nup=2x3,pages=-]{inc,pdf}
    12
    34
    56
  • \includepdf[nup=2x3,column,pages=-]{inc.pdf}
    14
    25
    36
となります.もしinc.pdfが4ページしかない場合は次のようになります.
  • \includepdf[nup=2x3,pages=-]{inc,pdf}
    12
    34
     
  • \includepdf[nup=2x3,column,pages=-]{inc,pdf}
    13
    24
     
  • \includepdf[nup=2x3,column,columnstrict,pages=-]{inc,pdf}
    14
    2
    3

\includepdf[pagecommand={\thispagestyle{plain}},pages=-]{inc.pdf}

pagecommandで指定されたLaTeXの命令は,PDF挿入直前に実行されます.デフォルトは\thispagestyle{empty}で,これによってページ数が消えたりしています.上の例を実行すると,ページ数が追加されたinc.pdfが生成されます.

\includepdf[fitpaper]{inc.pdf}

現在作成している文書サイズと挿入されるPDFのサイズが異なる場合,pdfpagesは挿入するファイルを適当に拡大縮小し,現在の文書サイズにあわせます.fitpaperオプションを指定すると,逆に文書サイズを挿入されるPDF(の最初のページ)のサイズにあわせます.(拡大縮小も行われません.)文書サイズはそのままでよいが,挿入するPDFの拡大縮小を抑制したい場合はnoautoscaleオプションを使います.

\includepdf[nup=2x2,offset=0.5cm 0.7em,delta=0.3cm 2cm]{inc.pdf}

offsetはPDFを挿入する位置の調整,deltaはnupオプションを指定した場合の挿入されたPDF間隔の調整を行います.上の例では,PDFを右に0.5cmずらし,上に0.7cmずらして,また縦の間隔を0.3cm,横の間隔を2cmとして2×2の配置を行っています.マニュアルの9ページ目の図を見てもらうのが早いと思います.

\includepdf[frame]{inc.pdf}

挿入したPDFのまわりを枠で囲みます.

\includepdf[viewport=0 0 50 50]{inc.pdf}

\includegraphics(graphicxパッケージが提供するもの)が受けつけるオプションも利用可能です.

\includepdf[noautoscale,scale=0.8]{inc.pdf}

noautoscaleは上述した通りpdfpagesによる挿入するPDFの拡大縮小を抑制するオプションです.scaleオプションは\includegraphicsが解釈できるオプションです.この組み合わせにより挿入するPDFを自由な倍率で拡大縮小することができます.

\includepdfmerge[nup=2x3]{inc1.pdf,2,4,inc2.pdf,2-6}

命令が\includepdfではなくて\includepdfmergeであることに注意してください.\includepdfでは,例えばinc1.pdfとinc2.pdfの1ページ目を横に並べるということができません.そのような場合には,\includepdfmergeを使って複数のファイルを指定します.

ファイルはページ数とともに指定します*2.<ファイル名>,<ページ指定>の繰り返しで指定します.ページ指定は\includepdfのpagesオプションと同様です.また,\includepdfmerge\includepdfが受けつけるオプションのうち,pages以外を全て受けつけます.

\includepdf[pages=-,booklet]{inc.pdf}

面付けします.

注意

挿入にはgraphicxパッケージの\includegraphicsを用いています.特にBoundingBoxの指定が必要です.pdftexを使っていたり,最近のW32TeXやTeX Live 2015をデフォルトの設定で使っている場合(またはextractbbの自動起動が有効にしている場合)は自動で取得するので不要です*3

hyperrefパッケージなどを使うとリンクの入ったPDFを作ることができますが,そのようなファイルを\includepdfで挿入するとリンクが消えてしまいます.pdftkなどの別ツールの利用を検討してください.

マニュアル

いつも通りのtexdoc pdfpagesです.またはCTANへのリンク

*1
サイズは文書のサイズに調整されます.後述のfitpaperオプションを使うと挿入するPDFのサイズに文書のサイズを調整することもできます.
*2
ページ数を省略することもできます.その場合は\includepdf同様最初のページのみが挿入されます.
*3
そうでない場合は,extractbbにより.xbbファイルを作っておく必要があります.なお,.xbbファイルを使う場合は,PDFファイルの各ページのサイズが同じでなければなりません.\includegraphicsにも通用する話ですが,extractbbによりえられる.xbbファイルに書かれているBoundingBoxは1ページ目のみのものです.(-pオプションによりページ数を与えていればそのページのもの.)よって,1ページ目と2ページ目のサイズの違うPDFファイルの場合,.xbbファイルにより得られるBoundingBoxは,2ページ目に関しては間違ったものになります.

0 件のコメント:

コメントを投稿

コメントの追加にはサードパーティーCookieの許可が必要です