Re: jsarticle/jsbook + amsmathにおける数式と本文の間隔

名前: M. Hasumi
日時: 2010-03-02 16:06:01
IPアドレス: 157.80.76.*

>>54622 毎回とちってばかりいて,お恥ずかしいです. あきらめずにその後また少し調べましたのでご報告いたします. jsclasses と amsmath の組合せを実験してみました. 途中は省略して現在までの結論から書きます. amsmath で書くと行送りに間延びが起る訳ですが, それには  1)latex の数式内行送り 14.4pt に対し,amsmath は    15pt であること(標準 12pt のとき).  2)amsmath の行送り(例えば、 15pt)の指示に対し,   画面表示が少し過大に反応しているらしいこと. の2種類があるようです.  1)だけならば,20 % 増が 25 % 増になっているだけ ですから,0.8 を掛ければいい訳で, \openup でやれば,「 \openup 0.8\jot 」で解決するように思います.  しかし,2)は原因不明で普通ユーザーの小生には無理ですので, 事実だけを書いておきます.お気づきだったかも知れませんが. ただ,この過大表示がパソコンによらずにある一定の割合で 起っているのならば,その比率を逆に掛ければ直すことはできる訳で, プログラムを知らなくても間に合せ程度は出来そうです. ということで,また変な実験をしてみます. 間違う可能性も大いにあります. jsarticle で amsmath を使って,補正なしで例えば align の式を書き, その中で \baselineskip を表示させますと.15.0pt と表示 されます.これは \narrowbaselines の基本値 12pt の 1.25 倍で, align 文の実際の行送り値です.align 文の中では \baselineskip が実際の行送り値を表すようで,ここは eqnarray と違います. ところが,画面上の行送りは約 15.6pt となっています. (正確に測るには,align 文を何段か重ねたものを測って 平均をとればよい.上の値は10段重ねて出しました.下の サンプルをご覧下さい) 従って,画面上で 14.4pt を実現するソフト上の行送り値は 14.4 x 15/15.6 = 13.84......(pt) これを \openup <a>\jot で実現するには,      (1 + a/4) x 12 = 13.84...... a = 0.62 (註: amsmath の定義では \jot は \baselineskip の 1/4 です) それで,jsclasses で amsmath を使うための補正を \openup マクロを使って書いてみました.といっても、実質は 0.62 という数を入れただけです. あまり当てにはなりませんが,とりあえず. ---------------- 実験サンプル ----------- 上記の補正をした上で,align 文を 10 段重ね,144pt の 縦線を引きました.これがもし合っていれば補正は成功です(?) もしダメなときは,合うように 0.62 を変更してみて下さい. それでもダメなら,このプランは無視して下さるよう お願いします. \documentclass[reqno]{jsarticle} \usepackage{amsmath} \makeatletter \def\spread@equation{\reset@strutbox@ \openup.62\jot \let\spread@equation\@empty} \let\@spread@equation\spread@equation \makeatother \begin{document} まず,eqnarray で式を書きます.横線はベースライン, 縦線の長さは数式の実際の行送り 14.4pt です. \begin{eqnarray}\label{eq:1} (\the\baselineskip)\quad x &=& a, \rlap{\vbox to 0pt{\rule{10pt}{.4pt}}}\\ x &=& a, \rlap{\vbox to 0pt{\rule{10pt}{.4pt}\vss\rule{1pt}{14.4pt}}}\label{eq:2} \end{eqnarray} 同じものを align で 10 段重ねて書きます. 縦線の長さは数式の行送りの 10 倍で 144pt です. \begin{align} (\the\baselineskip)\quad x &= a, \rlap{\vbox to 0pt{\rule{10pt}{.4pt}}}\\ x &= a,\rlap{\vbox to 0pt{\rule{10pt}{.4pt}}}\\ x &= a,\rlap{\vbox to 0pt{\rule{10pt}{.4pt}}}\\ x &= a,\rlap{\vbox to 0pt{\rule{10pt}{.4pt}}}\\ x &= a,\rlap{\vbox to 0pt{\rule{10pt}{.4pt}}}\\ x &= a,\rlap{\vbox to 0pt{\rule{10pt}{.4pt}}}\\ x &= a,\rlap{\vbox to 0pt{\rule{10pt}{.4pt}}}\\ x &= a,\rlap{\vbox to 0pt{\rule{10pt}{.4pt}}}\\ x &= a,\rlap{\vbox to 0pt{\rule{10pt}{.4pt}}}\\ x &= a,\rlap{\vbox to 0pt{\rule{10pt}{.4pt}}}\\ x &= a\rlap{\hspace{10pt}\vbox to 0pt{\rule{10pt}{.4pt}\vss\rule{1pt}{144pt}}} \end{align} これで,行送り 14.4pt が実現されていることが確認できたでしょうか?? \par なお,( ) の中の数値は,eqnarray および align が認識している baselineskip の値です. \end{document}

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます。適宜改行を入れてください)