Markdown + VSCode で数式込みの PDF をなるべく楽に作る

TL;DR

  • Markdown は Word とか LaTeX とかよりも楽にカジュアルな文書を作れるよ
  • VSCode を使うと Markdown から HTML を生成できるよ
  • HTML をブラウザで開いて印刷メニューから PDF を作れるよ
  • ただし数式を扱うにはちょっと工夫(拡張機能の追加)が必要だよ

はじめに

数式の混じった PDF を作ろうというとき,Microsoft Word や LaTeX などいくつかのツールが使える.

Wordは文字の大きさや色,フォントなんかを直感的に変えられるし,保存メニューから PDF にすることも比較的簡単にできるので,PDF や印刷する資料を作るときには一般的によく使われるソフトだ.
ただし,Word の数式入力はかなり重くて使いづらいから,数式を含んだドキュメントを作るときにはあんまり使いたくない(少なくとも僕は).

LaTeX は数式を含む論文なんかをいい感じに作成できるツールである. Word のように直接ドキュメントを編集するのではなく,文章とそれに付随する章や節などの構造を独自の言語(TeX 言語)で記述し,記述したファイル(TeXファイル)を専用のソフトに食わせることによって PDF が生成される.
TeX 言語は章や節といった文書構造だけでなく,数式や表なども扱うことができるため,数式混じりの PDF を作成するにはかなり使い勝手が良い.
しかし, TeX 言語は書くのがかなり面倒だったり,TeX ファイルを PDF に変換してくれるソフトが高機能すぎるが故に期待通りに動かない場合などが多く,カジュアルに文章を書いて PDF で誰かに渡す程度の用途だとオーバースペックで便利さより面倒さが勝ってしまう.

そこで今回は MarkdownVSCode を用いて,LaTeX より楽に数式混じりの PDF を作る方法を紹介したいと思う.

MarkdownVSCode

まず,MarkdownVSCode について説明しようと思う.

Markdown

Markdown とは,TeX 言語のように文章とその構造を記述するための言語である.1
TeX 言語に比べて機能は大きく落ちるが,その分簡素な記法で書くことができるので,書くのがめちゃくちゃ楽だったり TeX や HTML など様々なフォーマットに変換できるという特徴がある. 拡張子は .md が主に用いられている.

Markdown の記法は以下の記事などに解説されている.

qiita.com

TeX と同様に Markdown を読み込んできれいに整形された文書を出力するサービスがオンライン・オフライン問わずいくつか存在するため,合わせて利用すると良い.2
ただし,使用するサービスによって使える機能や使えない機能,微妙に動作が異なる機能があったりするため,Markdown を使うときにはそこら辺を諦めるおおらかさを持つことがコツである.

VSCode

VSCodeVisual Studio Code)とは,Microsoft が開発する高機能なフリーエディタである. エディタとは,めちゃくちゃ雑に言うとメモ帳がめちゃくちゃすごくなったやつのこと.
以下から入手できる.

azure.microsoft.com

VSCode は数多くの機能を有し,その一つに Markdown への対応がある. VSCode を使うと,Markdown を書きながらリアルタイムに整形されたドキュメントを見ることができたりするので, LaTeX のように「コンパイルしてみたらエラーめっちゃ吐くじゃねえか!」といったことが起きづらい.
また,VSCode は有志により拡張機能が開発されており,拡張機能を導入することによって Markdown に数式を記述する機能や HTML ファイルを出力する機能を追加することができる.

以降では,拡張機能を導入することで数式混じりの Markdown を HTML ファイルに出力し, PDF を得る方法を解説する.

Markdown + VSCode で数式混じりの PDF を作る

VSCode拡張機能を導入する

VSCode で数式混じりの PDF を作るためには以下の機能が必要となる.

  • 数式を記述する
  • HTML ファイルを出力する

これらは全て Markdown All in One という拡張機能で入れることができる.

marketplace.visualstudio.com

リンク先の「Install」をクリックすることで VSCode拡張機能を追加することができる.

数式混じりの Markdown を記述する

この拡張機能が追加された状態で Markdown に数式を記述するには以下のように書けば良い.

文章中に数式を記述するには $ y = x^2 と $ 一つで囲めば良い.

独立した行に数式を記述するには $ 二つで囲めば良い.

$$
y = x^2 + 2x + 1
  = (x+1)^2
$$

数式混じりの Markdown から PDF を作る

PDF を作るには以下の2ステップを踏む.

  1. Markdown から HTML ファイルを生成する
  2. 生成された HTML ファイルを Google Chrome などのブラウザで開き,印刷メニューから PDF を生成する

1. Markdown から HTML ファイルを生成する

まず VSCodeMarkdown ファイルを開く.
この状態で Ctrl + Shift + PMac だと Cmd + Shift + P)を押すと,(恐らく)画面上部にコマンドパレットが表示される.
コマンドパレットに Markdown All in One などと入力し, Markdown All in One: Print current document to HTML を選択する.3
そうすると, Markdown ファイルと同じフォルダに HTML ファイルが生成される.

2. PDF を生成する

まず上の手順で生成した HTML ファイルをダブルクリックする.
恐らく普段使っているブラウザ(ウェブサイトなどを見るソフト)で開かれると思うので, Ctrl+PMac だと Cmd + P)などで印刷メニューを開く.
メニューのどこかに印刷するプリンタを選ぶところがあると思うので,「PDF を保存する」といったような選択肢を選ぶ.(ここらへんは使用するブラウザなどにかなり左右されるので,あいまいな説明になってしまう)
「保存する」「印刷する」あたりのメニューを選ぶ,もしくはエンターキーを押すなどして PDF ファイルを保存する.

以上の手順で数式混じりの PDF ファイルを保存することができた.

おわりに

TeX を書くよりマシってだけで,そんなに簡単じゃないかもしれない.


  1. ちなみに,TeX 言語や Markdown のような文書構造を記述するための言語をマークアップ言語という.TeX 言語や Markdown の他には HTML などが有名.

  2. 例えばはてなブログMarkdown によって記事を執筆できる.

  3. Markdown All in One: Print current document to HTML を検索できればいいので, HTML などを入力してもよい.