「VSCode で数式や図の入った小冊子をつくる」
https://qiita.com/nanbuwks/items/56dad2c4d6a640f550e2
では、
今後
いろいろ問題があります。しかしながら設定をやり込んでいくと Re:View 使えばいいじゃんということになってしまいます。お手軽な中でやれることということで VSCode 内で完結する制限内でできることを試してみました。しかしながらページ表示やキャプションなど、ほんのちょっとしたところで厳しいところがあるのも事実です。
と書きました。
これを検討してみました。
課題
- ページ番号をつけたい
- 目次のターゲットにページ番号を表示したい
- キャプション機能をつけたい
Markdown PDFの改造を検討
ネックとなるのはどれも印刷の問題となります。特に目次は、3パスも4パスも通して目次を作成したことで生じるページ数のゆらぎを吸収しないといけません。
Markdown PDF の印刷エンジンに手を加えるのは無理そうということで、この方法はあきらめました。
VSCode 外で
VSCode 内でやることにこだわってましたが、VSCode 外でのプロセスを導入することに切り替えました。しかしながらあまり複雑になってしまうと VSCode を使う魅力も薄れてしまうので、簡単な手順でできるという条件付きです。
目次
目次は前回、Markdown 段階で目次をつけました。これにはページ番号がついていません。ページ番号をつけるとすると、PDFにした本文のうちの目次対象が何ページに存在するかを検出しなければなりません。ちょっと手間がかかりそうなので今回はパス。
キャプション
図や表へのキャプションは後々欲しい機能ですが、現在はまだ切実ではないので今回はパス。しかしながらキャプション代わりにつけた説明が、改ページで泣き別れになるのが問題なので次回でどうにかしたいところです。
ページ番号
今回は、この問題だけを解決することにしました。
ポストプロセスでページ番号を付けます。
addpage コマンドを使います。
addpage を導入する
python のプログラムとして PIP で導入できます。
addpage を使う
以下は3ページ目からページ番号をつける例です。
$ addpage -o orbitcalc-addpage.pdf orbitcalc.pdf -s 3
本文のエリアと干渉しているので、-y
パラメータを追加して調整します。
$ addpage -o orbitcalc-addpage.pdf orbitcalc.pdf -s 3 -y 30
重なりが解消しました。
今回は簡単なコピー本なので、表紙もいっしょに小冊子印刷してしまいます。表2を1ページ目として数えることにし、以下の扉の「本書の狙い」のある物理で3ページ目を本書内の2ページ目として「 - 2 - 」と表示するようにします。そのためには -k
オプションを使います。
以下の内容のスクリプトを作成して、pdf 作った後にこれを適用するようにしました。
addpage -o orbitcalc-addpage.pdf orbitcalc.pdf -k 2 -s 2 -y 30