◆英語版原文のURL◆ http://www.math.union.edu/~dpvc/jsMath/bugs.html
jsMathの認識されているバグ
以下に述べるのはjsMathの認識されているバグ.利用可能な回避策は含まれている.
  • PC上のFirefox 1.5.0.1はjsMath v3.1からv3.1cの圧縮バージョンが使用された場合,クラッシュ する.バージョン3.1dはこの問題を回避するので,このバージョンかそれ以降になるべく早く更新した方がよい.Mozillaの人々は将来のリリースにおいてこのバグを訂正するに違いない.jsMathはこの問題について困っており,彼らがいつまでも放置しないと確信している.しかし,1.5.0.1の廻りをさまよっている人は常に存在するので,あなたはFirefox 1.5.0.1で作動するjsMathを使いたくなるに違いない.Firefox 1.5.0.1のマッキントッシュ・バージョンではこの問題は顕在化しない.私はUnixバージョンについては分からない.

  • PC上のMSIEは,ブラウザのエンコーディングがある非西ヨーロッパ言語(特に中国語)にエンコーディングされているとき,TeXフォントのある文字位置は,利用できない.1つの解決はjsMathのコントロールパネルを用いて画像fontを選択することである. (このエラーは,BaKoMaバージョンと異なるエンコーディングを使用している新しいjsMathのバージョンでは,もはや問題とはならない。)

  • PC上のMSIEFirefoxは,アルファチャンネルの透過性を用いた画像を印刷できない(これらは中塗りの黒い箱として現われる)ので,これらのブラウザでアルファチャンネルが使われているときは,画像fontを用いたページはうまく印刷できない.これを7回避するには,jsMathコントロールパネルの"Hi-Res Fonts for Printing"ボタンを用いるか(これによりアルファfontは自動的に消える),または,jsMathコントロールパネルのオプションページで"Use image alpha channels"ボタンのチェックを外すとよい.

  • 120dpiで1600を越える解像度の画面をもったPC上のMSIEでは,ブラウザによって画像の大きさが自動的に変更される.jsMathは画像fontが使用されているときは,これを十分補うことはしない.アルファチャンネルを用いる画像はこの場合,正しく働かず,jsMathはこれらを自動的に消去する.

  • PC上のMSIEには,ディスレイのバグが数え切れないほどある.JsMathはこれらのまわりで懸命に働こうと試みるが,このことが他のブラウザよりもMSIEにおける動きを遅くしている.・・・実際,1桁のオーダーは遅くなっているように見える.

  • jsMathがのろいと思われたなら,TeXのfontをインストールしたほうがよい.画像fontを使用していれば,(これのためのMSIEの解決はかなり扱いにくい) アルファチャネルを消すことを試みるかもしれないし,完全な画像・モードよりもむしろ記号だけのモードを使用しようとするかもしれない.画像パターンのfontは非常に遅いことがある.結局,unicodeモードはいずれかの画像・モードよりも速いかもしれない.ディプレイ・バグのうちで最も深刻なものの一つが原因となって,自然な位置から配置換えされたある状況の下で文字が完全に消える.jsMathは数式を配置するのに多くのポジショニングの行うので,このバグの犠牲になることがある.私はこの問題を巡って懸命に働いたが,これが起こる状況にあるように思われる.

  • PC上のMSIEがポジション固定のCSS属性を実装していないので,jsMathのコントロールパネルが右下の位置に留まるよう擬似的に固定しなけれなならなかった.これはブラウザウィンドウのためにJavaScriptのスクロールイベントを捕獲することによって行っている.自分でこのイベントを捕獲するにはMSIEにおけるjsMathのこの特徴を止めればよい(自分自身のコーデイングにjsMathの方法を呼び出すこともできる).このCSS標準に対するサポートの欠如のためjsMathのコントロールパネルは適切な位置に表示されないことがある.

  • PC上のMSIEにおいてTeXソースウィンドウがドラッグされてマウスがビューウィンドウの外に動いたときは,ウィンドウ内のテキストを選択できる.ウィンドウに戻れば再度選択することはできなくなる.解決策を探すつもりであるが.その優先順位は高くない.

  • Mac上のMSIEにおいてはjsMathはかなり不安定であり,不意にクラッシュするかもしれない.多くの数式や複雑な形式を含んだページでは,MSIEは最初に使用されているfontに関してとまどうことがある.数式は最初は正しく活字組みされるが,その次の方程式が活字組みされたとき,前に登場した文字が変更され奇妙なものになりうる.また,MSIE/Macには多くのCSSバグがあるので,自分のページにスタイルを追加することはjsMathを本当にかきまわすものとなる.jsMathに新たな特徴が追加されたとき,MSIE/Mac上でjsMathをいつまで動くようにできるか定かではない.

  • TeXフォントを用いない代替モードにおいては,jsMathの圧縮バージョンと代替方法が使用されていると,Mac上のMSIEは見るページごとにどんどん遅くなる.

  • jsMathがMicrosoftヘルプビュ-アーの中で使われるとき,ヘルプビューアーが閉じられたとき,いくつかの動作によって hh.exe が終われなくなり,利用可能なCPU時間の100%を使えなくするかもしれない.この引き金になると見られるjsMathにおける状況は除去されたが,それが起こりうる幾つかのケースがまだ残っている.特に,左にある目次枠をクリックするとこれが起こる(そして,キャッシュとコントロールパネルの設定が失われる).そこで,目次枠を無効にして自分自身のHTMLベースのものを作るのが最善である.

  • PC上のFirefox 1.5において印刷プレビューは,印刷出力をいつも正確に表わしているとは限らない.数式はページの適切でない位置に置かれているように見えるかも知れないし,<NOSCRIPT>タグのコンテンツがこれといった理由もなく印刷出力に現われるかもしれない.これらの問題は,実際の印刷出力では起こらず印刷プレビューだけで起こる,奇妙なことである.

  • PCの上のFirefox 1.5では,ユーザがインストールしていても幾つかの特別なfontはロ−ドされないかかもしれない.これは(lasy10のように)そのfontが128のキャラクタ文字のフルセットを含んでいないときに起こる.この場合,jsMathは"extra font not found"というメセージを出して,代わりに画像fontを使用する.

  • Firefox (version 1.0.x 及びそれ以前)においては,オートロード・プラグインが使用されているか,または,コントロールパネルにおいて非同期処理(force asynchronous processing)にチェックされているとき,ブラウザの「戻る」ボタンは現在のページの複数のコピーを含んでいる.そのため,「戻る」ボタンを押せば,現在のページが再描画されるだけである(さらに,「戻る」メニューにもっと多くのコピーを加える.)次善の策は,「戻る」メニューから手動でもっと前のページを選択することである.バージョン1.5にはこの問題は見られない.

  • Firefox でグローバルモードが使用されているときは,「戻る」「進む」ボタンはいずれも正常に働かないかもしれない.履歴リストはそのページを適切に見せるための使用されるフレームを正しく保持されないと思われる.この問題について次善の策はない.

  • Macの上の Safariでは,デフォルトの印刷設定は数式を含むページの不適切な印刷の原因となる(数式文字のための白い背景色はページの低い位置にあるテキストが見えない形に重なる).次善の策は,印刷ダイアログボックスで"Safari"枠の"Print Backgrounds"チェックボックスを選択することである.

  • 画像fontを使用するMacの上の Safariでは,字体が最初にロードされたとき,画面上にうまく表示されないかもしれない(中に何も文字が含まれない空枠しか出ないことがある).ウィンドウをゆっくりリサイズする(または更新する)と字体が現われる.現在のV2.1は,jsMathはページがロードされてからウィンドウをゆっくりジョギングさせることにより,これを克服しようとしているが,そのタイミングは必ずしもすべての状況に適切とは言えず,ユーザが自分でリサイズしたほうがよい.

  • Opera ブラウザにおいては,unicodeフォントが選択されたとき幾つかの数式がうまく表示されない.Operaはシステムにインストールされたfontの中で仮に利用可能となっているものでも,数式に必要なunicode字体の必ずしも全部にアクセスできるようには思えない.解決策はTeXフォントをインストールするか画像fontを使用することである.

  • Operaにおいて,サーバに存在しないファイルをオートロードしようと試みるとブラウザがハングする.これについて回避策は見つからない.

  • Operaにおいてはspriteベースの画像fontはスケーリングすることができないので,これらの特徴はjsMathのコントロールパネルで無効にしている.これは,"Hi-res fonts for printing"が選択できないことを意味している.また,spriteベースの画像fontを印刷するためにはバックグラウンド印刷を付ける必要があるでしょう.PC上では,仮にそうしてもうまく印刷できないでしょう.これらに対する次善の策は,知られていない.

  • Operaにおいては,グロバルモードと非グローバルモードの頻繁な切り換えは,ブラウザがクラッシュする原因となることがある.

  • OmniWeb でグロ-バルモードに入るとクラッシュの原因となるので,このブラウザのすべてのバージョンでグローバルモードは無効になっている.

  • 画像fontが使用されているときに数式がうまく印刷できないとき,オプションが利用できるならば"Print backgrounds"を選択する必要があるかもしれない.いくつかのブラウザは,バックグラウンド印刷が選択されていない限り,fontの字体に使われている透過性を考慮しない.

  • 画像fontを使用していて印刷の質が悪いようなら,jsMathのコントロールパネルを使用して"Hi-Res Fonts for Printing"ボタンを押せば,もっとよい印刷を提供する高解像度バージョンの画像がロードされる.再度,元のスクリーンフォントを得るために,ページをリロードしてください.現在のバージョン3.2bは低解像度fontで印刷すると,印刷されたページに警告を含むようになっている.この警告は,jsMathのコントロールパネルのオプションで消すことができる.jsMathが常に高解像度のfontを使用するように強制することもできる(これは多くのページを印刷しなければならないときに便利である)が,これは画面では貧弱に見え,印刷はよくなる.

  • アルファ透過性の画像fontを使用していると,PC上の幾つかのブラウザ(MSIEFirefox)は,これらを中塗りの黒いブロックとして印刷する.これに対応するには,jsMathのコントロールパネルを開き,"Hi-Res Fonts for Printing"を押すか,または,オプションパネルに進みアルファチャンネル透過性を無効にしてください.
  • jsMathのグローバルモードは繰り返し同一視するキャッシュを実装するためにフレームを使用するので,リロードして印刷することに関連する問題は,そのページに関係がある.グローバルモードに関する詳細文書を見てください.

  • \color拡張は画像fontから取られた字体の色は変えない.この場合に限ってシンボルのための画像fontを使用するのが最善である・・・少なくとも非シンボル字体は着色できる.

  • "<" and ">"はHTMLタグを区切るためにHTMLで使用されるので,数式の中でこれらの記号を使用するときは,慎重に行わなければならない.たとえば,
    <SPAN CLASS="math"> x<a </SPAN>
    としたとき,ブラウザは,"<a"をHTMLのアンカータグの始まりと読むので,jsMathは数式を始められない(jsMathがページにアクセスするよりもはるかに前にタグを解釈するので,jsMathがこれについてできることは何もなくなる)."<" や ">"の後にスペースを置けば十分であるが,"&lt;" や "&gt;" をこれらの代わりに用いる方がよい.

  • \hbox { } 中のテキストはjsMathのよって処理されず,ブラウザの書式でプレインテキストとして扱われる.このことは,テキスト中のTeXコマンドは評価されないことを意味している(例外:jsMathは,\hbox中の数式を処理するために,$...$\(...\)を探す.).そこで,イタリックにするために\itのようなものを使用することはできない.その代わりに,テキストの書式を整えるためにHTMLタグを使用しなければならない.問題は,jsMathが処理する前にHTMLタグが除去されるということである.jsMathは "@(...)" を\hbox中のテキストにおけるHTMLタグとして処理する.例えば,\hbox{an @(I)italic@(/I) word}は, "an italic word"となる.\hbox,における実際のタグには見劣りするが,機能はしている.
  • 幾つかの状況においては(特に,数式のスケーリングが大きいとき) ブラウザは,数式の境界を示すボックスが,視覚的な広がりよりも大きいとみなすかもしれない.線が分離しないようにjsMathはこれをブラウザから隠すが,ボックスが数式の下にある行の上端よりも広がり,ブラウザにおけるマウスクリックの処理を妨げるかもしれない.例えば,ブラウザは数式の下にある行のリンクが(仮にそうは見えなくても)数式によって覆われていると解されて,このリンクを選択することができないかもしれない.解決策は数式の境界を再考するために,ブラウザにクリッピング領域を強いることであるが,これはまだ実装されていない.幾つかの場合において当面の解決策は,メインのテキストをすっかり覆ってしまうよりは背後に見せるように,数式のz-indexが-1になるようにCSSを使用することである.これは,それ自身は何か他のものを覆っていない要素の中に数式が現われるときだけ有効となる.例えば,もし数式が背景色を伴うブロックにあるならば,z-indexを設定すると数式は背後に隠れ見えなくなる.

    自分の文書で,z-indexにグローバルに次を挿入する.

          <STYLE>
            .typeset {z-index: -1; position:relative}
          </STYLE>
    

    一つの選択肢は,リンクやその他のインタラクティブな内容をより高いz-indexにすることである.

          <STYLE>
            a, input, textarea {z-index: 2; position:relative}
          </STYLE>
    
    オーバーラップの問題を起こしそうな特定のものだけを変えるためにクラスを使いたくなるかもしれないが,これが,そのページにある"すべての"アンカータグ,入力タグに影響することに注意しなければならない.マウスクリックを要する他の内容があれば,このリストに他のタグを同様に含めてもよい.

  • TeXはx^\frac{1}{2}のような処理を行うが,jsMathはこれを処理しない.これは,TeXが上付き文字,下付き文字を処理するときに,元のコマンドになるまでマクロを展開するからである.しかし,jsMathはTeXの完全なマクロ言語を実装せず原型という同じ概念を持たないからである(jsMathのほとんどはマクロというよりは原型として実装されている).解決策は指数のまわりにブレース { } を使用することである:x^{\frac{1}{2}}
    現在のjsMath v3.2にアップデイトすれば,jsMathはx^\frac{1}{2}を(他の幾つかのマクロとともに)特別なケースとして処理する.

  • TeXコマンドの\eqalignno\leqalignno は右または左に行番号を付けず,その代わりに数式の残りから切り離した別の欄に置く.jsMathの限界のために,いずれも行番号は右に置かれる(これは将来のリリースにおいて修理されるだろう).

  • \noalign{} コマンドは \vskip\vspace を処理するだけで,任意の内容でなく配列や配置にスペースを挿入することだけに使用される(将来のリリースにおいて修理されるかもしれない).