このプロジェクトは、Kindle本「Visual Studio CodeとマークダウンでKindle本を出版しよう!」の解説に利用したマークダウンのサンプルです。
まず、VSCode × MPE で実際に出力したファイルがどのようなものになるか、assetsサブフォルダの各ファイルを見るとよいでしょう。
ファイル一式は、画面右上の「<>CODE」をクリックすると、zipファイルでまとめてダウンロードできます。
以下に詳細を記載します。
| フォルダ名 | 説明 |
|---|---|
| type1_report | レポート風・見出し深さ2まで |
| type2_report_long | レポート風・見出し深さ3まで |
| type3_non_fiction | ノンフィクション風 |
| type4_non_fiction_wo_numbering | ノンフィクション風・ナンバリングなし |
| type5_fiction | フィクション風 |
| type6_tategaki_fiction | 縦書き・フィクション風(試験段階) |
| type7_paper_like | 論文風(出力はPDFのみ) |
| scripts | 関連スクリプト |
次のファイルがあります。
- .crossnote MPEの関連ファイル
- config.js MPEのファイル(初期状態のまま)
- head.html MPEのファイル(初期状態のまま)
- parser.js MPEのファイルで、和文用にマークダウンをカスタマイズするJavaScript
- style.les MPEのファイルで、CSSにより各種スタイルを指定している
- assets MPEから実際に出力したファイル(HTML/EPUB/PDF)
- mpee.lua MPEからEPUBを出力する動作をカスタマイズするLuaスクリプト
- test.md サンプルのマークダウン
- .jpg, .png サンプル画像
次のようにファイルを確認すると効率がよいでしょう。
- assetsフォルダのファイルを見て、目的の様式として十分かを確認する。
- VSCodeからフォルダをワークスペースとして開き、test.mdを変更してみる。
実例はparser.jsのタイプ別の指定を参照してください。
| パラメータ | 説明 | 値(例) |
|---|---|---|
| isBypass | カスタマイズ処理全体をバイパスする | true or false |
| enableNumbering | ナンバリングする | true or false |
| enableDetailNumbering | 図・表・式をナンバリングする | true or false |
| ignoreClass | ナンバリングしないクラス名 | 'noNumbering' |
| headFrom | ナンバリングする開始見出しレベル | 'h2' |
| headDepth | ナンバリングする見出しレベルの深さ | 3 |
| headFormat | ナンバリングの形式 {num} - 半角 {zenkaku} - 全角 {kanji} - 漢数字 |
['{num}','-{num}'] |
| classPrefixList | sectionに付けるクラス名 | ['chapter'] |
| combineTitle | ナンバリングを繋げて表示する | true or false |
| endOfOutline | ナンバリングの最後のスペース文字 | ' ' |
| isThroughOut | 図・表・式のナンバリングを文書全体の通し番号とする | true or false |
| figurePrefix | 図のナンバリングの接頭語 | 'Fig.' |
| figureSuffix | 図のナンバリングの接尾語・スペース | ' ' |
| tablePrefix | 表のナンバリングの接頭語 | 'Table' |
| tableSuffix | 表のナンバリングの接尾語・スペース | ' ' |
| mathPrefix | 式のナンバリングの接頭語 | '(' |
| mathSuffix | 式のナンバリングの接尾語 | ' ' |
| detailFormat | 図・表・式のナンバリングの形式 | '{num}' |
| aozoraRuby | 青空文庫書式の一部(ルビ)を有効にする | true or false |
| indentString | 段落頭に字下げで挿入する文字列 | ' ' |
| excludeIndentClasses | indentStringを適用しないクラス名 | ['sage2'] |
| パラメータ | 説明 | 値(例) |
|---|---|---|
| isBypass | カスタマイズ処理全体をバイパスする | true or false |
| ignoreClass | ナンバリングを無視する見出しのクラス名 | 'noNumbering' |
| headFrom | ナンバリングする開始見出しレベル | 'h2' |
| headDepth | ナンバリングする見出しレベルの深さ | 3 |
| classPrefixList | sectionに付けるクラス名 | ['chapter'] |
| headerType: | ページヘッダ・フッタの種類 'none' - なし 'center' - 左右中央 'top' - 上部 'outside' - 小口 |
'center' |
| headerTitle: | 柱の表示 'none' - なし 'book' - 書籍名 'chapter' - チャプター名 |
'none' |
| totalPages | 総ページ数を表示する | true or false |
| pageProgressionDirection | 'ltr' - 横書き(右へ) 'rtl' - 縦書き(左へ) |
'ltr' |
| tocClassName | @import方式のTOCを包んでいるクラス名 | 'pdf-toc' |
| tocLinkWrapperClassName | TOCの項をラップするクラス名 | 'toc-link-wrapper' |
| tocPagePrefix | 目次のページ番号を指定する前置詞 | 'p.' |
| removeSpace | 段落中の「。」に続く半角スペースを除去する | true or false |
| ファイル名 | 説明 |
|---|---|
| GetFontFamily.ps1 | フォントファミリ名を表示するPowerShellスクリプト |
| GetFontFamilySjis.ps1 | フォントファミリ名を表示するPowerShellスクリプト(SJIS用) |
| parser_debug.js | parser.jsのデバッグ版 |
| parser_tester.js | parser.jsのデバッグ用起動スクリプト |
| collectTocPage.js | HTMLとPDFを突合して目次の対象ページを調べるツール |
| pdfinfo.js | PDFファイル中の画像の解像度を調べるツール |
インストール済みフォントのフォントファミリ名を表示するPowerShellスクリプトです。
PowerShellを開き、以下のようにスクリプトを実行します。
> cd (GetFontFamily.ps1があるディレクトリ)
> .\GetFontFamily.ps1文字コードがShiftJISの環境で正常に動作しない場合は、代わりにGetFontFamilySjis.ps1を実行してください。
VSCodeからparser_test.jsを起動すると、parser_debug.js内の関数を呼び出してデバッグできます。
デバッグ用のファイルは、testサブフォルダに配置します。
テストデータはonWillParseMarkdown、onDidParseMarkdown関数の入口でthrow new Error(markdown);を有効にすると、MPEから呼び出された際のデータをテキストでキャッチして利用できます。
- マークダウンに@import [TOC]形式により目次を埋め込ませます。
- 目次を
:::pdf-tocと:::で囲みます。 - MPEからHTML出力します。
- MPEからPDF出力します。
- 以下のように実行します。
> node collectTocPage.js test.html -p test.pdf正常にスクリプトが起動すると、HTMLを読み込んで目次を解析します。
次にPDFを読み込んで、目次の項目に対応するページを調査し、出力します。
スクリプトの起動で試行錯誤するより、手作業で目次の番号を調べて付与した方が早いでしょう。
参考のために公開しています。
Popplerを利用して、PDFファイル中の画像の解像度を調査するスクリプトです。
- Popplerをインストールします。
- 以下のように実行します。
> node pdfinfo.js test.pdf -p C:\Uty\poppler参考のために公開しています。
全般的な、より詳しい解説は、以下のKindleのリフロー型電子書籍とペーパーバックを参照してください。
Visual Studio CodeとマークダウンでKindle本を出版しよう!: VSCode×MPE×Pandocで作るKindle本
このプロジェクトは、MITライセンスのもとで公開されています。詳細はLICENSEファイルをご覧ください。