Re: Omega と amsmath のバグ?(至急にお願い致します)

名前: 本田
日時: 2005-02-20 18:40:39
IPアドレス: 61.124.179.*

>>34555 >Omega と amsmath のバグ?(至急にお願い致します) 至急といわれても・・・ ここはサポートセンタでもなんでもないわけです. フリーソフトはあくまでも自己責任の範囲で使いましょう. ましてや開発途中のOmegaが絡んでいるのならばなおさらです. それに,omega.styを使うのであれば, コンパイルするのはlambdaでしょうから,そういう情報も必須です. #うるさいことをいいつつも・・・ 原因はomega.styの中のOCPとamsmathの (少なくとも私の中では悪評の高い(*1))\resetMathstrut@の中の \textLeftParenの組み合わせだと思います. (*1)ここの掲示板で前にもいろいろありました. omega.styを読み込まなくても,amsmathと omega.styの中での \ocp\BasicLatinTexUni=lat2uni \ocp\BasicLatinUniToFont=uni2lat \ocplist\BasicLatinOCP= \addbeforeocplist 1 \BasicLatinTexUni \addbeforeocplist 1 \BasicLatinUniToFont \nullocplist \pushocplist\BasicLatinOCP を読み込むだけで再現します. これらのOCPのうちの一方だけでもだめです. \textLeftParenの定義でmathcodeやらなんやら \textfontやら直接やっているのが根本的な原因でしょうね. 回避策としては \makeatletter \def\ParenStrutSetup{% \ifnum\mathcode`\( <"8000 %" \mathchardef\std@leftparen=\mathcode`\(\relax%%' \fi \def\textLeftParen{\mbox{$\std@leftparen$}} }% \makeatother を \usepackage{omega,amsmath} のあとにもでいれてみてください. ================== なんか,\meaningの扱いがおかしいような気がします. OCPをよく分かってないのですが,OCPの影響でしょうか? 実際のところ,\textLeftParenの定義を \def\ParenStrutSetup{% \ifnum\mathcode`\( <"8000 \mathchardef\std@leftparen=\mathcode`\(\relax \fi \def\@tempb##1"##2##3{\noexpand\the\textfont"##3\char"}% \edef\textLeftParen{% %%% \expandafter\@tempb\meaning\std@leftparen \relax \the\textfont"0\char"48 \relax }% } のように\meaningを使わない形で直接書いても問題は解消します. そのときに有効なフォントでの数式用の左パーレンを 厳密に引っ張ってくるための細工がamsmathの\ParenStrutSetupだとは 思うのですが,うまく噛み合っていないのかもしれません. amsmathで\std@leftparenを直接使わないでわざわざコードにしてから \textLeftParenを定義しているのはどうしてなのでしょう

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)