EmacsからPDF出力

Emacsのバッファ、あるいはリージョンの内容をPDFに出力できないかと、

こちらの2つの記事を参考にスクリプトを作成しました。メモとして残しておきます。

スクリプト(Emacs Lisp)

;; PDF出力
(setq my-pdfout-command-format "nkf -e | e2ps -a4 -p -nh | ps2pdf - %s")
(defun my-pdfout-region (begin end)
    (interactive "r")
    (shell-command-on-region begin end (format my-pdfout-command-format (read-from-minibuffer "File name:"))))
(defun my-pdfout-buffer ()
    (interactive)
    (my-pdfout-region (point-min) (point-max)))

使い方

上記のスクリプトを、「~/.emacs」あたりに追記してください。


そして、以下のコマンドでPDFに出力します。

  • カレントバッファの内容をPDF化
M-x my-pdfout-buffer
  • リージョンの内容をPDF化
M-x my-pdfout-region


なお、コマンド実行の際に、ミニバッファで

File name:

のようにファイル名を聞かれるので、ここでファイル名を指定してください。


また、現状ではPDF化したファイルの保存場所は
カレントバッファで開いているファイルの場所です。
(「*scratch*」の内容などを保存する際にはホームディレクトリになります。)

おわりに

参考にした記事として上記した記事の、「Emacsからの印刷」も便利で使っていましたので、
今回は、少しカスタマイズして「PDF化」を行えるようにしてみました。


Emacsは、Emacs Lispを用いればゲームも作れてしまうなど、拡張性がとても高いです。
ゲームに関しては、「gamegrid.el」などというライブラリが標準のパッケージに入っている所が
なんとも、遊び心にあふれてますね。