LoginSignup
8
7

More than 5 years have passed since last update.

IPython Notebookのスライドを(無理やり)pdf化する方法

Posted at

はじめに

以前IPython Notebookで卒論発表したいんじゃというエントリーを書かせていただきましたが、先日無事卒論発表が終わりましたので、事後報告をさせていただきます。

結論から言うと、IPython Notebookは、チームメンバーや研究室内での情報共有、プログラムのデモンストレーションには最適だが、卒論発表のような、時間を掛けてスライドを作成するような場合には、かけた努力に対する利益は少ないです。

そう思った理由は以下の通り。

  • 図の配置やオブジェクトの設置に関する自由度が低い
  • こまごまとした設定ファイルの編集が必要
    • プロジェクターの解像度、ボタンの非表示
  • 編集のたびにコマンドを実行し、ブラウザを立ち上げる必要がある
    • 自動化は可能だが、スライドのファイルを編集用のアプリケーションで開くのと比べると面倒
  • 環境のある(つまり自分の)PCでしか編集、実行できない
  • pdfファイル化するのに苦労する

いくつかの問題については以前の記事にも書いてあるので、解決はしてるわけですが、それでも、最初の項の自由度が低い、という点に関しては、PowerPointやKeyNoteのようにグラフィカルに編集できるものに比べると、どうしても見劣りしてしまいます。LaTeXのBeamerの代わりくらいにはなるかなという感じ(でもBeamerの方が自由度はさらに高い)。

今回は最後の「pdfファイル化するのに苦労する」の部分を、少しでも和らげるためのスクリプトを紹介します。

IPython Notebookのスライドを(無理やり)pdf化する方法

私の環境:
OS: Ubuntu 14.04
WM: Xmonad 0.11
必要なコマンド:
- import(パッケージ:imagemagick)
- convert(パッケージ:imagemagick)
- xte(パッケージ: xautomation)

スクリーンショットを撮ってjpgかpng形式で保存していき、連番になったそれらの画像群を、convertコマンドで一つのpdfファイルにする、というものです。

xteはUbuntuだとxautomationというパッケージに含まれているコマンドで、シェルからキーボードの操作やマウスの操作が行えるというものです。この機能を使ってスクリーンショットを撮る動作を自動化すれば、煩わしい操作からは開放されます。それに、何もせずとも画面が動いていく様子は、気持ちがいいです。

以下に、作成した簡単なスクリプトを載せます。各自の環境で読み替えてください。

#!/bin/bash

folder=$(pwd)
num=40
xte 'keydown Super_L' 'key 4' 'keyup Super_L'
for t in `seq 1 ${num}`
do
    name=$(printf screen_%03d.jpg $t);
    sleep 0.5
    import -window root -quality 0 ${folder}/${name}
    xte 'key Right'
done
xte 'keydown Super_L' 'key 3' 'keyup Super_L'
exit 0

使い方

事前に、モニタの解像度をプロジェクターの解像度に合わせてください。
xrandr --output HDMI1 --mode 1024x768
などです。

次に、別のワークスペースでNotebookのスライドモードに入り、全画面表示させておきます(この画面全体のスクリーンショットを撮るため)。

スクリプトを呼び出す際のディレクトリ内に画像が保存されますので、新規作成したディレクトリの中からスクリプトを呼び出すのがいいと思います。numはスライドの枚数にしたがって、各自変えてください。次の行のxteを使った操作は、ブラウザが立ち上がっているワークスペースに移動するものです。矢印キーで移動する方はそのように書き換えてください。

スクリプトを実行すると、スライドを表示しているワークスペース4に移り、importコマンドで、圧縮なしで全画面のスクリーンショットを撮り、→キーを押して次のスライドにうつります(PageDownにすればSubslideを含ませることも可能)。これを繰り返して、所定の枚数撮り終わったら、ワークスペース3に戻ってきます。

スライドが撮り終わったら、いらないスライドを削除したりしてpdfの順番になっているか確認した後に、

convert -page 1024x768 -gravity Center *.jpg out1.pdf

のようにしてpdfファイル化します。

まとめ

自分の場合、Notebookで発表はできましたが、誰からもその点に関するツッコミはなく、ちゃんと研究に関する質問がされました。すこしさびしいんですが、当然です。pdf化した資料は研究室の中での発表ではよく使うので、まだ使う機会はあるのかもしれません。でも、やっぱり素直にLibreOfficeのImpressでスライド作った方がいい気がしますね。Notebookは自分用の下書きと、プログラムのチュートリアルくらいに使うのが、あってる気がします。

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7