Help us understand the problem. What is going on with this article?

VScode+pandoc+Lualatexで日本語pdfをMarkdownから出力する

事の経緯

ここ数年間Markdownで様々なメモや実験プロトコルをVScode+pandocで作製していたが、日本語markdownは専らWordファイルに変換していました。最近TeXliveを(なんとなく)導入したので「latex+pandocでmarkdown→pdfできたら便利じゃない?」と思いpdf化に勤しんでいたら何故か日本語の含まれている文書ではpdf化できないらしいので、その解決策を備忘録代わりにQiitaにあげておきます。他にハマっている人(いるか知らないけど)の助けになるかも?

原因

@sky_y さんの書かれた『メモ:Pandoc+LaTeXで気軽に日本語PDFを出力する』に非常にわかりやすく原因(+解決策)が書かれています。是非ご参照ください。

簡単に言いますと
1. Pandocが使うPDF変換エンジンは、デフォルトでpdflatex
2. pdflatexは日本語に対応していない
3. 対応しているエンジン(lualatex)は和文フォントを無視して出力する(なんでやねん

...と日本人にはありがたくない仕様になっています。そこで、
1. pdf化に用いるエンジンをlualatexに変える
2. pdfにフォントを埋め込む
という二段階の設定をvscode-pandocにしてあげれば万事解決!というわけです

方法

環境設定

  • windows 10
  • VScode v1.38.1
  • pandoc v2.7.3
  • vscode-pandoc
  • Tex live 2019

多分、Tex liveは最新版である必要ないはずですが、日本語対応パッケージがマージされたTex live 2010以上を推奨します(2016以上のほうが良い?)。
それ未満のものを使っている人はアプデしましょう。tlmgrコマンドが使えます。詳細はこちら

細かいインストール方法は書くのがめんどくさい丁寧な記事が多く存在するので割愛します。

これらをインストールしたら、VScodeを起動しctrl+,で設定画面に飛びます。
その後、Setting.json(右上のアイコンから入れる)で

"pandoc.pdfOptString": "--pdf-engine=lualatex -V documentclass=ltjsarticle -V luatexjapresetoption=ms",

を追加します。

--pdf-engine=lualatexでpdfエンジンを変更し、-V documentclass=ltjsarticle -V luatexjapresetoption=msで和文pdf作製&フォント指定を行います。-V luatexjapresetoption=がフォント指定のコマンドになっています。
「MSフォントなんか使いたくねぇ!」という人は游明朝やヒラギノ、IPAexフォントを指定できます。

以下、フォントについて『LuaTeX-ja の使い方』からの引用

noembed: 非埋込
kozuka-pro: 小塚フォント (Pro)
kozuka-pr6: 小塚フォント (ProVI)
kozuka-pr6n: 小塚フォント (Pr6N)
hiragino-pro: ヒラギノフォント (Pro, Std)
hiragino-pron: ヒラギノフォント (ProN, StdN)
morisawa-pro: モリサワフォント (Pro)
morisawa-pr6n: モリサワフォント (Pr6N)
ipa: IPAフォント
ipaex: IPAexフォント
ms: MS 明朝,MS ゴシック
moga-mobo: MogaMincho, MogaGothic, MoboGothic(20150420.0 以降)
yu-win: Windows 8.1 に付属する游書体(20140114.0 以降)
yu-osx: OS X 10.9 に付属する游書体(20140114.0 以降)
sourcehan: 源ノ明朝,源ノ角ゴシック

以上です。

参考文献

メモ:Pandoc+LaTeXで気軽に日本語PDFを出力する
Tex Wiki
LuaTex-ja

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away