名前: M. Hasumi 日時: 2010-02-23 18:32:01 IPアドレス: 157.80.76.*
>>54553 ご丁寧なご返事恐縮いたしました. 実はその後実験をしまして,早とちりに気がつきました. 大変失礼しました.今日はお詫びと訂正を書かせていただきます. 問題は別行立て数式の上下の行送りの問題でしたが、 (実験の結果) 1)数式の上下に加わる displayskip はどちらも 数式の文に付属するものではなくて 周囲のテキスト文に付属するものでした. 2)行送りについては, 数式の「上側」の行送りは「数式のもの」 数式の「下側」の行送りは「テキスト文のもの」 となるようです. 実験の方法は次のようにしました: \normalsize の定義の中で 例えば \abovedisplayskip 10\p@ .... とあるところを \abovedisplayskip 0.5\baselineskip と変更します.そうすると,\baselineskip が違えば displayskip は 丁度半分で違ってきますから、比較しやすいと思いました. 後は、式を書いてコンパイルしてみるだけです. また、文字を書いたのでは間隔が測りにくいですから、 baseline にそった細い線を引きました.また、高さを 測るには \rule{1pt}{15pt} などという縦線を作り, それを \rlap 式のものを上方向に向けたものの中に入れて baseline の上に置きました.その結果が以上でした.手違いをしている かも知れません. それから,問題とは違いますが、実験の途中で気がつきました ので,ついでに申し上げます.ご存知かとも思いますが、念の為. 数式の上下の行送り幅に触らずに数式内の行送りだけを変更する一つの方法です. LaTeX では別行立て数式の中で改行をすると,その行送りは テキスト文の改行幅の 1.2 倍くらいにより広くなります. しかし,これは \baselineskip が変ったためではありません. Knuth の TeX Book の第19章では,別行立て数式内の改行幅を増やす問題の 説明があり,\baselineskip は \openup マクロを使って, 例えば 「\openup2\jot」のようにして増やせると書いてあります. 実際,amsmath.sty (version 2.13) には \def\spread@equation{\reset@strutbox@ \openup\jot \let\spread@equation\@empty} \let\@spread@equation\spread@equation という行があって,数式内の行送りを増やしています. 日本語 TeX の場合はどちらかというと,行送りを減らす立場ですから, もちろん \openup -\jot というようにマイナス方向に使えばいいわけです. これは,amsmath.sty と一緒に使わないとダメかも知れませんので, 一般におすすめとは言えません.こんなやり方もありますというだけです. ついでに,実験の例を書いておきます.jclasses との組み合わせですが, \documentclass{jarticle}% {jbook} \usepackage{amsmath} \makeatletter \def\spread@equation{\reset@strutbox@ \openup-.25\jot \let\spread@equation\@empty} \let\@spread@equation\spread@equation \makeatother \begin{document} .............. \end{document} 上の \openup-0.25\jot というところが行送りを変更する目玉で, この 「-0.25\jot」の 0.25 は暫定です.テキスト文の行送りとの関連で 決まりますから,数値をいろいろに変えて,最良の値を探すことになると思います. 但し,上にも書きましたように,これは amsmath で定義がある align, gather など には有効ですが,eqnarray には効力がないようです. また,matrix や cases 文は別の範疇でしょうから,また 行送りの幅も違いますから,こちらは \arraystretch などを使って 別に調整する必要があるでしょう.という訳で,結構手間はかかると思います. 全部を一斉にとなると,jsclasses の方式しかないのではと思っています. 以上、とりあえずその後のご報告まで.
この書き込みへの返事: