行列での\arraystretchの行間幅の調整が効きません

行列での\arraystretchの行間幅の調整が効きません

- DION Emily の投稿
返信数: 9
宜しくお願い致します。

下記で0.5として行間を縮めようとしたのですが,なぜか最後の行間だけしか反応が無く,その他の行間は縮まってくれません。どうすればいいのでしょうか?

\left(\def\arraystretch{0.5}\begin{array}{@{}c@{}c@{}c@{}c@{}c@{}c@{}c@{}}
\ld_\ii & 1 & 0 & 0 & \cdots & \cdots & 0 \\
0 & \ld_\ii & 1 & 0 & & & \vdots \\
\vdots & & & \ddots & \ddots & & 0 \\
\vdots & & & & \ddots & & 1 \\
0 & 0 & \cdots & \cdots & \cdots & 0 & \ld_\ii
\end{array}\right)

あと,時々,行列にて行間ごとに異なる縮度を指定する方法はあるのでしょうか?
あればその例をお教え下さい。
添付 hoge.jpg
DION Emily への返信

Re: 行列での\arraystretchの行間幅の調整が効きません

- 和田 勇 の投稿
\def ではなく ^renewcommand でどうでしょうか

変更が容易に判別できるように 2.5 倍で検証してみました。
 \renewcommand{\arraystretch}{2.5}

参考URL http://tex.stackexchange.com/questions/10985/separate-arraystretch-value-for-every-table

和田 勇 への返信

Re: 行列での\arraystretchの行間幅の調整が効きません

- DION Emily の投稿
ご回答誠に有難うございます。

早速試してみましたが,全く変化無しでした。
DION Emily への返信

Re: 行列での\arraystretchの行間幅の調整が効きません

- 和田 勇 の投稿
1未満にすると、効果がないようですね。
1 でも最後の行はどうやら狭い感じがしますね。
調べてみますが、回答できるかどうか。。。。です。

それと随分前の情報ですが http://www.psy.senshu-u.ac.jp/man/arraystretch.html を参考に調整してみてください。
和田 勇 への返信

Re: 行列での\arraystretchの行間幅の調整が効きません

- 和田 勇 の投稿
アルファベットだけの高さが一様な場合は特に問題ないので、問題の PDF を観察すると vdots ddots があると行間が空いているので ...「http://www.math.kobe-u.ac.jp/~kodama/tips-latex-math-margin.html LaTeX 数式の縦/横の調整」を参考に、問題となる vdots ddots や cdots に fbox でそれらの大きさ特に高さを判別できるようにしてみました。

その結果からの判断ですが、dots dots には上部に余白があるため、結果としてその行の高さを押し上げてしまっているようです。一方、最終行には行の高さを押し上げる要素がないため、他の行間に比べ狭く組版されてしまったようです。

上記の URL で、この対処方法が幾つか記載されていますが、phantom を使って見えない柱を array の各行の先頭に \phantom{\vdots}  を挿入して試したところ、ご要望に添いそうな結果が得られました。検討してみてください。


和田 勇 への返信

Re: 行列での\arraystretchの行間幅の調整が効きません

- 西村 一輝 の投稿
特定の行間を詰めるには、Latexの場合\\[-5pt]などとできます。

$\left(\begin{array}{@{}c@{}c@{}c@{}c@{}c@{}c@{}c@{}}
\lambda_\iota & 1 & 0 & 0 & \cdots & \cdots & 0 \\[-8pt]
0 & \lambda_\iota & 1 & 0 & & & \vdots \\[-8pt]
\vdots & & & \ddots & \ddots & & 0 \\[-8pt]
\vdots & & & & \ddots & & 1 \\[-8pt]
0 & 0 & \cdots & \cdots & \cdots & 0 & \lambda_\iota
\end{array}\right)$

こんな感じでどうでしょうか?
西村 一輝 への返信

Re: 行列での\arraystretchの行間幅の調整が効きません

- DION Emily の投稿
ご回答誠に有難うございます。お蔭様で上手くいきました!

これで大きな行列も思い通りな外観に仕立て上げれそうです。

最後にもう一つだけですが,1行目,2行目,…の行間ごとに調節できる事は分かりましたが,1列目,2列目,…の列間ごとの調整はどうすれば出来るのでしょうか?


DION Emily への返信

Re: 行列での\arraystretchの行間幅の調整が効きません

- 西村 一輝 の投稿
 DION Emilyさんが使っている@{なんとか}は列間に挿入されます。
現在は{}となっていますので、何も挿入されません。
代わりにグルーを挿入すると、列間の間隔が変化します。
例を示します。

$\left(\begin{array}{cc@{a\hskip-5pt}ccccc}
\lambda_\iota & 1 & 0 & 0 & \cdots & \cdots & 0 \\[-8pt]
0 & \lambda_\iota & 1 & 0 & & & \vdots \\[-8pt]
\vdots & & & \ddots & \ddots & & 0 \\[-8pt]
\vdots & & & & \ddots & & 1 \\[-6pt]
0 & 0 & \cdots & \cdots & \cdots & 0 & \lambda_\iota
\end{array}\right)$

これは2列目と3列目の間に、aと負のグルーを挿入する例です。
2列目と3列目が近づき、さらにaが挿入されることが確認できると思います。

全体の列間を調整したい場合は
\arraycolsep=10pt
というようにします。

また、繰り返しは*{n}{位置}とできますので、
これを使えば一行目のccccc が *5cと書けます。
これを使ったほうがスマートです。
最終的に

$\left(\begin{array}{cc@{a\hskip-5pt}*5c}
\lambda_\iota & 1 & 0 & 0 & \cdots & \cdots & 0 \\[-8pt]
0 & \lambda_\iota & 1 & 0 & & & \vdots \\[-8pt]
\vdots & & & \ddots & \ddots & & 0 \\[-8pt]
\vdots & & & & \ddots & & 1 \\[-6pt]
0 & 0 & \cdots & \cdots & \cdots & 0 & \lambda_\iota
\end{array}\right)$


ところで、\lambda_\iotaを再定義しておられると思います。質問時にソースを乗せる場合は独自のマクロは避けた方が良いと思います。