自己顕示欲の開放治療所

erg, programming and something.

別名:Laughing and Grief 雑記

Latin and Greekは習ったこともない

真面目な記事の他、特定の方には不快と思われる事柄に関して言及を行うことがあります。ちょっと頑張りますが、Blog内で解決できなかった場合要望があれば別ページに技術記事は書き直します

Sphinxでナウいjsbook使うと章題ページだけページ番号がヘッダにいく

結論

gist.github.com

preface

最近、フューチャーアーキテクト、というか多分ほぼ渋川さんから素晴らしいドキュメントが公開されました。

future-architect.github.io

これで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}
'''}

としましょう。