Diary over Finite Fields

515ひかるの日記と雑文

続・MathJax のインライン数式記法をはてなブログの数式記法へ変換を試みる話

ブログの外観を変えてみたりカスタマイズしたりしてみました. ちょっと触発されて. バイトをやめて CSS とか書く時間すごく減ったんですが, たまにはいいですね. しかしはてなブログのカスタマイズをしていると本当に PRO にしたくなるな……. 現在はお金がないので我慢せざるを得ないのですが(何度も言っているようにブログで小銭稼ぎとかを頑張る気もないですし).

あと, 今回はレスポンシブデザインに対応しているテーマにしたので, タブレットやスマートフォンからも PC と同じ HTML で見えているはずです. デバイスで表示が大きく異なるのはあまり好きではないので, 実はレスポンシブデザインの方が好きなんですよね.

そんなわけで, 心機一転頑張っていきます.

前回の記事はこちら.

hikaru515.hatenablog.com

この話の続きをします.

github.com

追加した機能は次のようなもの. リンク先の README にも書いたのですが.

[]\[\] に変換

はてなブログの数式, 多項式環を書く時などによく使う [X] とかを数式中だとエスケープしないといけないです. つまり [tex:{K\[X\]}] にしないといけないわけですね. 数式記法を始めるのに [] を使っているので中身をエスケープしないといけない理屈はわかりますが……うーん.

サンプル

$K$ を体, $K[X]$$K$ 係数多項式環とする.

これを変換すると,

[tex:{K}] を体, [tex:{K\[X\]}] を [tex:{K}] 係数多項式環とする.

でも, なぜか現在これを直接貼り付けるとうまくいかない.

{K} を体, {K[X}] を {K} 係数多項式環とする.

もうここまでくると面倒見きれないので, 手動で

[tex:{K}] を体, [tex:{K\\[X\\]}] を [tex:{K}] 係数多項式環とする.

とふたつエスケープ.

{K} を体, {K[X]}{K} 係数多項式環とする.

はい, うまくいきました(一応大括弧を\\[ \\] にエスケープするブランチも GitHub に push しておきましたので, もし問題がなければ master にマージしようかと思っています.).

はてな記法用に不要なエスケープはしないオプションを追加

--hatena オプションを使うと, Markdown では必要だがはてな記法では不要な ^ とか _ のエスケープをしないように設定できます. Markdown の記法をはてな記法に変換するわけではないので注意してください*1.

こんな感じで動きます:

% cat hoge.md
$a^x$
% ./hateblo-math-convert.rb -p hoge.md
[tex:{a\^x}]
% ./hateblo-math-convert.rb -p --hatena hoge.md
[tex:{a^x}]

ついでに書いちゃいますが, -p で標準出力に変換後の文書を出力するようなオプションもつくりました.

まとめ

ざざっとこんなところです. 実は処理の仕方が結構変わっていて, ほぼ作り直しになってしまい、日曜日だったのですがほとんどずっとこれをやっていました*2.

これをつかって, MathJax を読み込むのをやめたせいで読めなくなっていた過去記事を読めるように直しました.

hikaru515.hatenablog.com

この記事の中身自体はわりとどうでもいい*3んですが, スクリプトがあると直せるなら直すか……ってなりますね(ちゃんと記事の管理をしろ). また何かこのリポジトリ関連で何かしたら書きます.

*1:そういう機能を実装したいなとは思っている. ものすごく大変そうだけれど

*2:とても楽しかった.

*3:ていうかバレンタインデーになんて記事書いているんだ俺……