jlreq.clsではpmatrixやcases環境等の括弧が大きいものとなってしまう

jlreq.clsではpmatrixやcases環境等の括弧が大きいものとなってしまう

- 村岡 の投稿
返信数: 15
タイトル通りなのですが,jlreq.clsではpmatrixやcases環境等の括弧が,その中身と比べて不釣り合いな大きいものとなってしまいます.
これは以下のようなコードで容易に再現できるはずです.

\documentclass{jlreq}
\usepackage{luatexja}
\usepackage{amsmath}
\begin{document}
\begin{equation}
  \begin{pmatrix}
    x \\ y
  \end{pmatrix}
\end{equation}

\begin{equation}
  \begin{cases}
    x \\ y
  \end{cases}
\end{equation}
\end{document}

baselineskipの問題なようにも思えるのですが(的外れでしたら申し訳ありません),LaTeXに疎く,どう対処すべきなのか皆目見当もつかない状況です.
適切な大きさの括弧が選択されるように修正するにはどうすれば良いのでしょうか.
是非知恵をお貸しください.

なお,普段はLuaLaTeXで処理していますが,本件はpLaTeXやupLaTeXでも発生します.
よろしくお願いいたします.
村岡 への返信

Re: jlreq.clsではpmatrixやcases環境等の括弧が大きいものとなってしまう

- 和田 勇 の投稿
いくつか方法があるようですが。

以前このフォーラムで質問があったものでは以下のようなものがありましたが
        equnarry環境の上下のアキの調整について
        https://okumuralab.org/tex/mod/forum/discuss.php?d=3174&parent=19035

これだと pmatrix はやや制御できるものの caces にはあまり効果がないので
以下のではどうでしょうか

      行間の調整
      http://ideas.paunix.org/latex/latex_6_bodytext.htm

以上のケース他をテストしたサンプルを添付しておきます。
和田 勇 への返信

Re: jlreq.clsではpmatrixやcases環境等の括弧が大きいものとなってしまう

- 北見 けん の投稿
\abovedisplayskip などの TeX のプリミティブパラメータは、
ディスプレイ数式全体の上下に置かれるアキですね。
行列類のLaTeX環境の行間には影響はないはずです。
和田 勇 への返信

Re: jlreq.clsではpmatrixやcases環境等の括弧が大きいものとなってしまう

- 村岡 の投稿
ありがとうございます.
setspace.styを利用した方針も検討してみます.
村岡 への返信

Re: jlreq.clsではpmatrixやcases環境等の括弧が大きいものとなってしまう

- 奥村 晴彦 の投稿

LaTeXの数式はbaselineskipが12ptくらいのときに最適になるようにできているので、jsarticleなどは \everydisplay\narrowbaselines を入れているんですが、jlreqはそうなっていないんですよね。

奥村 晴彦 への返信

Re: jlreq.clsではpmatrixやcases環境等の括弧が大きいものとなってしまう

- 村岡 の投稿
奥村先生,ありがとうございます.なるほど,それが原因なのですね.
奥村 晴彦 への返信

Re: jlreq.clsではpmatrixやcases環境等の括弧が大きいものとなってしまう

- 阿部 紀行 の投稿
デザインに関わる部分は基本的にいじらないようにしてるんですよね…….
阿部 紀行 への返信

Re: jlreq.clsではpmatrixやcases環境等の括弧が大きいものとなってしまう

- 北見 けん の投稿
そうですよね。jlreq に限らず、article や jarticle でも、
行列内の行送りは地の本文の行送りと同じになっていて、
js* だけは本文に比べて行列内で狭くしてあるということですね。

ただ、article だけ他のものよりデフォルトの行送りが狭いので
それに合わせて行列のほうも狭くなっていますね。
結果、article と js* は行列がコンパクトに見えて、
jlreq や jarticle は行列が大きく見えることになっていますね。

別枝の投稿にも書きましたが、
行列内だけ変えたいとき、LaTeX では \arraystretch を使えるようになっています。
https://okumuralab.org/tex/mod/forum/discuss.php?d=3465#p21122

js* で行列内を狭くするときにLaTeXで用意されているこの仕組みを使わずに
行列内部で行送り自体を狭くしてしまうようにしたのには、
どんな理由があるのでしょうか?
北見 けん への返信

Re: jlreq.clsではpmatrixやcases環境等の括弧が大きいものとなってしまう

- 奥村 晴彦 の投稿
> js* で行列内を狭くするときにLaTeXで用意されているこの仕組みを使わずに
> 行列内部で行送り自体を狭くしてしまうようにしたのには、
> どんな理由があるのでしょうか?

\arraystretch は行列だけですよね。元のご質問にある cases も含め、数式すべてのバランスをオリジナル通りにするために、このようになっています。
奥村 晴彦 への返信

Re: jlreq.clsではpmatrixやcases環境等の括弧が大きいものとなってしまう

- 北見 けん の投稿
なるほど。そういうことなのですね。

LaTeX 本流のほうで cases に決め打ちで \def\arraystretch{1.2} のように仕込まずに、
独立した \casesstretch なんかのパラメータを用意してくれていれば、
どのクラスファイルでも統一的な扱いになってよかったのかなと、
私の後知恵ではそう思えました。
行列と場合分けでは、組版上は同じ機能を流用して作成できそうですが、
表現するものの論理的な意味合いは異なりますから、
見た目も別々に制御できた方がよさそうです。

ご回答いただきありがとうございました。
村岡 への返信

Re: jlreq.clsではpmatrixやcases環境等の括弧が大きいものとなってしまう

- 北見 けん の投稿
\arraystretch の調整は効かないでしょうか?

\begin{equation}
  \def\arraystretch{0.7}
  \begin{pmatrix}
    x \\ y
  \end{pmatrix}
\end{equation}
北見 けん への返信

Re: jlreq.clsではpmatrixやcases環境等の括弧が大きいものとなってしまう

- 北見 けん の投稿
> \def\arraystretch{0.7}

うっかり TeX の書き方をしてしまいました。
LaTeX だと

\renewcommand\arraystretch{0.7}

ですね。
北見 けん への返信

Re: jlreq.clsではpmatrixやcases環境等の括弧が大きいものとなってしまう

- 和田 勇 の投稿
北見さん、ありがとうございます。

\renewcommand\arraystretch{0.7}

これって pmatrix に効果があると考えて良いですよね。
和田 勇 への返信

Re: jlreq.clsではpmatrixやcases環境等の括弧が大きいものとなってしまう

- 北見 けん の投稿
そうですね。\arraystretch は行列系環境のパラメータマクロです。
一般に、LaTeXの表組環境では \baselineskip の代わりに \strutbox を支柱として使いますが、
数式の行列系環境では \strutbox の高さ深さにさらに arraystretch を掛けたものを使うようになっています。

\strutbox の高さ深さは、
行送りの大きさを LaTeX の標準的な方法で設定していれば、
更新されていることが期待できます。

あと、cases 環境については、
環境定義の中に \arraystretch を 1.2 にして行間を広げる設定が組み込まれているので、
環境自体を再定義するなど、もうひと手間必要になるかもしれません。
北見 けん への返信

Re: jlreq.clsではpmatrixやcases環境等の括弧が大きいものとなってしまう

- 村岡 の投稿
こちらの返信,気づけておりませんでした.申し訳ありません.
>一般に、LaTeXの表組環境では \baselineskip の代わりに \strutbox を支柱として使いますが、
>数式の行列系環境では \strutbox の高さ深さにさらに arraystretch を掛けたものを使うようになっています。

そうだったのですね.不勉強で大変お恥ずかしいのですが,今初めて知りました.
北見 けん への返信

Re: jlreq.clsではpmatrixやcases環境等の括弧が大きいものとなってしまう

- 村岡 の投稿
pmatrixには有効ですが,casesには無効でした.
これはamsmath.styの\env@casesの定義内で
\def\env@cases{%
. . .(略)
\def\arraystretch{1.2}%
. . .(略)
}
とされているためかと思います.ここも変えるようにすれば調整可能ですが,mathtools.styのdcasesなど,括弧が大きくなりすぎてしまうものは他にも多くあるので,やはりbaselineskipの調整をしなければならないのではないかと思い,質問させていただきました.
しかしながら,私はjlreq.styで使われているexpl3?(間違っていたら申し訳ありません)という言語は読めないので,どうすればよいか見当がつかない状態でして,そこで知恵をお借りできればと思い,質問させていただいた次第です.