5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WSLへのPandocのインストール

Last updated at Posted at 2018-11-08

ビデオ解説(日本語)
https://youtu.be/QN0DcuRAIpA

ビデオ解説(英語)
https://youtu.be/M9MrQ85xUXY


動作環境

_WSL(Windows Subsystem for Linux)_にインストールされたUbuntuにPandocをインストールする方法をご紹介いたします。

Pandocは、あるマークアップ形式で書かれた文書を他の形式へ変換するためのツールです。

カリフォルニア大学バークレー校のジョン・マクファーレイン教授(John MacFarlane)がHaskellにより開発したツールです。

対応している形式は大変多く、Markdown、HTML、LaTeX、EPUB、PDFなどにも対応しています。

ここでは、Markdown形式のファイルをPDF形式に変換することを想定して、インストールを行っていくことにします。

Pandocの優れていることは、Markdown形式のファイルのなかに、LaTeXの構文を直接書き込みができる点です。

もちろんこれを実現するためには、LaTeXもインストールしておく必要がありますので、この方法もご紹介します。

また、参考文献や相互参照の機能も追加のツール、Pandoc-citeprocやPandoc-crossrefのインストールも行います。

なお、ここでは、日本語のPDFファイルを作成すること想定していますので、他の言語のPDFファイルを作成する場合は、言語パッケージが必要ない場合や別の言語パッケージを組み入れる必要がありますので、その点予めご了承ください。

またPandocの概要や文法については、Referenceをご覧ください。


Pandocのインストール

まず予め、sudo apt updatesudo apt upgradeを実行し、システムを更新しておいてください。

そして、sudo apt install pandocと入力して、Pandocをインストールします。


Pandoc-Citeprocのインストール

次にPandoc-citeprocをインストールします。

sudo apt install pandoc-citeprocと入力します。


TeXのインストール

次にTeXをインストールします。

sudo apt install texlive-luatexと入力します。


TeXの言語パッケージなどのインストール

次に各言語に関連したパッケージをインストールします。ここでは、日本語を前提としてますが、他の言語の場合は、必要に応じて、該当の言語パッケージをインストールする、ないしこのプロセスをスキップしてください。

sudo apt install texlive-xetex texlive-lang-japaneseと入力します。


Haskellのインストール

次に、Haskellをインストールします。これは、Pandoc自体がHaskellによって開発されたことによります。

sudo apt install haskell-platformと入力します。


Pandoc-Crossrefのインストール

次に、Pandoc-crossrefをインストールするツールCabalをインストールします。

sudo apt install cabal-installと入力します。


次に、cabal関連の更新情報を取得します。

sudo cabal updateと入力します。


次に、cabalを使って、pandoc-crossrefをインストールします。

sudo cabal install --global pandoc-crossrefと入力します。

ここで_--global_を追加していることに注意してください。

pandoc-crossrefは、フィルタとして使用しますので、この指定が必要になります。

なお、このプロセスにはかなりの時間を要します。


Visual Studio Codeの起動

次に、Pandoc用のフォルダを作成することにします。

最初にコマンドラインから cd /mnt/cと打ち込んでWindows Cドライブに移動します。

次に、 lsと打ち込んでCドライブの内容を表示してみます。

OKです。


次に、特定のディレクトリにPandoc用のディレクトリを作成します。

ここでは __myprgディレクトリにPandocという名前のディレクトリを作成しました。


このPandocディレクトリに移動し、code .と入力してVisual Studio Codeを起動します。


文献リスト・スタイルのダウンロード

今回は、参考文献リストまで出力しますので、そのためのスタイルを予めダウンロードしておく必要があります。

まず、ブラウザでGitHubのスタイルサイトを開きます。

そのURLは、https://github.com/citation-style-language/styles/です。

この中のchicago-author-date.cslをクリックして、そのデータを表示し、全行をコピーします。


VS Codeに戻り、chicago-author-date.cslファイルを新規作成し、その中にペーストします。

このファイルを保存します。


Bibファイルの作成

次に参考文献用の_bib_ファイルを作成します。

ここでは、myref01.bibファイルを新規作成しました。

ここに文献情報を書き込んでいきます。

その記法については、_Reference_を参照してください。


サンプル用Markdownファイルの作成

次にテスト用のサンプルデータをMarkdown形式で作成します。

ここでは、sample01.mdファイルとして作成しました。


Node.jsファイルの作成

次に、Pandocによってコンパイルをすることになりますが、たいへん多くのパラメータを指定する必要がありますので、Node.jsのスクリプトを作成することにしました。

makepdf01.jsというファイルを新規作成し、ここに処理プロセスを記述します。

なお、このソースは以下のとおりです。また、GitHub (https://github.com/Ohtsu/pandoc-o2-makepdf)にもアップロードしましたので、詳しくはそれをご覧ください。


const mdfile = process.argv[2] + '.md';
const pdffile = process.argv[2] + '.pdf';

const spawn = require('child_process').spawn;

const ls = spawn('pandoc', [mdfile,
                    '-o', pdffile, 
                    '-V', 'documentclass=ltjarticle', 
                    '--pdf-engine=lualatex', 
                    '--toc', 
                    '--bibliography=myref01.bib', 
                    '--csl', 'chicago-author-date.csl', 
                    '--filter', 'pandoc-crossref']);

ls.stdout.on('data', (data) => {
  console.log(`stdout: \n${data}`);
});

ls.stderr.on('data', (data) => {
  console.log(`stderr: \n${data}`);
});

ls.on('close', (code) => {
  console.log(`child process exited with code ${code}`);
});


Node.jsファイルの起動

次にコマンド・ラインから、makepdf01.jsを実行します。

node makepdf01.js sample01と入力します。


コンパイルが終了すると、新たにsample01.pdfファイルが生成されます。

VS Code上で、ファイル・エクスプロラーを起動し、このPDFファイルを表示します。


生成されたPDFファイルの確認

PDFファイルが作成され、目次も作成されました。

各リンクも機能しています。

参考文献リストも生成されています。


コマンドラインからのPandocの直接起動

ここまでは、Node.jsを利用したPandocによるコンパイルでしたが、Node.jsをインストールしていない場合でも、コマンド・ライン上にたくさんのパラメータを指定することにより、直接Pandocによりコンパイルすることもできます。

その場合には、

pandoc sample02.md -o sample02.pdf -V documentclass=ltjarticle --pdf-engine=lualatex --toc --bibliography=myref01.bib --csl chicago-author-date.csl --filter pandoc-crossref.

となります。


実際に入力してみます。

pdf-engine名が間違っていました。これを修正して再起動します。

今度は、sample02の拡張子が不足していました。これを修正して再起動します。

OKです。

sample02.pdfが生成されました。


生成されたPDFファイルの確認

このファイルを表示してみます。

OKです。


 

Reference

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?