pdfpages 패키지(Andreas Matthias 제작)는 *이미 있는* PDF 파일의 페이지를 현재 조판 중인 문서 안에 그대로 넣어 줍니다. 표지나 서명된 양식을 앞에 붙이거나, 여러 PDF를 하나의 논문으로 이어 붙이거나, 슬라이드를 2×2로 배치해 배포 자료를 만들 때도 단순한 \includegraphics에서 생기는 여백 넘침 없이 처리할 수 있습니다. 핵심 명령은 \includepdf[⟨options⟩]{file.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–20 ページ
\includepdf[pages={1,{},2-21}]{thesis-cover.pdf}
% 全ページを逆順で
\includepdf[pages=last-1]{scan.pdf}주요 옵션
모든 옵션은 ⟨key⟩=⟨value⟩ 형식으로 쓰고, \includepdf의 대괄호 안에 쉼표로 나열합니다. frame 같은 불리언 옵션은 값을 생략하면 “참”을 뜻합니다. 자주 쓰는 것은 다음과 같습니다.
| 옵션 | 동작(기본값) | 사용처 |
|---|---|---|
nup | 한 장의 용지에 여러 페이지를 배치(n-up). nup=2x2 = 가로 2 × 세로 2. 기본값 1x1 | 배포 자료, 축소 인쇄 |
frame | 각 페이지에 테두리를 그림(기본값 false) | 페이지 경계 표시 |
delta | 배치된 페이지 사이의 간격. delta=⟨x⟩ ⟨y⟩(기본값 0 0) | nup 페이지 사이 여백 |
landscape | 용지를 90° 돌려 가로 방향으로 설정(기본값 false) | 가로형 PDF, 소책자 |
scale | 배율. graphicx로 전달됨(noautoscale과 함께 사용) | 크기를 직접 정하기 |
fitpaper | 출력 용지를 가져오는 PDF의 크기에 맞춤(기본값 false) | 원래 판형 유지 |
offset | 페이지 위치를 이동. offset=⟨x⟩ ⟨y⟩(기본값 0 0) | 제본 여백 조정 |
pagecommand | 삽입된 각 페이지에서 실행할 코드(기본값 \thispagestyle{empty}) | 페이지 번호/헤더 추가 |
link / linkname | 삽입한 페이지를 하이퍼링크 대상으로 만들거나 이름을 바꿈(기본값 false) | 페이지를 클릭 가능하게 함 |
nup(n-up imposition) 은 여러 논리 페이지를 한 장의 용지에 타일처럼 배치하는 지정입니다. 문법은 nup=⟨across⟩x⟨down⟩입니다. 기본적으로는 행 방향으로 채우지만, 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를 한 장에 4페이지(2×2)씩 배치하고, 각 페이지에 테두리를 두르며, 페이지 사이에 간격을 둡니다.
\includepdf[pages=-, nup=2x2, frame, delta=5mm 5mm]{slides.pdf}여러 PDF 이어 붙이기 — 별도 파일을 하나의 문서로 조립하려면 \includepdfmerge 를 사용합니다. 인수는 “filename, page-spec, filename, page-spec, …” 형식의 목록입니다. page-spec은 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 대신 위의 page-spec을 사용합니다). 같은 옵션을 매번 반복하고 싶지 않다면 \includepdfset{⟨options⟩} 로 기본값을 한 번에 설정할 수 있습니다. 개별 \includepdf에 적은 옵션이 그 기본값보다 우선합니다.
소책자용으로 배치하기 — 중철 소책자는 접는 순서에 맞게 페이지를 재배열해야 합니다. pdfpages에는 signature 옵션이 있습니다. 4의 배수를 주면 접장(signature) 단위로 페이지를 재배열하고 자동으로 nup=2x1로 배치합니다. 간단히 pages=-, nup=1x2, landscape로 두 페이지를 나란히 놓을 수도 있지만, 접는 순서로 재배열하지는 *않습니다*. 본격적인 소책자 조판에는 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} 앞에 두어야 합니다.