最終更新:2018年2月6日
- 肝心なルビの置換で間違い(スペルミス)があったので、修正。
- pandocを1.9から2.1.1にアップグレードしたら、html に変換時に
-s
を明示的にコマンドに入れて、スタンドアローンにしないと、htmlのヘッダーやbodyがつかなかったので、スクリプトを修正。
以下に記すものは、html経由のPDF作成です。
LaTeX(Lualatex)経由は Pandoc で markdown から 論文PDF へ変換 を参考にしてください。
Markdown記法(Pandoc拡張Markdown)では、文字へのルビや下線(アンダーライン)の表現はない。
しかし、文書作成上、欠かせない表現なので、以下の手順でMarkdownをpdfデータに変換する前提で、何とかする。
Markdown内に直接、html記法で書いてもいいのだが、とくにルビのhtml記法はめんどうくさいし、下線もu要素で書けなくもないのだが、html5ではたんに下線を引くだけにu要素を使うのは良くないっぽいので、独自記法で書いて、sedで置換という手法をとる。
フォルダ内構成
任意のフォルダ内に以下を作成。
sample.css
ruby>rt {
font-size: 50%;
text-align: center;
}
.underline{text-decoration:underline;}
makepdf.sh
#!/bin/sh
#htmlに変換
pandoc $1.md -c sample.css -t html5 -s -o $1.html
#ルビ置換
sed -i -e 's/rb{/<ruby><rb>/g' $1.html
sed -i -e 's/|/<\/rb><rt>/g' $1.html
sed -i -e 's/}rb/<\/rt><\/ruby>/g' $1.html
#下線置換
sed -i -e 's/u{/<span class="underline">/g' $1.html
sed -i -e 's/}u/<\/span>/g' $1.html
#pdfに変換
wkhtmltopdf --disable-smart-shrinking --margin-top 20 --margin-left 20 --margin-right 20 $1.html `date +%Y%m%d-$1`.pdf
原稿.md
<!-- 独自記法メモ
u{下線}u
rb{漢字|かんじ}rb
-->
# 坊っちゃん
## 一
rb{親譲|おやゆずり}rbのrb{無鉄砲|むてっぽう}rbでu{小供の時から}u損ばかりしている。
シェルスクリプト実行
$ sh makepdf.sh 原稿
サンプル画像