array環境の空白制御

array環境の空白制御

- Ando Ryoya の投稿
返信数: 7
 こんにちは.  jsarticleでの質問です.
 LaTeXのarray環境で余分な空白ができないようにするにはどうすればよいでしょうか.
\begin{array}{rcl}
A&=&B\\
&=&C
\end{array}
とすると,=の位置で揃って出力されますが,=と他の要素の間に空白ができ,単純に
\[D=E\]などの他の数式との整合がとれず,困っています.

  eqnarray環境についてはamsmathを使用してalign環境で解決しますが,array環境については代用法がどうやらなさそうです.
 なお,今回私が出力したいと思っているものは以下です.

\[\left\{\begin{array}{rcl}
A&=&B\\
&=&C
\end{array}\right.\]
 これをうまくeqnarray環境を用いて表せれば問題ないということはわかっているのですが,そちらの方法もうまく行きません.
 解決方法は根本的な解決にせよeqnarrayでの表示方法にせよかまわないので,どなたかご教授いただけると幸いです.
Ando Ryoya への返信

Re: array環境の空白制御

- 前田 一貴 の投稿
amsmath を読み込んで aligned 環境を使うとよいのではないでしょうか.
http://www.biwako.shiga-u.ac.jp/sensei/kumazawa/tex/form021.html
前田 一貴 への返信

Re: array環境の空白制御

- Ando Ryoya の投稿
ありがとうございます. ですが,aligend環境では,
\begin{aligend}
A&=&B\\
&=&C
\end{aligend}において,BとCの長さが異なるとき右寄せになってしまいます.
array環境であれば\begin{array}{rcl}のようにして指定できますが,aligen環境では一部分だけ左寄せ,ほかは中央揃え,などと指定することは可能でしょうか.

Ando Ryoya への返信

Re: array環境の空白制御

- 前田 一貴 の投稿
align 系の環境と (eqn)array では使い方が異なります.

\[
\left\{<br /> \begin{aligned}
A&=B\\
&=C
\end{aligned}
\right.
\]


でご希望通りなのではと思いますが,いかがでしょうか?
Ando Ryoya への返信

Re: array環境の空白制御

- 本田 知亮 の投稿
前田さんご指摘のように
alignedとかのamsmathの一連の別行立て数式の環境を使うのがベストですが,arrayでも制御はできます

\begin{array}{r@{}c@{}l}
A&{}={}&B\\[\jot]
&{}={}&C
\end{array}

なんてすると,=の両端の空きは他と揃います.
ついでに縦方向も合わせました.
本田 知亮 への返信

Re: array環境の空白制御

- Ando Ryoya の投稿
なるほど,解決いたしました.ありがとうございます.
なお,お手数ですが,後学のために\begin{array}{r@{}c@{}l}において,どのような処理をされているのか,ご教授くださると幸いです.
Ando Ryoya への返信

Re: array環境の空白制御

- 前田 一貴 の投稿
私は array 環境は普段使っていないのですが,調べてみると
source2e.pdf の 56.2節 array and tabular environments
に次のようにあります.

> PREAMBLE:
> The PREAMBLE argument of an array or tabular environment can
> contain the following:
> l,r,c : indicate where entry is to be placed.
> | : for vertical rule
> @{EXP} : inserts the text EXP in every column.
>          \arraycolsep or \tabcolsep spacing is suppressed.
> *{N}{PRE} : equivalent to writing N copies of PRE in the preamble.
>            PRE may contain *{N’}{EXP’} expressions.
> p{LEN} : makes entry in parbox of width LEN.

つまり,@ は2つの列の間に入る区切り文字を指定します.
通常だと \arraycolsep の値に基づいたスペースが列の間に入りますが,
@ 指定時はこのスペースが入らなくなるようです.

例えば,

\[
\begin{array}{r@{sss}l}
a&b\\
d&e
\end{array}
\]

などを試すとよくわかると思います.