【Marp】MarkdownをA4テキストにする方法
Markdown を「ちゃんと」A4 にしよう
本記事では、
前置き:Markdown の特徴おさらい
Markdown の良い所
しかし、
<table>
<thead>
<tr>
<th>用紙サイズ</th>
<th>寸法 (幅 × 高さ / mm)</th>
</tr>
</thead>
<tbody>
<tr>
<td>A0</td>
<td>841 × 1189</td>
</tr>
<tr>
<td>A1</td>
<td>594 × 841</td>
</tr>
<tr>
<td>A2</td>
<td>420 × 594</td>
</tr>
<tr>
<td>A3</td>
<td>297 × 420</td>
</tr>
<tr>
<td>A4</td>
<td >210 × 297</td>
</tr>
</tbody>
</table>
上の

その点
|用紙サイズ|寸法 (幅 × 高さ / mm)|
|:-|:-|
|A0|841 × 1189|
|A1|594 × 841|
|A2|420 × 594|
|A3|297 × 420|
|A4|210 × 297|
上のテキストは下のように表示されます。
| 用紙サイズ | 寸法 (幅 × 高さ / mm) |
|---|---|
| A0 | 841 × 1189 |
| A1 | 594 × 841 |
| A2 | 420 × 594 |
| A3 | 297 × 420 |
| A4 | 210 × 297 |

メモ帳で表示した場合
左上のはみ出た線のようなものはカーソル
Markdown の弱点
環境に左右されづらく記述も簡単という、良いとこどりのような
つまり、
明確なページの区切りがありませんから、思いがけぬことが原因でページが崩壊するおそれがあります。そうなっては、テキストとして粗悪だと評されてしまうこともあるでしょう。

表がたった一行のみページを跨いでいる
個人のレベルであれば、特段気にならないという方もあるでしょう。しかし仕事で人に見せられたテキストがこの出来栄えだったならどうでしょう、粗雑さを感じてしまうのではないでしょうか。
始めから
なんて使わなければ良かったのに Markdown
折角工夫したところに斯くも辛辣な言葉は、言いたくも、言われたくもないでしょう。
本題:Marp でA4 ページを作る
スライドを作るものですから、スライド一枚一枚が完全に別のページになります。つまり、
通常はA4 ではない
発表スライドが

A4 にするには
\huge{\frak{1}}. Marp for VSCode の場合
\tt{1}. Marp の設定を開く
Open Extension Settingsを選択すると、


\tt{2}. テーマを設定する
Markdown › Marp: Themesという項目がありますので、ここにテーマとなる

このREADME.mdによれば、https://raw.githubusercontent.com/pn11/marp-A4-theme/main/themes/A4.cssというリンクをMarkdown › Marp: Themesに設定すれば良いとのことです。「項目の追加」にOKすれば、下のようになります。

\tt{3}. テーマを使用する
先のREADME.mdを見ると、設定後は
---
marp: true
theme: A4
---
このA4というのは、テーマの名前です。A4.cssというファイル名と一致していますが、厳密には、ファイル名とテーマ名とは関係ありません。
これでテーマが適用され、スライドが

しかし、確かに
\tt{4}. カスタムテーマを作成する
今使用したのは既製の
自分で書く前に、先ほど使用した
第一に目に入るのは、このコメントです。
/* @theme A4 */
一見して唯のコメントですが、
メタデータの次に@import 'default';と記載して、
section {
width: 210mm;
height: 297mm;
}
sectionに縦横の大きさを記載することで、スライドの大きさを変更することができます。
後のh2やh3などは見出し、pは段落、liはリストについて定義しています。これらの記述を適宜変更・追加すれば、作成する内容に合ったデザインになります。
取り敢えず、表題が収まる程度に
/* @theme CustomA4 */
@import 'default';
section {
width: 210mm;
height: 297mm;
padding: 40px; /* 余白の調整 */
}
h1 {
font-size: 35px;
}
p {
font-size: 22px;
}
\tt{5}. カスタムテーマを適用する
先ほど設定のMarkdown › Marp: Themesに
⋯そのはずなのですが、ユーザー単位の設定に絶対パスで記載したところ、適用されませんでした。そこで、ワークスペース単位での設定に記載します。

「ユーザー」ではなく「ワークスペース」で設定するため、相対パス
ワークスペース単位での設定が有効になると、.vscodeという隠しフォルダーと共に、設定ファイルが作成されます。この設定内容は、他のフォルダーを開いている際には適用されません。
これで、カスタムテーマが適用されました。表題が一行に収まり、左右の余白が小さくなりました。右の余白が大きく見えますが、句点の影響で改行されているためで、本来の領域は確り左右均等になっています。

段落の方は一文毎に改行してある
\tt{6}. スライドに変換する
スライドへの変換に特別なことは必要ありません。通常のExport Slide Deckとあるのを選択します。

Export Slide Deckを選択する
標準の設定では、この操作で

Export Typeを変更する
註書きしたように、

発表者ツールも使える(右)
\huge{\frak{2}}. Marp CLI の場合(ややエンジニア向)
marpを使うことができます。sample.mdというファイルがあるならば、次のコマンドで
marp --html sample.md
コマンドで変換できるということは、「
なお、
\tt{0}. Node.js が使える環境を用意する
端から主題を離れるような手順が入ります。
エンジニアの諸賢であれば、既に
詳しい手順は主旨から乖離するため述べませんが、本記事ではクラウドサービスや仮想環境を推奨します。
クラウドサービスではこれらが無料でお薦めです。
-
Google Cloud Shell
アカウントがあれば、直ぐに自分専用のクラウド環境が使えるようになります。この環境には、始めからGoogle が備わっています。Node.js -
GitHub Codespaces
アカウントを作る必要があったり、動作が遅かったりするものの、上と同様無料で手軽に使えるクラウド環境です。GitHub
環境を汚したくないエンジニアの方には、
PS C:\⋯\A4> pixi init
Created C:\⋯\A4\pixi.toml
PS C:\⋯\A4> pixi add nodejs
Added nodejs >=26.2.0,<26.3
PS C:\⋯\A4> pixi shell
(A4) PS C:\⋯\A4> npm -v
11.13.0
\tt{1}. Marp CLI をインストールする
npm)というものがあります。これによって
npm install --save-dev @marp-team/marp-cli
(A4) PS C:\⋯\A4> npm install --save-dev @marp-team/marp-cli
npm warn deprecated mathjax-full@3.2.2: Version 4 replaces this package with the scoped package @mathjax/src
added 153 packages in 14s
19 packages are looking for funding
run `npm fund` for details
npm notice
npm notice New minor version of npm available! 11.13.0 -> 11.15.0
npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.15.0
npm notice To update run: npm install -g npm@11.15.0
npm notice
npx)で実行します。そのため、npx marpとしないとエラーになる点に注意しましょう。
npx marp --version
(A4) PS C:\⋯\A4> marp
marp: The term 'marp' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
(A4) PS C:\⋯\A4> npx marp --version
@marp-team/marp-cli v4.4.0 (w/ @marp-team/marp-core v4.3.0)
単にmarpと入力した場合には、長いエラーメッセージが表示されています。それに対し、npx marpと入力した場合には、正しくコマンドとして認識され、バージョン情報が表示されています。
\tt{2}. CSS ファイルを指定するには
sample.mdとcustom_theme.cssというファイル名だった場合、このようになります。
marp --html sample.md --theme custom_theme.css
\tt{3}. HTML に変換する
(A4) PS C:\⋯\A4> npx marp --html .\HowToMakeSlideA4.md --theme .\CustomA4.css
[ INFO ] Converting 1 markdown...
[ INFO ] HowToMakeSlideA4.md => HowToMakeSlideA4.html
以上が
\tt{Q}. inline CSS ではだめなのか

左右余白なし、フォント変更、フォントサイズ変更
---
marp: true
style: |
section {
padding: 0px;
font-size: 80px;
font-family: "Georgia";
}
---
# Marp × CSS
管理のしやすさという観点では、単一ファイルの中に

スライド自体は
私の環境では、いくら試しても上の画像のような状態になりました。
スライドには確かに

このような理由から、
A4 にしてみて気になったこと

上下中央寄せになっている
この特徴は発表スライドとしては都合好いものでしたが、テキストとしては不格好に感じられます。しかし厳密には、この事象は
Discussion