はじめに
オライリーから発行されている「GNU Make 第3版 日本語版」は、GNU Free Documentation License に従い、PDFで配布されています。
(他にも O'Reilly Library として「オープンソースソフトウェアの育て方」「オープンソースソフトウェア」が公開されているみたい)
GNU Make 第3版のPDFをダウンロード
上記のページから PDF を1つづつダウンロードします。
手動でダウンロードしてきてもいいけど、今回は curl コマンドを使いました。
mae.pdf
maegaki.pdf
contents.pdf
ch01.pdf
ch02.pdf
ch03.pdf
ch04.pdf
ch05.pdf
ch06.pdf
ch07.pdf
ch08.pdf
ch09.pdf
ch10.pdf
ch11.pdf
ch12.pdf
appA.pdf
appB.pdf
appC.pdf
index.pdf
ato.pdf
for url_path in $(cat paths.txt) ; do
curl -sO "https://www.oreilly.co.jp/library/4873112699/${url_path}"
sleep 1
done
sleep 1
は、サーバにあまり負荷を掛けたくないな、と思ったので。
PDF の結合
この PDF は章ごとに分かれているため、個人で使う場合にはまとめて 1 つの PDF にしておきたいな、と思いました。
PDF の結合自体はいろいろなコマンドでできるみたいですが、今回は pdftk を使ってみました。
Ubuntu の場合にはインストールは以下のような感じ。
sudo apt install pdftk
それ以外の OS ではそれなりの方法でインストールが必要だと思います。
では pdftk コマンドで結合します。
pdftk $(cat paths.txt) cat output output.pdf
output.pdf
というファイル名で出力されました。
しおり情報の追加
このまま使ってもいいけど、せっかくなのでしおり情報も追加してみます。
以下のファイルを UTF-8 で保存します。
BookmarkBegin
BookmarkTitle: 表紙
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkBegin
BookmarkTitle: まえがき等
BookmarkLevel: 2
BookmarkPageNumber: 7
BookmarkBegin
BookmarkTitle: 目次
BookmarkLevel: 2
BookmarkPageNumber: 17
BookmarkBegin
BookmarkTitle: 1章 簡単なメイクファイルを書いてみよう
BookmarkLevel: 1
BookmarkPageNumber: 22
BookmarkBegin
BookmarkTitle: 2章 ルール
BookmarkLevel: 1
BookmarkPageNumber: 29
BookmarkBegin
BookmarkTitle: 3章 変数とマクロ
BookmarkLevel: 1
BookmarkPageNumber: 59
BookmarkBegin
BookmarkTitle: 4章 関数
BookmarkLevel: 1
BookmarkPageNumber: 80
BookmarkBegin
BookmarkTitle: 5章 コマンド
BookmarkLevel: 1
BookmarkPageNumber: 108
BookmarkBegin
BookmarkTitle: 6章 大きなプロジェクトの管理
BookmarkLevel: 1
BookmarkPageNumber: 126
BookmarkBegin
BookmarkTitle: 7章 ポータブルなmakefile
BookmarkLevel: 1
BookmarkPageNumber: 148
BookmarkBegin
BookmarkTitle: 8章 CとC++
BookmarkLevel: 1
BookmarkPageNumber: 159
BookmarkBegin
BookmarkTitle: 9章 Java
BookmarkLevel: 1
BookmarkPageNumber: 179
BookmarkBegin
BookmarkTitle: 10章 makeの性能改善
BookmarkLevel: 1
BookmarkPageNumber: 199
BookmarkBegin
BookmarkTitle: 11章 makefileの実例
BookmarkLevel: 1
BookmarkPageNumber: 213
BookmarkBegin
BookmarkTitle: 12章 makefileのデバッグ
BookmarkLevel: 1
BookmarkPageNumber: 248
BookmarkBegin
BookmarkTitle: 付録A makeの実行
BookmarkLevel: 1
BookmarkPageNumber: 265
BookmarkBegin
BookmarkTitle: 付録B 限界を超えて
BookmarkLevel: 1
BookmarkPageNumber: 268
BookmarkBegin
BookmarkTitle: 付録C GNU Free Documentation License――GNU Project――Free Software Foundation (FSF)
BookmarkLevel: 1
BookmarkPageNumber: 280
BookmarkBegin
BookmarkTitle: 索引
BookmarkLevel: 1
BookmarkPageNumber: 286
BookmarkBegin
BookmarkTitle: 奥付
BookmarkLevel: 1
BookmarkPageNumber: 296
面倒だったので、章単位のみです(節単位のしおりが欲しい人は、自分で頑張ってください)。
pdftk のしおり情報のフォーマットは以下が参考になると思います。
ちなみに、「まえがき等」というのは「監訳者まえがき」「まえがき」「第3版にむけて」をまとめているからです(雑な対応)。
さっきの output.pdf
に、このしおり情報を追加して、GNU Make 第3版.pdf
を作ってみます。
pdftk output.pdf update_info_utf8 bookmark.txt output "GNU Make 第3版.pdf"
完成しました!
個人利用は問題ないと思いますが、ご利用はライセンス(GFDL; GNU Free Documentation License)に従ってください。
詳細は上記の PDF の付録Cに書いてあります。
GFDL の日本語参考訳は以下で公開してくれているようです。
【日本語の参考訳(GFDL-1.2)】
英語版 GNU Make 第3版の場合
クリックで開閉ができます
英語版も、基本的に日本語版と同じように作れます。
英語版の GNU Make のページからファイルをダウンロードします。
ちなみに、Open Books のページには他にもたくさんの無償提供の書籍があります(html 版も多いですが)。一番上のおサルさんの画像は、たまに目をパチクリさせます。かわいい。
cpyrt.pdf
toc.pdf
author_colo.pdf
part1.pdf
ch01.pdf
ch02.pdf
ch03.pdf
ch04.pdf
ch05.pdf
part2.pdf
ch06.pdf
ch07.pdf
ch08.pdf
ch09.pdf
ch10.pdf
ch11.pdf
ch12.pdf
part3.pdf
appa.pdf
appb.pdf
appc.pdf
inx.pdf
英語版には、前書きや後書き(奥付)などが無いようです。
for URL_PATH in $(cat paths.txt) ; do
curl -sO "https://www.oreilly.com/openbook/make3/book/$URL_PATH"
sleep 1
done
pdftk $(cat paths.txt) cat output output.pdf
BookmarkBegin
BookmarkTitle: License/Copyright
BookmarkLevel: 1
BookmarkPageNumber: 1
BookmarkBegin
BookmarkTitle: Table of Contents
BookmarkLevel: 2
BookmarkPageNumber: 2
BookmarkBegin
BookmarkTitle: About the Author/Colophon
BookmarkLevel: 2
BookmarkPageNumber: 5
BookmarkBegin
BookmarkTitle: Part I. Basic Concepts
BookmarkLevel: 1
BookmarkPageNumber: 6
BookmarkBegin
BookmarkTitle: Chapter 1: How to write a Simple Makefile
BookmarkLevel: 2
BookmarkPageNumber: 7
BookmarkBegin
BookmarkTitle: Chapter 2: Rules
BookmarkLevel: 2
BookmarkPageNumber: 14
BookmarkBegin
BookmarkTitle: Chapter 3: Variables and Macros
BookmarkLevel: 2
BookmarkPageNumber: 45
BookmarkBegin
BookmarkTitle: Chapter 4: Functions
BookmarkLevel: 2
BookmarkPageNumber: 65
BookmarkBegin
BookmarkTitle: Chapter 5: Commands
BookmarkLevel: 2
BookmarkPageNumber: 92
BookmarkBegin
BookmarkTitle: Part II. Advanced and Specialized Topics
BookmarkLevel: 1
BookmarkPageNumber: 108
BookmarkBegin
BookmarkTitle: Chapter 6: Managing Large Projects
BookmarkLevel: 2
BookmarkPageNumber: 109
BookmarkBegin
BookmarkTitle: Chapter 7: Portable Makefiles
BookmarkLevel: 2
BookmarkPageNumber: 131
BookmarkBegin
BookmarkTitle: Chapter 8: C and C++
BookmarkLevel: 2
BookmarkPageNumber: 143
BookmarkBegin
BookmarkTitle: Chapter 9: Java
BookmarkLevel: 2
BookmarkPageNumber: 161
BookmarkBegin
BookmarkTitle: Chapter 10: Improving the Performance of make
BookmarkLevel: 2
BookmarkPageNumber: 184
BookmarkBegin
BookmarkTitle: Chapter 11: Example Makefiles
BookmarkLevel: 2
BookmarkPageNumber: 198
BookmarkBegin
BookmarkTitle: Chapter 12: Debugging Makefiles
BookmarkLevel: 2
BookmarkPageNumber: 231
BookmarkBegin
BookmarkTitle: Part III. Appendixes
BookmarkLevel: 1
BookmarkPageNumber: 248
BookmarkBegin
BookmarkTitle: A. Running mak
BookmarkLevel: 2
BookmarkPageNumber: 249
BookmarkBegin
BookmarkTitle: B. The Outer Limits
BookmarkLevel: 2
BookmarkPageNumber: 252
BookmarkBegin
BookmarkTitle: C. GNU Free Documentation License--GNU Project--Free Software Foundation (FSF)
BookmarkLevel: 2
BookmarkPageNumber: 263
BookmarkBegin
BookmarkTitle: Index
BookmarkLevel: 1
BookmarkPageNumber: 271
pdftk output.pdf update_info_utf8 bookmark.txt output "GNU_Make_3rd.pdf"
正式な書籍名は "Managing Projects with GNU Make, Third Edition" のようですが長いので、短い名前にしました。