Zenn
🎈

Typstでスライド作成!オリジナルテンプレート

2025/02/13に公開

はじめに

Typstは新しい組版システムで, LaTeXの代替として注目を集めています. 着々と広まっていますので, typstで書いた論文そのままtypstでsildeを作成したい人はたくさんいると思います. なので今回は, Typstを使ってプレゼンテーションスライドを作成するためのテンプレートを作成しましたので, その使い方を紹介します.

リポジトリはこちら
GitHubからダウンロードできます.

このテンプレートはtouying-typ/touyingをベースに, 改良したものです.

特徴

  • クリーンでモダンなデザイン
  • カスタマイズが容易
  • 日本語対応
  • シンプルな構文
  • スピーカーノート対応
  • 定理環境やダイアグラム描画機能

セットアップ

1. VS Codeの設定

まず, VS Codeで快適に編集するために以下の拡張機能をインストールします:

  • Typst Preview: Typstファイルのプレビュー機能
  • Tynymist: Typstの補完や構文ハイライト機能, プレビュー機能

え?これだけ?

2. テンプレートの使用開始

基本的な使い方は以下の通りですmain.typで,

#import "src/tompython-theme.typ": *

// 言語設定(日本語の場合)
#set text(lang: "ja")

#show: tompython-theme.with(
  aspect-ratio: "16-9",
  config-info(
    title: [Typstによるスライドのテンプレート] , //title
    subtitle: [サブタイトル], //subtitle
    author: [発表者名], //発表者名
    date: datetime.today(), //編纂日
    institution: [所属], //所属
  ),
  bibliography-file: "ref.bib", //bibtexファイルのパス
)

基本的なスライドの作成

タイトルスライド

#title-slide()

これだけで, 設定した情報を使ってタイトルスライドが生成されます.

目次スライド

#outline-slide()

自動的に目次が生成されます.

通常のスライド

= セクション名

== スライドタイトル

#slide[
  スライドの内容をここに書きます
  
  - 箇条書き1
  - 箇条書き2
]

フォーカススライド

特に強調したい内容がある場合, フォーカススライドを使用できます:

#focus-slide[
  重要なメッセージをここに
]

このスライドは, 背景色が変更され, テキストが中央に大きく表示されます.

スピーカーノートの活用

プレゼンテーション時に発表者のみが見るノートを追加できます:

#speaker-note[
  + ここでデモを行う
  + 質問への予想される回答
  + 時間配分の目安
]

機能紹介

定理環境の設定

このテンプレートでは, 数式や定理を美しく表示するための定理環境を簡単に設定できます.

定理環境の定義

まず, main.typの先頭に以下のコードを追加します:

#show: thmrules

次に, 定理環境を以下のように定義します:

#let theorem = thmbox(
  "theorem",              // 識別子
  base_level: 1,         // 番号付けの基準レベル(headingのどの層にするか)
  "Theorem",             // 表示される見出し
  fill: rgb("#e8e8f8")  // 背景色
).with(numbering: "1.1")

定理環境の使用

定義した定理環境は以下のように使用できます:

#theorem("オイラーの公式")[
  $ e^(i pi) = -1 $
] <euler>

これにより, 番号付きの定理ボックスが生成されます.

図式描画機能

このテンプレートでは, 2つの強力な図式描画ライブラリをサポートしています.

CeTzを使用した基本的な図形描画

CeTzを使用すると, 幾何学的な図形を描画できます:

#cetz.canvas({
  import cetz.draw: *
  
  // 赤色で塗りつぶし, 青い枠線の円を描画
  circle((0, 0), fill: red, stroke: blue)

  // 緑色の直線を描画
  line((0, 0), (1, 1), stroke: green)
})

Fletcherを使用した可換図式

Fletcherを使用すると, 数学的な可換図式を描画できます:

#diagram(
  spacing: (1em, 3em),
  $ & A edge(->) & B \
    C edge("ur", "-->") & D edge(->, phi) $
)

プレゼンテーション

Pympressとは

Pympressは, PDFプレゼンテーションのためのシンプルながら強力なツールです. 特徴的なのは, 発表者ノートを含むPDFファイルを, プレゼンター用とオーディエンス用の2画面に分けて表示できることです.

セットアップ手順

1. テンプレートの設定

まず, src/configs.typに以下の設定を追加します:

// filepath: src/configs.typ
show-notes-on-second-screen: right,

これにより, PDFファイルにスピーカーノートが含まれるようになります.

2. Pympressのインストール

OSごとのインストール方法は以下の通りです:

Windows

winget install pympress

macOS

brew install pympress

Ubuntu/Debian

apt-get install pympress libgtk-3-0 libpoppler-glib8 libcairo2 python3-gi python3-gi-cairo gobject-introspection libgirepository-1.0-1 gir1.2-gtk-3.0 gir1.2-poppler-0.18

Pympressの使用方法

1. スピーカーノートの追加

プレゼンテーションファイルにスピーカーノートを追加します:

// filepath: main.typ
== スライドタイトル
#slide[
  スライドの内容
  
  #speaker-note[
    - このポイントを強調する
    - 想定質問への回答:
      + A について
      + B について
    - デモの準備を忘れずに
  ]
]

2. PDFの生成

  1. VS Codeでmain.typを開く
  2. 右上の「Generate PDF」ボタンをクリック
  3. 生成されたPDFファイルを確認

3. Pympressでの表示

  1. Pympressを起動
  2. 生成したPDFファイルを開く
  3. 以下の画面が表示されます:
    • プレゼンター画面(ノート付き)
    • オーディエンス画面(スライドのみ)

テーマのカスタマイズ

カラーテーマの変更

デフォルトのカラーテーマは以下のように設定されています:

// filepath: src/tompython-theme.typ
config-colors(
  primary: rgb("#003F88"),
  primary-light: rgb("#2159A5"),
  primary-lightest: rgb("#F2F4F8"),
  neutral-lightest: rgb("#FFFFFF")
)

カラーテーマを変更するには, main.typで以下のように設定します:

#show: tompython-theme.with(
  aspect-ratio: "16-9",
  config-colors(
    primary: rgb("#00796b"),
    primary-light: rgb("#48a999"),
    primary-lightest: rgb("#e0f2f1"),
    neutral-lightest: rgb("#ffffff")
  ),
)

フォントの設定

プレゼンテーション全体のフォントを設定する場合:

// filepath: main.typ
#set text(
  font: "Fira Sans",
  weight: "light",
  size: 20pt
)

// 数式フォントの設定
#show math.equation: set text(font: "Fira Math")

// 太字の設定
#set strong(delta: 100)

// 両端揃えの設定
#set par(justify: true)

スライドレイアウトのカスタマイズ

グリッドレイアウト

2列のレイアウトを作成する例:

#slide(composer: (1fr, 1fr))[
  左側のコンテンツ
][
  右側のコンテンツ
]

3列で中央を広めに設定する場合:

#slide(composer: (1fr, 2fr, 1fr))[
  左側
][
  中央(メイン)コンテンツ
][
  右側
]

フッターのカスタマイズ

スライド番号とロゴを含むフッターの例:

// filepath: main.typ
#show: tompython-theme.with(
  footer: self => [
    #grid(
      columns: (1fr, auto),
      align(left)[#self.institution],
      align(right)[#counter(self.page).display()]
    )
  ]
)

アニメーション効果

段階的な表示

#slide[
  最初から表示される内容

  #uncover(2)[
    2番目のステップで表示
  ]

  #uncover(3)[
    3番目のステップで表示
  ]
]

要素の強調表示

#slide[
  #only(1)[通常の表示]
  #only(2)[#highlight[強調表示]]
  #only(3)[#alert[警告表示]]
]

図表のスタイリング

表のカスタマイズ

#slide[
  #table(
    columns: (auto, auto, auto),
    inset: 10pt,
    align: center + horizon,
    stroke: 0.7pt,
    [*項目*], [*値*], [*備考*],
    [A], [10], [備考1],
    [B], [20], [備考2],
  )
]

画像の配置

#slide[
  #grid(
    columns: (1fr, 1fr),
    gutter: 1em,
    [
      #figure(
        image("path/to/image1.png", width: 100%),
        caption: [図1]
      )
    ],
    [
      #figure(
        image("path/to/image2.png", width: 100%),
        caption: [図2]
      )
    ]
  )
]

さいごに

LaTeX(Beamaer)よりもシンプルで, PowerPointよりも良い?, 新しいスライド作成の選択肢として, ぜひこのテンプレートを使ってみてください. 皆様からのフィードバックをお待ちしています!

関連リンク


Discussion

ログインするとコメントできます