はじめに
以前Markdownで書いたテキストをPDFに変換して納品用ドキュメントを作成する方法としてテキストから納品用のPDFを作成する方法を紹介しました。 今回は、前回のやりかたとはちょっと趣向を変えて、既存のテンプレートを活用してドキュメントを作成する方法を紹介します。
体裁を整える
体裁を整えるときの条件を以下のとおりと想定します。
-
章や節を採番する(
-N
を指定する) -
注釈を使う(
footnotes
を指定する) -
定義リストを使う(
definition_lists
を指定する) -
フォントにはIPAexGothicを指定する(
-V CJKmainfont=IPAexGothic
) -
表紙を作成する(
-V titlepage=true
を指定する) -
クロスリファレンスを使う(pandoc-crossrefが必要)
-
目次を作成する(
--table-of-contents
を指定する) -
目次のレベルを3にする(
--toc-depth=3
を指定する) -
既存のテンプレートを使う(
--template eisvogel
を指定する) -
コードのシンタックスハイライトは
tango
を使う(--highlight-style tango
を指定する)
pandoc
とpandoc-crossrefはすでに導入済みであるものとします。
既存のテンプレートを指定するので、以前指定していた自前のクラスファイルmyltjsarticleははずします。
eisvogel
というテンプレートは https://github.com/Wandmalfarbe/pandoc-latex-template から入手できます。
上記をまとめると、次のようなコマンドでPDFを作成できます。
pandoc -o sample.pdf \
-N \
-f markdown+ignore_line_breaks+footnotes+definition_lists \
-V CJKmainfont=IPAexGothic \
-V titlepage=true \
-V toc-own-page=true \
-F pandoc-crossref \
--table-of-contents \
--toc-depth=3 \
--pdf-engine=lualatex \
--template eisvogel \
--highlight-style tango \
sample.md
メタ情報を記述するには
ドキュメントにはタイトルやキーワードといったメタ情報を含めることができます。
---
title: ○○仕様書
subject: ○○に関する仕様書
date: 2018/09/12
author: 株式会社××
keywords: [△△, □□]
---
文書の冒頭に上記のようなメタ情報を記述しておくと、eisvogel
テンプレートを使ったPDFの表紙として使われます。
表紙に含まれるのはtitle
とauthor
、date
です。
メタ情報の詳細については、Usageを参照するとよいでしょう。
生成されたサンプルのPDF
実際にサンプルからPDFを生成してみましょう。以下のようなMarkdownのテキストをPDFに変換してみます。
---
title: ○○仕様書
subject: ○○に関する仕様書
date: 2018/09/12
author: 株式会社××
keywords: [△△, □□]
---
# 大項目1タイトル
サンプルのテキスト
## 中項目1タイトル
サンプルのテキスト
### 小項目1タイトル
サンプルのテキスト
![サンプルの図](sample.png){#fig:sample-image}
[@fig:sample-image] はサンプルの図です。
サンプルのテキスト [^footnote]
```ruby
puts "Hello, Ruby"
定義リスト
: 定義の説明
\appendix \clearpage
付録Aタイトル
サンプルのテキスト
PDFに変換した結果は次のようになります。
![生成したPDFの複数ページプレビュー画像](/images/blog/20180913_0.png "生成したPDFの複数ページプレビュー画像")
サンプルはシンプル過ぎるように感じるかもしれませんが、テンプレート変数を利用していろいろカスタマイズができます。
詳細については、次のページを参照してください。
* [Custom Template Variables](https://github.com/Wandmalfarbe/pandoc-latex-template#custom-template-variables)
`pdffonts` を使うと、実際に使われているフォントを確認できます。
```console
% pdffonts sample.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
SXTRUT+IPAexGothic CID TrueType Identity-H yes yes yes 24 0
OAJEHK+IPAexGothic CID TrueType Identity-H yes yes yes 25 0
MKLQPT+SourceSansPro-Regular CID Type 0C Identity-H yes yes yes 26 0
CRVRHO+SourceSansPro-Bold CID Type 0C Identity-H yes yes yes 37 0
JSIIWV+SourceCodePro-Regular CID Type 0C Identity-H yes yes yes 51 0
指定したとおりにIPAexGothic
が使われていることがわかります。
pdfinfo
を使うとPDFファイルの情報を確認できます。
% pdfinfo sample.pdf
Title: ○○仕様書
Subject: ○○に関する仕様書
Keywords: △△, □□
Author: 株式会社××
Creator: LaTeX with hyperref package
Producer: LuaTeX-1.7.0
CreationDate: Wed Sep 12 18:26:42 2018 JST
ModDate: Wed Sep 12 18:26:42 2018 JST
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 4
Encrypted: no
Page size: 595.276 x 841.89 pts (A4)
Page rot: 0
File size: 236561 bytes
Optimized: no
PDF version: 1.5
メタ情報として記述していたキーワードなども反映されていることがわかります。
まとめ
今回は、Pandocを使ってMarkdownで書いたテキストをPDFに変換してドキュメントを生成する方法(既存のテンプレートを使う)を紹介しました。 PDFの生成には少し時間がかかりますが、綺麗に出力できるので特にレイアウトに制限のないようなドキュメントをテキストエディタで書きたい人は検討してみてはいかがでしょうか。