hoshikuzuの日記

2004-04-25

■イタズラ書き

mimeTeXで落書きしてます

ピタゴラスの定理から出てくる等式のひとつ

5^2 + 12^2 = 13^2

日記編集画面では以下のように入力

<img src="http://d.hatena.ne.jp/cgi-bin/mimetex.cgi?5^2~+~12^2~=~13^2" class="tex" alt="5^2 + 12^2 = 13^2">

日記閲覧時点では、HTMLソースは以下のようになっている。上と変わらない?ですよね。

<img src="http://d.hatena.ne.jp/cgi-bin/mimetex.cgi?5^2~+~12^2~=~13^2" class="tex" alt="5^2 + 12^2 = 13^2">
不等号も表現可能のようだ。(WinIE)

1 + 3^2 + 4^2 > 5^2

上の場合、日記閲覧時のHTMLでは、以下のようになります。これが本来のmimeTeXの表現のはず。src属性の中の>は&gt;と文字参照するのがmimeTeXでのコツであるはずです。このコツについては補考を後で書いておきます。

<img src="http://d.hatena.ne.jp/cgi-bin/mimetex.cgi?1~+~3^2~+~4^2~&gt;~5^2" class="tex" alt="1 + 3^2 + 4^2 &gt; 5^2">

これは日記編集画面で以下のように入力しています。&gt;の&をさらに文字参照して&amp;gt;としているところにご注意。これははてな日記編集画面のお約束。不思議だが本当だ。本当だが不思議だ。まぁ、はてなでのローカルルール。

<img src="http://d.hatena.ne.jp/cgi-bin/mimetex.cgi?1~+~3^2~+~4^2~&amp;gt;~5^2" class="tex" alt="1 + 3^2 + 4^2 &gt; 5^2">

上で述べたはてなでのローカルルール、これ、気がついている人少ないかもしれないです。XSS脆弱性対処による悪しき副作用のような気がしています。本当はすご~くマズイ現象なのですが打開策があるのかなぁ。いや、打開されたらされたで、この日記の今日の表示内容も変わって意味がわからなくなりますし、過去記事、修正の必要がいっぱい出てくる私ですが。HTMLソースの一部分を切り出して説明をしている人達には影響が出るのですね。でもやっぱり本来の姿にしておいたほうがいいとは思っている私です。だって、ローカルでHTMLを正しくマークアップしたものを日記編集画面にいれると日記閲覧時にバケていて意図した表示にならないのだもの。とほほ。知っていたのに放置してきた私にも責任あるかも。

ところでnobodyさんご指摘でわかったちょっとした不具合が。以下のように見えるらしい。原因?ブラウザによっては、GETリクエストする前に手元でURLエンコード(俗に言う%エンコード)をしてからサーバに要求するかららしい。

WindowsIEでの見え方
WindowsIEで不等号がきちんと表示されている画像例
Netscape on Win,Opera on Win,Firefox 0.8 on GNU/Linux
多くのブラウザで不等号(>)が%3Eに表示されている画像例
不等号も表現可能なのか練習中(WinIE以外)

1 + 3^2 + 4^2 \gt  5^2

日記編集画面では以下のように。。。

<img src="http://d.hatena.ne.jp/cgi-bin/mimetex.cgi?formdata=1~%2B~3^2~%2B~4^2~%3E~5^2" class="tex" alt="1 + 3^2 + 4^2 &#92;gt  5^2">

バックスラッシュは無闇につかってはいけない罠。注意しつつ\geを使うと、「以上」の記号が出せそう。でも、mimeTeXって複雑な式になるとやたらバックスラッシュが出てくるんですけど。

別な方法で練習(はてな省略記法による記述を試みる)

first example: taylor series for e^x at various font sizes
formdata=1%24e%5Ex%3D%5CBigsum_%7Bn%3D0%7D%5E%5Cinfty%7E%5Cfrac%7Bx%5En%7D%7Bn%21%7D
formdata=2%24e%5Ex%3D%5CBigsum_%7Bn%3D0%7D%5E%5Cinfty%7E%5Cfrac%7Bx%5En%7D%7Bn%21%7D
formdata=3%24e%5Ex%3D%5CBigsum_%7Bn%3D0%7D%5E%5Cinfty%7E%5Cfrac%7Bx%5En%7D%7Bn%21%7D
formdata=4%24e%5Ex%3D%5CBigsum_%7Bn%3D0%7D%5E%5Cinfty%7E%5Cfrac%7Bx%5En%7D%7Bn%21%7D
formdata=4%24e%5Ex%3D%5Crelstack%7B%5Crm%7Elim%7D%7B2%24n%5Crightar%5Cinfty%7D%5C%281%2B%5Cfrac%7Exn%5C%29%5En
second example:
formdata=4%24%5Cfrac%7Bdv%5Em%7D%7Bds%7D%3D-%5CGam%5Em_%7B%5C0%5C0%7Dv%5E%7B%5C0%5E%5C2%7D%3D-g%5E%7Bmn%7D%5CGam_%7Bn%5C0%5C0%7Dv%5E%7B%5C0%5E%5C2%7D%3D%5Cfrac12g%5E%7Bmn%7Dg_%7B%5C0%5C0%2Cn%7Dv%5E%7B%5C0%5E%5C2%7D
third example:
formdata=4%24%5Cvareps%3D%5CBigsum_%7Bi%3D%5C1%7D%5E%7Bn-%5C1%7D%5Cfrac1%7B%5CDel%7Ex%7D%5CBigint_%7Bx_i%7D%5E%7Bx_%7Bi%2B%5C1%7D%7D%5C%7B%5Cfrac1%7B%5CDel%7Ex%7D%5Cbig%5B%28x_%7Bi%2B1%7D-x%29y_i%5E%7B5%24%5Cstar%7D%2B%28x-x_i%29y_%7Bi%2B1%7D%5E%7B5%24%5Cstar%7D%5D-f%28x%29%5C%7D%5E%5C2dx
fourth example: solution to quadratic
formdata=5%24x%3D%5Cfrac%7B-b%5Cpm%5Csqrt%7Bb%5E2-4ac%7D%7D%7B2a%7D
fifth example: continued fraction
formdata=5%24f%3Db_%5C0%2B%5Cfrac%7Ba_%5C1%7D%7Bb_%5C1%2B%5Cfrac%7Ba_2%7D%7Bb_2%2B%5Cfrac%7Ba_3%7D%7Bb_3%2Ba_4%7D%7D%7D
sixth example: demonstrating \left\{ ... \right.
formdata=5%24%5Ctilde%7Ey%3D%5C%7B%5Catop%7B%5Cbar%7Ex%5Crm%7E%7Eif%7Ex%7Eodd%7D%7B%5Chat%7Bx%2B1%7D%5Crm%7E%7Eif%7Eeven%7D%5C.
seventh example: demonstrating \overbrace \underbrace
formdata=4%24%5Coverb%7Ba%2C...%2Ca%7D%5E%7B%5Crm%7Ek%7Ea%5E%2Cs%7D%2C%5Cunderb%7Bb%2C...%2Cb%7D_%7B%5Crm%7El%7Eb%5E%2Cs%7D%5Chspace%7B10%7D%7B2%24%5Cunderb%7B%5Coverb%7Ba...a%7D%5E%7B%5Crm%7Ek%7Ea%5E%2Cs%7D%2C%5Coverb%7Bb...b%7D%5E%7B%5Crm%7El%7Eb%5E%2Cs%7D%7D_%7Bk%2Bl%5Crm%7E%7Eelements%7D%7D
補考:mimeTeXにsrc属性内で不等号を直接渡さない理由
『Uniform Resource Identifiers (URI): Generic Syntax』,RFC2396(英文)
http://www.ietf.org/rfc/rfc2396.txt

上のRFC2396によれば、URLで許可されている文字は以下のものに限られます。

URLで許可される文字
英数字「;」「/」「?」「:」「@」「&」「=」「+」「$」「,」「-」「_」「.」「!」「~」「*」「'」「(」「)」「%」

従って、img要素のsrc属性にてmimeTeXに不等号をそのまま与えるURLは駄目ですよ、ということになります。「>」は、「&gt;」と文字参照しておかなければなりません。HTMLエンコードですね。

ちなみにURLで許可される文字には#がありませんよね。原則、URLの#以下は、サーバに送られません。ブラウザが覚えています。リクエストの結果サーバがHTMLを返してくれた後、ブラウザは#以下を思い出して適切なハッシュ(終点アンカー)を見出して位置付けます。さて、img要素のsrc属性の中身において、たとえば、「>」をあらかじめ文字参照して「&#62」としておくべきなのですが、これはHTML記述上のお話のようです。インターネット回線上では、「&#62」は元通り、「>」としてWindowsIEではサーバにリクエストしているものと思われます。「#」は回線上、流れていない模様。したがって、ハッシュを意味していません。面白い。ですから、「&#62」の「#」以後もきっちり回線上伝送されます。NetscapeやOperaでは、「&#62」は「>」とみなし、さらにURLエンコードして「%3E」としてからサーバへの回線上にのるようです。

上記をつらつら考えますと、mimeTeXの開発者はWindowsIEのユーザではないかと強く推察されます。URLデコードをmimeTeXが実装していれば、NetscapeやOperaでも不等号は楽勝に表示されるものと思われます。その際には、%3Eと書いておけば良いので、「&#62」と書く必要はなくなります。ある意味楽です。

はてな専用のmimeTeXとして単純にURLデコード機能をそなえたものをhmimeTeXとしてリリースしたら世界中で幸せになる人がいっぱいいるかもしれません。

nobodynobody2004/04/26 01:30[下の図] 合流性( チャーチ-ロッサー)?それともあれかな。

nobodynobody2004/04/26 01:36[不等号] あれ?こちらの環境では「%3E」と表示されてます。なぜだろう。。。(Firefox 0.8 on GNU/Linux)

hoshikuzuhoshikuzu2004/04/26 09:39netscape on windows と opera on winsows でも %3Eに見える。。。。ガーン。WindowsIEdakeなのですか?すんげぇドジったのか。

hoshikuzuhoshikuzu2004/04/26 10:07URLエンコード後にリクエストしてる?>Netscape,Opera,Firefox

hoshikuzuhoshikuzu2004/04/26 10:08仮にそうなら、mimetex.cgiはその処理の冒頭でURLデコードの必要が出てきますね。

torustorus2004/04/26 10:40コメントありがとうございました。ぼくは Firefox だったから>が見えなかったんですねぇ。「謎」の式は相対性理論関連かな。

hoshikuzuhoshikuzu2004/04/26 11:10nobodyさん、ご指摘ありがとうございます。どうやらmimeTeXには改造の余地ありのようですね(^ ^)でも、はてなグループ特有の現象ではないかとも思います。

hoshikuzuhoshikuzu2004/04/26 11:12torusさん、torusさんの日記にあった不等式は私の手元のWinIEでも%3Eに化けていました。img要素のsrc属性の中では不等号を、文字参照しなければいけないようです。

hoshikuzuhoshikuzu2004/04/26 11:14torusさん、【謎の式】の上のほうはテンソルを使っているので一般相対論がらみの可能性がありますね。謎です。nobodyさん、謎の式の下のほうのはわかりません。なんでしょ?

hoshikuzuhoshikuzu2004/04/26 11:15謎の式、ここから孫引きしたので、、てへへ。http://www.forkosh.dreamhost.com/mimetex.html