ちょっとした議事録とかメモをプレインテキストでサクっと取るのには Makrdown はそこそこ便利である。
ただプレインテキストのままだた読みづらいので PDF にしたい。
とはいえ,がっつり手をかけてするほどのことはしたくない。
そういうときに,どうするか。
Pandoc というプロダクトを使えば,内部で LaTeX エンジンを噛ませるものの,簡単に PDF producing が可能である。
ただし Pandoc は海外プロダクト,日本語はそのままでは対応しないため,pandoc コマンドに --latex-engine オプションで XeLaTeX や LuaLaTeX を指定することで,日本語対応させる。
すると次には,フォントを Latin Modern と IPA フォントではなく,もうちょっとマシなものにしたいというのが人情。
しかし,Pandoc Markdown ではそれをするために,
Markdown に書き込まず別に TeX ファイルを用意し,pandoc コマンドに -H オプションで渡すという手段も存在する。
が,目的は小さな重要度の低い Markdown を PDF にすることであって,手の込むことはしたくない。
フォントの設定のコマンドはたいした量じゃないとはいえ毎度 Markdown の先頭に書く,これもよろしくない。
そこで解決策,次のようなシェル関数を用意して,ログインシェルの rc ファイルに書いておきました。
これでちょっと幸せになった気がする。
ただプレインテキストのままだた読みづらいので PDF にしたい。
とはいえ,がっつり手をかけてするほどのことはしたくない。
そういうときに,どうするか。
Pandoc というプロダクトを使えば,内部で LaTeX エンジンを噛ませるものの,簡単に PDF producing が可能である。
ただし Pandoc は海外プロダクト,日本語はそのままでは対応しないため,pandoc コマンドに --latex-engine オプションで XeLaTeX や LuaLaTeX を指定することで,日本語対応させる。
すると次には,フォントを Latin Modern と IPA フォントではなく,もうちょっとマシなものにしたいというのが人情。
しかし,Pandoc Markdown ではそれをするために,
---などと Markdown の先頭に yaml 形式で TeX のプリアンブルをずらずらと書く必要がある。
- header-includes:
- \usepackage{luatexja-otf}
...
---
Markdown に書き込まず別に TeX ファイルを用意し,pandoc コマンドに -H オプションで渡すという手段も存在する。
が,目的は小さな重要度の低い Markdown を PDF にすることであって,手の込むことはしたくない。
フォントの設定のコマンドはたいした量じゃないとはいえ毎度 Markdown の先頭に書く,これもよろしくない。
そこで解決策,次のようなシェル関数を用意して,ログインシェルの rc ファイルに書いておきました。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# | |
# PDF producing from markdown using pandoc w/ Japanese | |
# | |
md2pdf() { | |
if [ $# -ne 5 ]; then | |
echo "Usage: $0 <title> <author> <date> <input file> <output file>" | |
return 1 | |
fi | |
case `uname` in | |
Linux) | |
fontfamily=sourcehan-jp,deluxe | |
;; | |
Darwin) | |
fontfamily=hiragino-pron,deluxe,jis2004 | |
;; | |
esac | |
(cat << EOF | |
--- | |
title: $1 | |
author: $2 | |
date: $3 | |
header-includes: | |
- \usepackage{unicode-math} | |
- \unimathsetup{math-style=ISO,bold-style=ISO} | |
- \setmathfont{TeX Gyre Pagella Math} | |
- \setmainfont[Ligatures=TeX, Scale=0.95]{TeX Gyre Pagella} | |
- \setsansfont[Ligatures=TeX, Scale=0.95]{TeX Gyre Heros} | |
- \setmonofont[Ligatures=TeX, Scale=1]{TeX Gyre Cursor} | |
- \renewcommand{\bfdefault}{bx} | |
- \renewcommand{\headfont}{\gtfamily\sffamily\bfseries} | |
- \usepackage{luacode} | |
- \usepackage{luatexja-otf} | |
- \usepackage[$fontfamily]{luatexja-preset} | |
- \ltjsetparameter{jacharrange={-2}} | |
--- | |
EOF | |
) | cat - $4 \ | |
| pandoc -f markdown -t latex \ | |
--latex-engine=lualatex \ | |
-V documentclass=ltjsarticle \ | |
-V classoption=10.5ptj -V classoption=a4paper \ | |
-o $5 | |
} |