Ubuntu Weekly Recipe

第644回ノート表示にも対応したプレゼンテーションツールPympress

プレゼンテーションツールと言えばImpress・PowerPoint・Keynoteが一般的ですが、編集ツールが事実上決め打ちになってしまいます。しかしながら、どうせなら好みのテキストエディターでプレゼンテーション資料も編集したいという特殊な性癖を持っている人も多いでしょう。そんな人におすすめするのがLaTeXで資料を作成できるBeamerです。今回はBeamerで作った「コメントノート付きのPDF」を用意し、マルチディスプレイで表示する際に便利な「Pympress」を紹介します。

Pyhton/GTK製のPDFプレゼンテーションツール「Pympress」

Pympress自身はPython/GTKで作られた、PDFプレゼンテーションツールです。

  • 聴講者用・発表者用の2種類のウィンドウ
  • タッチディスプレイ用のボタン
  • ソフトウェアポインター
  • 資料画面への書き込み
  • 経過時間・残り時間
  • PDFの注釈
  • Beamerが生成するノートページ
  • VLCによる動画再生
  • 設定ファイルによるレイアウト・ショートカットのカスタマイズ

上記のように今風のプレゼンテーションツールの基本機能を一通り備えたインターフェースとなっています。

Impressのようなプレゼンテーション資料の作成ツールであれば、最初から同等の機能が備わっています。ImpressでWYSIWYGに編集するなら、おそらくそのままImpressを使い続けたほうが良いでしょう。Pympressのターゲットはどちらかと言うと「Impressで資料を作りたくない」層です。特にLaTeXとBeamerを組み合わせて資料PDFを生成するユーザーをメインターゲットにしています[1]⁠。

PDFであればGUIを備えた大抵のPCで表示可能です。よってマシントラブルが発生してもPDFさえコピーすれば、⁠xxのツールが入っていないので表示できない!」となることはそうそうありません[2]⁠。最近だとスマートフォンからの表示に対応したプロジェクターも多いでしょう。

このようなPDFで発表するユーザーにとって便利なツールとしてよく使われていたのがimpress!ve(パッケージ名:impressive⁠⁠」です。本連載でも2009年に第88回プレゼンツール『impressive』を使うで村田さんが紹介しています。しかしながらimpressiveはマルチディスプレイ時の利用法に難があり、なおかつ開発が若干停滞気味でした。特にPython 3への対応の遅れは致命的で、結果的にUbuntu 20.04 LTSのリポジトリからはimpressiveは削除されてしまいます。その後、Python 3に対応した0.13.0のベータ版が出たため、20.10からは復活しているものの11月時点でもベータ版という扱いです[3]⁠。

それに対してPympressは、2009年ぐらいに登場し一時期開発が停滞したものの、その後2015年に復活したあとは活発に開発されているツールです。impressiveでできていたことはほとんどサポートしているため、よっぽど特別な理由がない限りはPympressに移行できると考えて問題ありません。

Pympressのインストール

PympressはUbuntu 20.04 LTSからリポジトリにパッケージが用意されるようになりました。よってaptコマンドで簡単にインストール可能です。Pythonパッケージなので、最新版が必要ならpipを使うという手もあるでしょう。

ただし気をつけなくてはいけないのは、Ubuntu 20.04 LTSのpympressパッケージは依存関係が足りないことです。よって次のように複数のパッケージを指定してインストールしてください。

$ sudo apt install pympress gobject-introspection gir1.2-poppler-0.18

上記はデスクトップ版のUbuntuで確認しているものの、おそらく他のデスクトップ環境でも同じはずです。ちなみにこの問題は20.10では解消されています。また、PDF内部の動画を再生できるようにするためにVLCも一緒にインストールされます。

Pympressの使い方

さっそくPympressの使い方を紹介したいところですが、その前にPDFを用意する必要があります。そこら辺にある適当なPDFファイルを使ってもいいのですが、せっかくならBeamerのノートに対応したPDFを使いたいところ。そこでふたつファイルを用意しましたので、それぞれに応じて使い方を説明しましょう。

アクティビティから「pympress」を検索してもいいですし、コマンドラインからpympress ファイル名を実行する方法もあります。後者はプレゼンテーションの時間をオプションとしても指定可能です。

一般的なPDFファイル

まずは一般的なPDFファイルで雰囲気を感じとってください。起動するウィンドウは「Content」「Presenter」のふたつです。Contentには現在表示中のスライドを全画面で表示しています。Presenterは発表者のための情報として、現在のスライド、次のスライド等を表示します。Contentウィンドウをプロジェクターに繋がったディスプレイに全画面で表示し、Presenterウィンドウを手元の画面に表示する想定です。

図1 Contentウィンドウ
画像
図2 Presenterウィンドウ
画像

最近だとOBSや各種ミーティングツールを使って発表することもあるでしょう。その場合はContentウィンドウだけを共有します。

プレゼンテーションのページ切り替えは、カーソルキー・PageUp/Down・スペースキーなどを利用します。マウスを使いたい場合は、PresenterウィンドウのメニューにあるPresentationの「Big buttons」をチェックしてください。

Aキーを押すと、PDFの注釈(annotation)表示のオンオフが切り替わります。プレゼンテーションだとあまり使いませんが、既存のPDFに注釈でコメント付けて発表したいときに便利でしょう。ちなみにUbuntuのEvinceでも、最近は日本語の注釈が付けられるようになっています。EvinceでPDFファイルを開き、画面左上にあるページの右のペンボタンを押します。⁠テキストをメモ」ボタンを押して、注釈を入れたい場所をクリックしましょう。メモ入力ダイアログが開くので、任意の注釈を入れてください。⁠テキストをハイライト」のほうは選択した文字列をハイライトします。注釈・ハイライトは右クリックすることで、削除・編集できますので必要に応じて使い分けてください。

他にも次表のようなショートカットキーが用意されています。ショートカットキーはPresenterウィンドウの右上にあるHelpからも確認可能です。大文字で表記していますが、Shiftキーを押す必要はありません。基本的にキーボードでナビゲーションしたほうが便利な印象です。

キー 説明
カーソルキー ページ遷移
スペースキー ページ遷移
PageDown/Up ページ遷移
Ctrl+ページ遷移 ラベル単位でジャンプ
G 指定したページにジャンプ
J 指定したフレーム番号にジャンプ
Enter ジャンプの確定
ESC ジャンプのキャンセル
BackSpace ジャンプ前に戻る
Ctrl+BackSpace ジャンプ先に戻る
Home 最初のページに移動
End 最後のページに移動
F11 F F5 Ctrl+L Contentの全画面表示オンオフ
Ctrl+F Presenterの全画面表示オンオフ
P タイマーの一時停止
R タイマーのリセット
T 発表時間の設定
B Content側の画面を暗転
H ハイライト機能のオンオフ
Ctrl-Z ハイライト機能のアンドゥ
N ノート機能のオンオフ
A 注釈表示のオンオフ
S 画面の入れ替え
Z 指定した領域をズーム
U ズーム解除
L マウスポインター機能のオンオフ
O ファイルを開く
Ctrl-W ファイルを閉じる
Q Pympressの終了

ハイライト機能は発表中の資料に直接メモや図を書き込む機能です。マウスだとなかなか難しいですが、発表側がタッチパネルに対応しているディスプレイなら、使いやすい機能です。

図3 発表中に図を書き込めるハイライト機能
画像

ズーム機能は、Zキーで有効化するとカーソルが十字アイコンになります。あとは拡大したい領域を対角線上にドラッグしてください。

図4 任意の領域を拡大できる
画像
図5 Lキーでマウスポインターを赤く表示できる
画像

ノート付きのPDFファイル

Pympressのノート表示は、Beamerが出力するPDFに合わせて作りこまれています。Beamerは「PDFを生成するタイミング」でノートを埋め込むため、ノートを表示する方法は次の3種類となります。

  1. スライドの合間にノート表示のスライドを埋め込む
  2. ノートのみが表示されたPDFを作る
  3. スライドの横にノート表示用の領域を作る

1番目の方法は、ノートの内容もひとつのページとして埋め込まれたPDFとなります。発表時のコメント内容もセットで提供したい場合に便利でしょう。ただしBeamerを使うなら、同じソースから発表資料と配布資料を別に作ることも可能なので、そこまで使うものでもありませんし、今回のPympressでも使用しません。

2番目の方法は1とは逆にノートのみを表示したPDFを作る方法です。発表資料とは独立したPDFを手元に置いて、資料とは独立してページ遷移して内容を確認したい場合に使います。これもPympressでは使いません。

3番目はデュアルディスプレイ向けの出力方法です。たとえば発表資料が16:9のアスペクト比で出力される想定だとすると、たとえばノート用の同サイズの領域を連結して、結果として32:9という横長なPDFが生成されます。生成したPDFは同解像度設定にしたデュアルディスプレイをまたいで表示させることで、発表用のディスプレイにはPDFの発表資料領域を、手元のディスプレイにはノートを表示できます。まさに力技。ちなみにBeamerには拡張領域に前後のページを埋め込むモードも存在します。

図6 Beamerのノート付きPDFは横長(設定によっては縦長)のPDFになる
画像

Pympressは3番目のPDFを前提として使用します。つまりPympressでノート機能をオンにしたら(Nキーを押したら⁠⁠、PDFの画面の半分をContentに表示し、残り半分をPresenterに表示します。また、現在のスライドと次のスライドもPresenterに表示します。

図7 Pympressのノート表示モード
画像

このような表示方法を採用しているため、ノート機能時はPDFの注釈は表示できません。このあたりはノートと注釈のどちらを使うかをあらかじめ決めておくと良いでしょう。

ちなみにPympressはあくまでPDFのページをどう表示するかということのみを考えているため、Beamer以外のツールで横長生成したPDFでも利用可能です。ちなみに普通のPDFをノート表示した場合は、単に縦に二分割されるだけです。

Pympressのカスタマイズ方法

Pympressはコンフィグファイルを編集することで、レイアウトやショートカットキーをカスタマイズできます。v1.5.0からカスタマイズできることにはなっているのですが、その方法はどこにも載っていません。コードを読んで類推する必要があります。

コンフィグのマスターデータは以下のファイルです。

/usr/lib/python3/dist-packages/pympress/share/defaults.conf

ユーザーのコンフィグファイルは$XDG_CONFIG_HOME/pympressが参照されます。特に変更していなければ~/.config/pympressです。

というわけで、まずはマスターデータをユーザーコンフィグとしてコピーしてしまいましょう。

$ cp /usr/lib/python3/dist-packages/pympress/share/defaults.conf ~/.config/pympress

あとは~/.config/pympressを編集するだけです。カスタマイズできるといっても今のところ使えるのは、初期設定値・マウスポインターの色・ショートカットキーぐらいでしょうか。ただショートカットの変更は人によっては必須と言っていいほど重要な機能なはずです。

Beamerでノート付きのプレゼンテーション資料を作る

ここまで説明したように、Pympressを使うならBeamerで資料を生成すると便利です。BeamerはLaTeXのクラスとして作られているため、LaTeXの処理系とお好みのテキストエディターさえあれば生成できます。

UbuntuならLaTeXを次のようにインストールすると良いでしょう。

$ sudo apt install --no-install-recommends texlive-lang-japanese \
  texlive-latex-extra texlive-latex-recommended fonts-noto-cjk-extra

LaTeXのパッケージサイズはかなり大きい(数百MB)ので、十分高速なインターネット回線を用意してください。ちなみに--no-install-recommendsを指定しているのは、なるべくインストールするものを少なくするための措置です。これがないと1GB以上のダウンロードになってしまいます。

あとは普通にTeXのファイルを編集し、PDFを生成するだけです。適当なディレクトリに移動して、実際にビルドしてみましょう。

$ mkdir ~/beamer && cd beamer

以下の内容のデータをslides.texとして作成してください。

\documentclass[aspectratio=169,dvipdfmx,12pt]{beamer}
\usepackage{bxdpx-beamer}
\usepackage{pxjahyper}
\usepackage[noto-otc]{pxchfon}
\renewcommand{\kanjifamilydefault}{\gtdefault}
\usepackage{pgfpages}
\setbeamertemplate{note page}{\pagecolor{yellow!5}\vfill\insertnote\vfill}
\setbeameroption{show notes on second screen=right}
\usetheme{metropolis}
\title{Beamerによるプレゼンテーションサンプル}
\author{柴田充也}
\institute{Ubuntu Japanse Team}
\date{2020年12月2日}
\begin{document}

\begin{frame}
  \titlepage
\end{frame}

\section{はじめに}
\begin{frame}\frametitle{本日お伝えしたいこと}
  \tableofcontents
\end{frame}

\section{重要なこと}
\begin{frame}\frametitle{いっこめ}
  \begin{itemize}[<+->]
    \item 項目1
    \item 項目2
      \note[item]{項目2について熱く語る}
    \item 項目3
  \end{itemize}
\end{frame}

\begin{frame}\frametitle{にこめ}
  \begin{enumerate}
    \item 項目1
    \item 項目2
    \item 項目3
  \end{enumerate}
\end{frame}

\section{そこまで重要でないこと}
\begin{frame}\frametitle{さんこめ}
  \begin{itemize}
    \item 項目1
    \item 項目2
    \item 項目3
  \end{itemize}
\end{frame}

\end{document}

あとは次の方法でPDFを生成します。

$ uplatex slides.tex
$ uplatex slides.tex
$ uplatex slides.tex
$ dvipdfmx slides.dvi

実際に生成したのが前述のノート付きのPDFファイルです。

ちなみに最近改訂第8版がリリースされたLaTeX2ε美文書作成入門「18.2 Beamerによるスライド作成」でもBeamerの基本的な使い方を簡単に紹介しています。初めて触るならそちらも参考になるでしょう。なお美文書作成入門では、upLaTeXではなくLuaTeXでBeamerスライドを作っています。本文で使われているサンプルを試す場合は、Ubuntuの場合texlive-luatexパッケージのインストールも必要なので注意してください。

おすすめ記事

記事・ニュース一覧