このリポジトリは Marp を最強に活用したスライドを、超簡単に作成できるテンプレートリポジトリです。
このリポジトリを利用したデモスライドは GitHubPages を参照してください。
Markdown 拡張構文や CSS ユーティリティクラスを使って、あなただけのオリジナルスライド環境を構築しましょう!
主要なディレクトリとファイルの内容は以下の通りです。
必要に応じて自分好みにカスタマイズしてください!
.
├── .marprc.yml # Marp CLI の設定ファイル
├── engine.mjs # Marp CLI の Engine 拡張
├── scripts/
│ ├── check # スライドの OGP の URL が正しいかチェックするスクリプト
│ ├── init # リポジトリのセットアップを行うスクリプト
| └── new # 新しいスライドをテンプレートから作成するスクリプト
├── src/ # スライド用のディレクトリで、デプロイされる
│ └── demo/ # デモ用のスライドディレクトリ
├── template/ # テンプレートスライド用ディレクトリ
└── themes
├── global.css # スライド全体に影響させるカスタムテーマ
├── index.css # カスタムテーマのエントリーポイント
└── utility.css # スライドで利用する各種ユーティリティクラス
| ツール | バージョン |
|---|---|
| Node.js | 20.18.0 |
| pnpm | 9.15.1 |
[!tip] Node.js は nodenv 等のバージョンマネージャを使ったインストールを推奨します。
$ git clone でローカルにリポジトリをダウンロードします$ scripts/init
[!warning] スクリプト内で
sedコマンドを使用しています。
Mac (BSD) では問題ありませんが、Linux (GNU) ではオプションの指定が異なるためエラーが発生する可能性があります。
Linux (GNU) ユーザーはスクリプト内のsedコマンドを適宜修正してください。
Marp CLI や markdown-it の各種プラグインを利用可能にするため、依存関係をインストールします。
$ pnpm install
# 新しいスライドを作成する
$ pnpm new <slidename>
# グルーピングしたい場合は src 下ディレクトリを分割して作成することも可能
$ pnpm new path/to/<slidename>
コピー元となるテンプレートスライドは template ディレクトリ内に存在します。
ぜひ自分好みにカスタマイズしてください!
スライドは Marp CLI の機能を利用して、ブラウザ上でリアルタイムに確認できます。
# src ディレクトリ下のスライドを編集する場合
$ pnpm dev
# テンプレートスライドを編集する場合
$ pnpm dev:tmp
[!warning] このリポジトリは Marp CLI の Engine 機能を使って拡張しています。
そのため VSCode 拡張機能のmarp-vscodeが一部利用できません。
詳しくは @marp-team/marp-vscode/issues/85#issuecomment-543798586 を参照してください。
以上で基本的な使い方は終了です!🎉
Marp は Marpit の機能を使ってスライドのデザインをカスタマイズすることができます。
また、 Marp CLI の Engine 機能を使って、Markdown の構文を拡張することも可能です。
このリポジトリでは主に下記2点でカスタムしています。
それぞれ詳しい使い方を以下に記述します。
markdown-it-prismの導入によって可能となった) Syntax highlighting のスタイルを変更する場合に編集してください[!tip] ユーティリティクラスの設計は Tailwind CSS が参考になります
Markdown 拡張の設定は engine.mjs に記述しています。
おすすめの markdown-it プラグインを導入済みです。
markdown-it-containermarkdown-it-attrsmarkdown-it-markmarkdown-it-insmarkdown-it-prismmarkdown-it-textual-umlそれぞれのプラグインについては公式ドキュメントを参照してください。
最後にこのリポジトリの真髄である Markdown 拡張構文と、カスタムテーマの合体奥義を紹介します💪
実際の表示は デモスライド で確認できます。
{.class} で CSS クラスの付与markdown-it-attrs の機能を利用して、特定の要素に CSS クラスを付与することができます。
This is a paragraph.{.gray}
この入力は以下の HTML に変換されます。
<p class="gray">This is a paragraph.</p>
.gray クラスは themes/utility.css に定義している文字色をグレーにするクラスです。
これにより、スライド内で特定の要素に対して簡単にスタイルを適用することができます。
以下のように複数のクラスを同時に指定することも可能です。
This is a small and gray paragraph.{.text-sm .gray}
== と {.class} で特定の文字列のみ装飾するmarkdown-it-mark と markdown-it-attrs の合わせ技で、特定の文字列のみを装飾することができます。
This is a ==red=={.red} text.
この入力は以下の HTML に変換されます。
<p>This is a <mark class="red">red</mark> text.</p>
markdown-it-mark によって == で囲った特定の文字列をインライン要素 <mark> にし、そこにクラスを付与することで、特定の文字列のみを簡単に装飾することができます。
markdown-it-container でブロックごとにスタイルを変更する::: で囲むことで、ブロックごとにスタイルを変更することができます。
このリポジトリでは :::c と :::_ をあらかじめ用意しています。
:::c で列表示:::c
Column 1
Column 2
Column 3
:::
この入力は以下の HTML に変換されます。
<div class="c">
<p>Column 1</p>
<p>Column 2</p>
<p>Column 3</p>
</div>
.c クラスは themes/utility.css に定義している flex-container の設定です。
これにより、スライド内で列挙された要素を簡単に列表示にすることができます。
:::_ でグルーピング:::_
Group 1
Group 2
Group 3
:::
この入力は以下の HTML に変換されます。
<div class="_">
<p>Group 1</p>
<p>Group 2</p>
<p>Group 3</p>
</div>
._ クラスは未定義のダミークラスです。
具体的なユースケースは、複数の要素に一括でスタイルを適応する場合や、スタイルを変更したくはないがグルーピングのみ行いたい時に活躍します。
:::_ {.blue}
This is a blue text.
This is a blue text.
This is a blue text.
:::
::::c
:::_
## Left column
This is a left column text.
:::
:::_
## Right column
This is a right column text.
:::
::::
なお、上記のようにネストする場合は : の数を増やして区別します。
{name=filename} でコードブロックにファイル名を表示するこのリポジトリでは、簡単にコードブロックにファイル名を表示できる機能を用意しています。
{name=filename} をコードブロックの後ろに追加することで、ファイル名を表示することができます。
```js {name=index.js}
const message = "Thank you for using Awesome Marp Template!";
console.log(message);
```
表示は以下の通りになります。
このユーティリティの実装詳細は themes/utility.css を参照してください。
[!warning] Marp の利用するテーマによって実装方法が異なります。 このリポジトリの初期の
gaiaテーマから変更する場合は修正が必要です。 特に、defaultでの実装はかなり難しいです。 この機能を利用したい場合は、実装方法を自分で発明するか、gaiaかuncoverテーマの選択を推奨します。
このリポジトリでは、簡単にアラートデザインを適用できる機能を用意しています。
.note .important .tip .warning .caution のクラスを使用することで、アラートデザインを適用できます。
以上でこのリポジトリの説明は終了です!
ぜひこのテンプレートを参考にして、 Marp を最大限活用したスライド作成を楽しんでください!✨