あまり一般的な事例ではないかもしれませんが、どこかの誰かと未来の自分の為に、対策をメモしておきます。
<基本設定>
- 日本語パッチのあたったSphinxを使う
- スタンドアローン版をインストールしたディレクトリ配下のpython\libに、sitecustmoize.pyを追加する。ファイルの中身は、
import sys
sys.setdefaultencoding("mbcs") - conf.py で
language = 'ja'
としておく
language='ja'は、入れなくてもいいのですが、いれておくと色々良くなることが多いので、最初から設定しておくと良さげです。quickstartで作られるconf.pyは、微妙な感じがするので、特に自作テーマを作るときは、それに合わせて標準的なconf.pyを用意しておくとよさそうですね。
<テーマをいじる場合の注意点>
- jinja2のテンプレートはutf-8(BOM無し)で書く
- theme.confもutf-8 (BOM無し) で書く
- conf.pyでhtml_theme_optionsを指定する場合も、値をutf-8にエンコードする
出力しているhtmlのエンコーディング指定に合わせる必要があります。
defaultのテーマの場合は、
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
なので、utf-8です。
ようは、変数の値がそのままテンプレートでレンダリングされるようです。だから、テンプレートに渡す時には、ちゃんと最終的な文字コードをあわせてエンコーディングしておきましょう。
デフォルト設定だと、そうそう起きない失敗だと思いますが、(社内展開を考えると、シフトJISのほうが喜ぶ人が多そうに思えたので)conf.pyにて「source_encoding = 'mbcs'」としたのが迷宮の入り口でした。ソースがmbcsだから、設定もmbcs?って思いましたが、最終形式に合わせるんですね。
(結局utf-8を喜ぶ人じゃないとSphinxは使わない気がする・・・。いろいろ面倒が多いので、この機会にUTF-8(BOM付)にそろえることにしました)
<htmlテーマの変数をWindowsのbatファイルで使いたい場合>
- .bat→.bat_tとする
- {{'\r'}}を行末にいれる
- .bat_t ファイルには、なるべく日本語を入れない。どうしても必要な場合はシフトjisで入れる。
- .bat_tの中で使うテーマの変数は、conf.pyの中でシフトjisにエンコードしておく
htmlhelpを作る場合の注意点もありましたね。
返信削除