見出し画像

Sphinxにキーによるページ移動を付けてみよう(メモ)

さて、Sphinxにキーによるページ移動を付けてみよう、ということで。

はい?Sphinxってなーに?ですか?詳しい説明は割愛。

Pythonのマニュアルとか、Blenderのマニュアルとかコレですよね?

また、Blenderのユーザーマニュアル[4]やPythonのAPIドキュメント[5]にも採用されている。

https://ja.m.wikipedia.org/wiki/Sphinx_(%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AC%E3%83%BC%E3%82%BF)

さて、「なにかreSTで書いて make html とかやるといい感じにファイル作ってくれる」Sphinxさんですが、次ページ/前ページ移動にページ右上のリンクをいちいち押すのが面倒なので、キー押下でページ移動できないかな、となるわけですよ。

ということで、[Ctrl]+[←] および [Ctrl]+[→] キーでそれぞれ 前ページ/次ページ に移動できるようにしておいたのでそちらのメモ📝。

では早速いってみよー😀

なお、sphinx-quickstart コマンドを実行済みのフォルダ、があることを前提で「なるべく作業量を少なく」。

“keypress.js”という名前で以下の内容を _static の下におきます。

var pref;
var nref;
window.onload = function(){
  var psel = document.querySelector(“a[accesskey=‘P’]”)
  var nsel = document.querySelector(“a[accesskey=‘N’]”)
  if( psel != null ){ pref = psel.href; }
  if( nsel != null ){ nref = nsel.href; }
}
document.addEventListener(“keydown”, (e) =>{
  if(!e.repeat)}
    if(e.ctrlKey){
      if(e.key === “ArrowLeft” ){
        if( pref != null ){ window.location.href = pref;}
     }
      if(e.key === “ArrowRight” ){
        if( nref != null ){ window.location.href = nref;}
      }
    }
  }
};

conf.py に以下を追記します。この時点でテーマを bizstyle にしとけば良いですね。

html_js_files = [‘keypress.js’]

というか、bizstyleやnatureのテーマには「前ページ」「次ページ」の印があるので、それを見つけてあげているだけなんですけどね。

あとは適当にコンテンツ用意して make clean ; make html したら、もう…。

はい、以上。


See Also:

実はこの話、続きがあっての…

お読みいただきありがとうございます。サポートいただいた分はおやつのグレードアップに使おうかと思います。スキ、SNSにシェアもよろしくお願いします!