Base.

技術に関する備忘録。

Visual studio codeでmarkdown+TeXで書いた数式を含む文書をPDFに変換する方法

概要

Visual Studio Code(以下vscode)でTeXで書いた数式を含む文書を作成し、それをPDFに変換しようとすると数式がTeXにより変換されず、コードのまま出力されてしまう。そこで正しく数式が表示されるような方法を調査した。

前提条件

vscodeで数式を表示させるために、以下の拡張機能はインストールされているものとする。

Markdown Preview Enhanced - Visual Studio Marketplace

vscodeのプレビューで数式を表示できるようにする拡張機能である。

Markdown PDF - Visual Studio Marketplace

MarkdownをPDFに変換する拡張機能である。

結論

方法は3つある。最終的に以下に示した3.を採用することにした。

  1. 一度HTMLに変換し、それをブラウザで開いてブラウザの印刷機能でPDFに変換する。
  2. vscode拡張機能であるMarkdown PDFのテンプレートファイルを書き換えてTeXを有効にする。
  3. vscodの拡張機能であるMarkdown Preview Enhancedの機能を用いて、Chromeを用いてPDFに変換する。

1.の方法が一番分かりやすい。具体的な方法は以下の記事が詳しい。

https://blog.takunology.jp/entry/2020/06/26/112933

但しHTMLに変換→ブラウザで開く→ブラウザでPDFに変換(印刷)というステップを踏む必要があり、少々面倒である。 2.の方法は、はじめ採用しようと思っていたが正しく設定しないとPDFのページが2倍に増えてしまうという症状が生じるという記載があったため避けることにした。なお、以下の参考ページの通りに行えばそのような問題は生じないようである。

VScodeでMarkdownからPDF出力で数式を綺麗に表示する方法 | アホなりに考えてみる

上記のような理由から、結局3.の方法を採用することにした。3.の方法は1.の作業を自動で行ってくれるようなものであり、拡張機能がhtml生成→PDF変換を行ってくれているようである。1クリックで完了するため現時点ではこの方法が最良ではないかと考えている。

症状

解決策を説明する前に画像を交えて症状を説明しておく。
まずvscodeのプレビュー画面では正常にTeXが認識され、数式が表示されていることが分かる。ここでvscodeのコード画面で右クリックしコンテキストメニューを表示させ、そこから"Markdown PDF: Export(pdf)"をクリックしてPDFを生成してみる。

f:id:mtmdro:20220121231815p:plain
Markdown PDFの機能でPDF変換 - 解決前

生成されたPDFを開いたものが以下である。数式が変換されず、生のコードが表示されてしまっていることが分かる。

f:id:mtmdro:20220121232437p:plain
生成されたPDFファイル - 解決前

解決策

方法はいたって簡単で、プレビュー画面で右クリックし、コンテキストメニューの中にある"Chrome(Puppeteer)"→"PDF"の順に選んでクリックするだけである。

f:id:mtmdro:20220121235638p:plain
PDF変換方法 - 解決策

PDFはmarkdownファイルと同じフォルダに生成されるので、それを開くと以下のように正しく数式が表示されていた。

f:id:mtmdro:20220121235853p:plain
生成されたPDFファイル - 解決後

Markdown PDFの機能と若干異なるのは、この方法で生成されたPDFファイルにはファイル名や日付といった情報が表示されない点である。あくまでvscodeのプレビューで表示されたままをPDF変換してくれるようである。

以上