ANSI Common Lispの規格書(に近いもの)のPDFを入手する
ANSI Common Lispの規格書を入手となれば当然ANSIが出しているので、ANSIから入手することになります。
現在PDFで$60のようなので約6,000円でしょうか。
しかし、このPDFは、紙媒体をスキャンした画像をPDFとしていて、検索もできないし電子媒体としては出来がひどいことで知られています。
さて、では、お馴染のLispWorksのHyperSpecや、FranzのFranz online ANS for Common Lispはどこから電子データを持ってきているのかというと、ANSIに持ち込む前のドラフトを元にしています。
HyperSpecの方はどの時点のものかは不明ですが、Franzの方は、dpANS2を元にしているという解説ページがあります。
このページにはdpANSが3つあると解説されていますが、この3つのdpANSは、CMUのAIリポジトリ等入手可能です。
今回は、このうちdpANS3RからPDFを作成してみます。
dpANS3RからPDFを作成する
用意するもの
- dpans3のdviファイル
- DVI→PDF変換ツール(dvipdf)
- PDF結合ツール(pdftk)
まず、上記CMUのサイトからdpans3r.tgzとdpans3.tgzをダウンロードします。
$ wget http://www.cs.cmu.edu/afs/cs/Web/Groups/AI/lang/lisp/doc/standard/ansi/dpans/dpans3.tgz
$ wget http://www.cs.cmu.edu/afs/cs/Web/Groups/AI/lang/lisp/doc/standard/ansi/dpans/dpans3r.tgz
あとは展開して、DVIファイルをPDFに変換し、結合するだけです。
$ tar xvf dpans3.tgz
$ tar xvf dpans3r.tgz
$ mv dpANS3R/* dpANS3/
$ cd dpANS3
$ gunzip *.dvi.Z
$ for f in chap-*.dvi;do dvipdf $f;done
$ pdftk chap-0.pdf chap-1.pdf chap-2.pdf chap-3.pdf chap-4.pdf \
chap-5.pdf chap-6.pdf chap-7.pdf chap-8.pdf chap-9.pdf chap-10.pdf \
chap-11.pdf chap-12.pdf chap-13.pdf chap-14.pdf chap-15.pdf \
chap-16.pdf chap-17.pdf chap-18.pdf chap-19.pdf chap-20.pdf \
chap-21.pdf chap-22.pdf chap-23.pdf chap-24.pdf chap-25.pdf \
chap-26.pdf chap-a.pdf cat output dpANS3-15.17.pdf
以上の操作で、電子データとして中身の検索も可能な、dpANS3-15.17.pdf
が生成されます。
なお、手元のANSI INCITS 226-1994(R2004)のPDFのページ数を確認すると表紙も含めて全体で1153ページですが、dpANS3では1360ページあります。
上述のCL Untold Storyによると、縦方向のスペースを調整した結果200ページも圧縮されたらしいです。
まとめ
ANSI規格の著作権は、ANSIが所有することになるようです。
規格をまとめたコミュニティ側としては、パブリックドメインにしたかったようですが、この辺りの経緯はCommon Lisp: The Untold Story - nhplace.comで語られています。
dpANSがリファレンスとして加工されて利用されるのにはこんな経緯がありますが、dpANSのTeXについては、Kent Pitman氏の見解によれば、派生、再配布、自由とのことです。
初稿: 2016-07-01 02:58
Discussion