VSCodeとマークダウンでEPUB、pdf出力を活用する(1)-概要
本稿では、VSCode、markdown-preview-enhanced、Pandocを組み合わせ、マークダウンの原稿を書いてEPUB、pdfを出力し、Kindle本を出版する方法まで用途を広げて紹介します。
Kindle本について
技術的な内容、フィクション、ノンフィクションを、文書・本にまとめたいことがあります。
本を出版できるサービスには、AmazonのKindleや楽天Koboなどがあります。
Kindleのシェアが大きく、日本国内では次の2種類の形態で出版できます。
- 電子書籍
- ペーパーバック(紙の書籍)
ペーパーバックに対応しているのはKindleだけで、他のサービスはEPUBによる電子書籍のみの対応のようです。
ここではKindleについて説明していきます。
電子書籍は、主に以下の形式の原稿ファイルをアップロードして出版できます。
- EPUB、docx、KPF
KPFはKindle Previewerからエクスポートできます。
Kindle Previewerが対応している入力ファイル形式は主に以下の通りです。
これが電子書籍の原稿ファイルの形式になります。
- EPUB、docx、html
ペーパーバックは、次の原稿ファイルをアップロードして出版できます。
- pdf、docx、html、rtf
単に文書ファイル化できれば良い場合は、pdfが対象になるでしょう。
提唱したい作成方法
ここでおススメしたい方法は、VSCode拡張機能の「markdown-preview-enhanced(MPE)」の利用です。
この方法では原稿を、マークダウンで書きます。
pdfの出力は、MPEからPuppeteer経由でGoogle Chromeにより行います。
EPUBの出力は、Pandocもインストールし、MPEからPandocへの連携機能を利用します。
以下のようなメリットが挙げられます。
- マークダウンで執筆に注力できる
- CSSの知識・技術でレイアウト制御し、電子書籍とペーパーバックの両方の出版まで対応できる
- 推敲などに、VSCodeのその他の拡張機能を活用できる(textlint、Cline?)
逆に、以下のようなデメリットもあります。
- 本文以外はノンブル(ページ番号)程度しか表示できない(柱、つめなどを使わない)
- 標準のマークダウンでは市販の書籍の体裁に対して表現力が不足している
- 電子書籍とペーパーバックでCSSを共通化するには、構造をよく理解して記述する必要がある
ただし、問題に対応するJavaScriptを利用したりCSSの流用を行なうと、デメリットを緩和できます。
サンプル
A4やA5で文書を出力する想定で、いくつかのサンプルを用意しました。
各フォルダのassets内にあるpdfやEPUBファイルを開いて見ていただくと、やりたいことができるのかがわかりやすいでしょう。
| フォルダ名 | 説明 |
|---|---|
| type1_report | A4レポート風・見出し深さ2まで |
| type2_report_long | A4レポート風・見出し深さ3まで |
| type3_non_fiction | A5ノンフィクション風 |
| type4_non_fiction_wo_numbering | A5ノンフィクション風・ナンバリングなし |
| type5_fiction | A5フィクション風 |
| type6_tategaki_fiction | 縦書き・A5フィクション風(試験段階) |
| type7_paper_like | A4論文風(出力はPDFのみ) |
| scripts | 関連スクリプト |
.mdファイルに、マークダウンの本文を執筆。
.crossnote/style.lessに、LESSの構文を使わず、CSSを書いてレイアウトを制御しています。