Sphinxでナウいjsbook使うと章題ページだけページ番号がヘッダにいく
結論
preface
最近、フューチャーアーキテクト、というか多分ほぼ渋川さんから素晴らしいドキュメントが公開されました。
これでTypeScriptにちゃんと入門しようと思って、Kidle Oasis にPDF入れて読んでいたんですが、目次タイトルや章題ページだけ、なんかページ番号の位置が違うしフォントも違う?
原因
SphinxでreStructuredTextから生成されているので、原因特定が比較的容易でした。ちゃんと触ってたの4、5年前だけど。
章題ページだけヘッダを取るくらいならデザインかな、という感じだけどページ番号の位置は大抵は揃えてなんぼなのでSphinxというかLaTeXのどっかでpagestyleが上書きされているのかな、と
あたりをつけて調べることに。
sphinxmanual
は現在のデフォではjsbookをロードして拡張してるっぽいので、jsbookの chapter
を見ると、\plainifnotempty
なるものが呼ばれてるので、まあコレだろうということで、
どうにかする方法を考えます。jsclassesも最近使ってなかったし、使ってたときは中身読んでなかったのでこういう不都合がでたのは最近かもしれないし以前からかもしれません。
修正
chapter
を再定義するのが正しい気もしますが、Sphinxのベースで将来的に弄ったらそれを更に〜というのはグチャグチャになっていきそうなので、お行儀悪く \plainnotempty
で定義されるページスタイルを
書き換えてみます。一応、fancyhdrがあって、chapterがあってという状態で、\plainifnotempty
が存在する場合のみ再定義するようにしたので他のクラスで使ってもパッケージのロード時間が僅かに増える程度で害はないかと思います。
chapterfoot
ページスタイルを新たに用意しているのは、\thispagestyle{normal}
だとヘッダも他のページと同じになってしまうのでどちらの動作が正しいか判断がつかなかったため。
使い方
Gistの方にも書きましたが。
コピーして、conf.pyの
latex_additional_files
でビルド時コピーできる場所に置いて設定し、
latex_elements = { 'preamble': ''' \\usepackage{sphinx-jsbook-mod} '''}
としましょう。