素人の備忘録。
動機
TeXしかない状況でpdfファイルを結合せざるを得なくなったときに。
再度同じ状況になるとはとても思えないし、もっといいやり方があるだろうとも思うが、万が一のため記録しておく。
解決策
ファイル名を連番に変更
結合したいpdfファイルのファイル名を「同じファイル名 + 連番」の形にしておく。
例えばWindowsなら、
- 複数のpdfファイルを選択
- 右クリックから「名前の変更」
- 適当なファイル名を入力
とすれば、リネームソフトなどを使うまでもなく連番のファイル名になる。
参考
pdfファイルの結合
今、
- test(1).pdf
- test(2).pdf
- test(3).pdf
の3つのファイルを結合したいとする。
結合するpdfファイルを同じディレクトリに入れ、以下のtex
ファイルを同ディレクトリ内に作成する。
これをpdflatexで実行すると、3つのpdfファイルを結合したpdfファイルが作成される。
% pdfLaTeXで処理すること
\documentclass[a4paper]{article} % ここは変えないこと
\usepackage{pdfpages}
% ファイル数カウンタの宣言
\newcount\pdffilecounter
% ファイル名変数の宣言
\newtoks\filename
% 総ファイル数変数の宣言
\newcount\endfilenumber
% ファイル名を入力
\filename = {test} % ここを変更
% 総ファイル数を入力
\endfilenumber = 3 % ここを変更
\begin{document}
\loop % 繰り返し始点
\advance\pdffilecounter by 1 % ファイル数カウンタを1増やす
\includepdf[nup=1x1, pages=-]{\the\filename (\the\pdffilecounter ).pdf} % pdfファイルの取り込み
\ifnum\pdffilecounter < \endfilenumber % ファイル数カウンタが総ファイル数より小さければ繰り返し
\repeat % 繰り返し終点
\end{document}
全体のページ番号を入れたい場合は以下のような感じで。
% pdfLaTeXで処理すること
\documentclass[a4paper]{article} % ここは変えないこと
\usepackage{pdfpages}
% ファイル数カウンタの宣言
\newcount\pdffilecounter
% ファイル名変数の宣言
\newtoks\filename
% 総ファイル数変数の宣言
\newcount\endfilenumber
% ファイル名を入力
\filename = {test} % ここを変更
% 総ファイル数を入力
\endfilenumber = 3 % ここを変更
% ページ番号フォントの調整
\renewcommand{\thepage}{
{\Large
\textbf{
\textsf{
\arabic{page}
}}}}
% ページ番号位置の調整
\footskip=3.2cm
\begin{document}
\loop % 繰り返し始点
\advance\pdffilecounter by 1 % ファイル数カウンタを1増やす
\includepdf[nup=1x1, pages=-, pagecommand={\thispagestyle{plain}}]{\the\filename (\the\pdffilecounter ).pdf} % pdfファイルの取り込み
\ifnum\pdffilecounter < \endfilenumber % ファイル数カウンタが総ファイル数より小さければ繰り返し
\repeat % 繰り返し終点
\end{document}
注意
Windowsで結合するファイル名を日本語にした場合、上のtexファイルのエンコードはシフトJISにすること。
utf-8ではファイル名のところでエラーが出る。
ファイル名が半角英数のみならばutf-8でも問題ない。