その他のスライド(powerdot / jsarticle)

いま TeX Live 2024 で \documentclass{slides} と書いても、ちゃんとコンパイルが通ります。バージョンは v2.4b、日付は 2022 年 5 月 18 日——LaTeX カーネルの一部として今も手入れされている スライド用クラス です。ただしその出自は beamer よりずっと古く、もとは SLiTeX という 別のフォーマットでした。LaTeX プロジェクト自身が配布物に同梱している旧版ユーザーガイドには、slides がかつての SLiTeX である、と一行で書かれています。SLiTeX が LaTeX 2ε(1994 年 6 月 1 日リリース)に吸収されて以来、スライドは「LaTeX の一機能」になりました。このページは beamer 以外のすべて——beamer より古いクラス、beamer を置き換えようとした powerdot、TeX Live に今も残る前世紀日付のクラス群、Markdown で書いたスライドの扱い、そして正直なところ LaTeX でスライドを作るべきでない場面 を扱います。

\documentclass{slides} — SLiTeX の生き残りは何をするか

まず本文が大きくなります。slides.def を読むと \normalsize\@setfontsize\normalsize\itwentypt{28pt} と定義されていて、基本サイズは 20 pt、行送りは 28 pt。次に、スライドは \begin{slide} … \end{slide} で書き、overlay 環境と note 環境がそれと並びます。実際に 3 つを 1 つずつ含む文書を組んでみると 3 ページが出て、フッタにはそれぞれ 11-a1-1 と刷られていました——スライドは番号、オーバーレイは英字の枝番、ノートはスライド番号にハイフンで連番。この「1-a」という記法だけで、これが物理的な OHP シートを重ねるための設計だったことが分かります。\onlyslides{...}\onlynotes{...} を使えば、番号の並びを指定して片方だけを出力できます(slides.def の 92 行目と 97 行目)。

いちばん面白いのは色の扱いです。slides.cls\DeclareMathVersion{invisible} という、文字どおり 「見えない」数式バージョン を宣言しています。\colorslides{...}\blackandwhite{...}slides.def の 103 行目と 116 行目)と組み合わせると、同じスライドを色ごとに刷り分けられます——赤で刷る文字だけを可視にして残りを不可視で組み、次は青だけを可視にする。刷り上がった OHP シートを重ねると、位置がぴったり合った多色のスライドになる。1980 年代に色付きのスライドを作るとはそういうことでした。もう一つ、新規の文書で使うときに引っかかるのが用紙です。slides.cls の 102 行目は \ExecuteOptions{letterpaper,final} と宣言していますが、実際に pdflatex に通すと PDF は A4(595.276 × 841.89 pt)で出てきます。TeX Live の pdftexconfig.tex\pdfpagewidth = 210 true mm を先に設定しており、標準クラスはそれを上書きしないからです。用紙を確実に決めたいなら geometry を読み込むか、明示的に a4paper / letterpaper を渡してから pdfinfo で確かめてください。

latex
\documentclass[a4paper]{slides}
\begin{document}
\begin{slide}
  Body text is 20pt here, on a 28pt baseline.
\end{slide}
\begin{overlay}
  Printed as slide 1-a, meant to sit on top of slide 1.
\end{overlay}
\begin{note}
  Printed as 1-1, for the speaker.
\end{note}
\end{document}

powerdot は 2026 年でも使えるか — pdflatex では通らない

入っています。TeX Live 2024 の powerdot.clsv1.7、日付は 2021/05/19、LPPL の維持状態は "maintained"、現メンテナは作者の Hendri Adriaens です。「もう死んだパッケージ」ではありません。ただし、いま使い始めるなら最初の 1 時間は発表内容ではなくビルド経路に消えます——\documentclass[style=klope]{powerdot} の文書を pdflatex にかけると、こう止まります: ! Package hyperref Error: Wrong DVI mode driver option 'dvips', そのあとに ! Undefined control sequence. が延々と続きます。原因は推測ではなくクラスに書いてあり、powerdot.cls の 180 行目が XeTeX 以外のときは \RequirePackage[setpagesize=false,dvips,...]{hyperref} と、hyperref に dvips ドライバを固定で渡しているからです。powerdot は PSTricks 系で、\RequirePackage{pstricks} も無条件で読み込みます。

通る道は 2 本あります。クラスが想定している latexdvipsps2pdf の PostScript 経路と、クラス自身が分岐で用意している xelatex です。どちらも手元で通り、\pause を含む 1 スライドがきちんとオーバーレイに展開されました(PostScript 側の BoundingBox は 792 × 594 pt、つまり 11 × 8.25 インチ横で、これが powerdot の既定 paper=screen の 4:3 です)。ただし 出来上がった PDF のページボックスは自動では合いません——手元の環境では 594 × 594 pt という正方形になったので、印刷や投影に回す前に必ず pdfinfo で確認し、必要なら dvipsps2pdf に用紙を明示してください。スタイルは powerdot-*.sty が 17 本同梱されています(aggiecimentfymahuskyikedajefkaklopepaintingspaziksailorsimpletycjaupen ほか)。歴史的には powerdot は prosperHA-prosper の後継で、beamer のマニュアルの謝辞にも HA-prosper の作者として Hendri Adriaens の名が挙がっています。ちなみに同梱の README は、インストールの案内先としていまだに tex.ac.uk/cgi-bin/ の URL を指しています。

terminal
# pdflatex stops here:
#   ! Package hyperref Error: Wrong DVI mode driver option `dvips',

# the route the class was designed for
latex talk.tex && latex talk.tex
dvips -o talk.ps talk.dvi
ps2pdf talk.ps talk.pdf

# or the branch the class provides itself
xelatex talk.tex && xelatex talk.tex

# always confirm the page box before you print
pdfinfo talk.pdf | grep "Page size"

ソースの書き味は beamer とだいぶ違います。スライドは \begin{slide}{タイトル} … \end{slide}、段階表示は beamer と同じ \pause。ノートは \note{...} ではなく note 環境で、しかもスライドの外側に置きます——\note{...} をスライドの中に書くと ! LaTeX Error: \begin{minipage} on input line 5 ended by \end{slide}. で止まります。出力の切り替えはクラスオプションの 2 本立てで、modepresentprinthandoutdisplayslidesnotesslidesnotes。実測で mode=handout,display=slidesnotes にすると \pause が畳まれ、ノートページのフッタに note 1 of slide 2 と刷られました(ただし handout モードでは landscape が使えず、クラス自身が警告を出します)。もう一つ powerdot だけの飛び道具が clock=true で、PDF に Acrobat の JavaScript を仕込んで スライド上に動く時計 を出します(clockformat=HH:MM:ssclockrefresh=1000)。動くかどうかはビューアの JavaScript 実装しだいなので、本番前に会場の環境で必ず試してください。

latex
\documentclass[style=klope,mode=handout,display=slidesnotes]{powerdot}
\title{A talk}\author{Me}
\begin{document}
\maketitle
\begin{slide}{First}
  \begin{itemize}
    \item One\pause
    \item Two
  \end{itemize}
\end{slide}
% the note environment goes OUTSIDE the slide
\begin{note}{Reminder}
  Say hello here.
\end{note}
\end{document}

TeX Live に今も入っている発表用クラス — 日付が語るもの

kpsewhich を叩けばどれも見つかります——seminar.clstalk.clstexpower.stypdfscreen.stypdfslide.styprosper.cls。CTAN は古いものを消さないので、TeX Live もそれを配り続けます。日付を並べると発表クラスの歴史がそのまま出てきます。そのなかで一つだけ特別なのが seminar です。1993 年に Timothy Van Zandt が LaTeX 2.09 用の document style として書き、Sebastian Rahtz が LaTeX 2ε クラスに移植したもので、いまも v1.63a(2021/07/01)として手入れされています。そして beamer のマニュアルの歴史の節には、beamer がもともと seminar クラスを使いやすくするための小さな私的マクロ集」 だったと書かれています。つまり、この一覧の中で最も古いものが、最も新しいものの母胎でした。

ファイルTeX Live 2024 での版と日付正体
beamer.clsv3.71 (2024/01/06)事実上の標準。Till Tantau が 2003 年に書き、2010 年から Joseph Wright らが保守
slides.clsv2.4b (2022/05/18)LaTeX カーネルの一部。かつての SLiTeX
seminar.clsv1.63a (2021/07/01)Timothy Van Zandt が 1993 年に作成。beamer の母胎
powerdot.clsv1.7 (2021/05/19)PSTricks 系。prosper/HA-prosper の後継
talk.clsv1.1 (2006/07/11)同じ内容を複数の版で出し分けることに主眼を置いたクラス
texpower.styv0.2 (2005/04/08)動的効果を足すパッケージ。クラスではない
prosper.clsv1.5 (2001/07/17)Frédéric Goualard と Peter Møller Neergaard。powerdot に引き継がれた
pdfscreen.styv1.5 (2000/07/07)画面で読む PDF の設計用。C. V. Radhakrishnan
pdfslide.styv0.50 (1999/10/10)本一覧で最も古い日付。PDF スライドの初期の試み

日本語まわりでは、もう一つ手近な選択肢があります。すでに jsarticle で書いているなら、\documentclass[slide,papersize,landscape]{jsarticle} と書くだけで大きな文字のスライド体裁になります。jsarticle.cls の 80 行目は \DeclareOption{slide}{\@slidetrue\def\jsc@magscale{3.583}} と宣言していて、この倍率 3.583 は同じクラスの 36pt オプションのものと同一です——つまり 実質 36pt 相当。さらに大きくしたければ 43pt(倍率 4.300)まで用意されています。手元で upLaTeX と dvipdfmx に通すと A4 横(841.89 × 595.28 pt)の PDF が出ました。テーマもオーバーレイもありませんが、既存の日本語文書の書式をそのまま流用できるのが利点で、社内の勉強会で明日使うスライド を 10 分で作るには十分です。

Markdown で書いたスライド — Marp・reveal.js・pandoc と markdown パッケージ

道は 2 本に分かれます。Markdown を外で処理してから LaTeX に渡す か、LaTeX の中で Markdown を読ませる か。前者の代表が Marp や reveal.js 系のツールで、これらは npm でインストールする Node/ブラウザのプログラムです——TeX Live には入っておらず、この環境でも marppandoc も見つかりません。橋渡しに使われるのは pandoc で、その公式マニュアルは出力形式の一覧に beamer を挙げ、スライド系として beamer・revealjs・s5・slidy・dzslides・pptx を並べています。pandoc から PDF を作る場合は LaTeX エンジンが別途必要だとも明記されています。つまり pandoc 経路を選んでも TeX Live は結局要ります

もう一方の道は、TeX Live のなかで完結します。markdown パッケージ(v3.4.2、2024-03-09)は Markdown のパーサを TeX の中に持っていて、markdown 環境の中身をそのまま組めます。実際に \usepackage[hybrid]{markdown} を読み込み、[fragile] を付けた beamer のフレームの中に箇条書きと *強調*inline code を書いて試したところ、すべて正しく組版されました。ただし条件が一つ——pdfLaTeX では -shell-escape が必須 です。付け忘れると ! Package markdown Error: Shell escape is restricted で止まり、続けて Fatal error occurred, no output PDF file produced! になります。実務としては、チームの原稿が Markdown で、数式と図版は LaTeX の品質がほしい、という状況にちょうど嵌まります。逆に、スライドの体裁そのものを Markdown で決めたいなら、それは Marp の仕事であって LaTeX の仕事ではありません。

latex
\documentclass[aspectratio=169]{beamer}
\usepackage[hybrid]{markdown}
\begin{document}
\begin{frame}[fragile]{From Markdown}
\begin{markdown}
- first bullet
- second bullet with *emphasis*

Ordinary paragraph with `inline code`.
\end{markdown}
\end{frame}
\end{document}

% compile with: pdflatex -shell-escape file.tex
% without it:  ! Package markdown Error: Shell escape is restricted

LaTeX でスライドを作るべきでないとき

正直に言うと、LaTeX が向かない場面は三つあります。第一に 見た目を何十回も試す発表。LaTeX のスライドは編集して待つ道具で、40 フレーム・121 ページのデッキを実測すると 1 回 3.5 秒、しかも .nav.toc のために 2 回通す必要があります。位置を 1 mm ずつ詰める仕事にこの往復は向きません。第二に 共同編集。共著者が TeX を書かないなら、.tex を送ることは「あなたの環境を用意してから返事をしてください」と言うのと同じです。第三に 主催者が .pptx を求める場合。PDF から PowerPoint への変換に賭けるより、最初から別の道具を選ぶほうが安全です。逆に LaTeX が圧勝するのは、数式・コード・図が論文と同じパイプラインから来るとき、同じ原稿から発表用と配布用を機械的に作り分けたいとき、そして どの機械で開いても 1 mm も動かない PDF がほしいときです。beamer のマニュアル自身が、会場のマシンに何が入っているか心配しなくてよいことを利点として挙げています。

  • 新しい発表を作るbeamer。この一覧で唯一、今も活発に開発されており、テーマ・オーバーレイ・handout・ノートがすべて揃っています。
  • 古い .tex を受け取った → まず \documentclass を見る。slides なら SLiTeX 由来、prosper なら powerdot への移行を検討。
  • PSTricks の図が本体powerdot。ただしビルドは latexdvipsps2pdfxelatexpdflatex は通りません。
  • 日本語で明日使うスライドjsarticleslide オプション(実質 36pt、43pt まで拡大可)。
  • 原稿が Markdown → 外で pandoc を通すか、TeX Live 内の markdown パッケージ(pdfLaTeX では -shell-escape 必須)。
  • 主催者が .pptx を要求 → LaTeX を無理に通さない。変換に賭けるより最初から別の道具を選ぶこと。