array環境で等号を揃えようとするとエラーが出る

array環境で等号を揃えようとするとエラーが出る

- kaji kinako の投稿
返信数: 2
現在、以下のTeXコードでうまくコンパイルできています(このコード自体は他の方が作成したものです)。

\begin{array}{*{20}l}
{Y\left[ n \right] = a + b~X\left[ n \right] + \varepsilon \left[ n \right]} \hfill & {n = 1, \ldots ,N} \hfill \\
{\varepsilon \left[ n \right] \sim {\mathcal{N}}\left( {0,~\sigma^2 } \right)} \hfill & {n = 1, \ldots ,N} \hfill
\end{array}

私は、1番目の式の「=」と2番目の式の「~」を揃えたいと思って以下のようにしました。

\begin{array}{*{20}l}
{Y\left[ n \right] & = & a + b~X\left[ n \right] + \varepsilon \left[ n \right]} \hfill & {n = 1, \ldots ,N} \hfill \\
{\varepsilon \left[ n \right] & \sim & {\mathcal{N}}\left( {0,~\sigma^2 } \right)} \hfill & {n = 1, \ldots ,N} \hfill
\end{array}

ところが、以下のエラーが出てコンパイルできません。

! Missing } inserted.
<inserted text>
}
l.122 {Y\left[ n \right] &
= & a + b~X\left[ n \right] + \varepsilon \left[ ...

美文書作成入門 改訂第7版 5.25節を読んだ限りでは解決できませんでした。お手数をおかけしますがアドバイスをいただきたいです。
kaji kinako への返信

Re: array環境で等号を揃えようとするとエラーが出る

- Yamamoto Munehiro "munepi" の投稿
%#!lualatex
\documentclass{jlreq}
\usepackage{amsmath}
\begin{document}
\section{問題点}
\begin{verbatim}
\begin{equation}
\begin{array}{l}%%<= なぜここを *{20}l にしているのでしょうか?(もちろん、これでも通ると言えば通ります)
{x = y}\\%%<= なぜ {x = y} のように { と } で囲っているのでしょうか?
{y = z}\\%%<= なぜ {x = y} のように { と } で囲っているのでしょうか?
\end{array}
\end{equation}
\end{verbatim}
したがって、当然、以下はエラーとなります。
\begin{verbatim}
\begin{equation}
\begin{array}{lll}
{x &=& y}\\
{y &=& z}\\
\end{array}
\end{equation}
\end{verbatim}

\section{回答例}
\begin{equation}
\begin{array}{lll}
x &=& y\\
y &=& z\\
\end{array}
\end{equation}
しかしながら、$=$で揃えるために、array環境を使うなら、素直にamsmathパッケージのalign環境をつかったほうが良さそうに思いますので、align環境の利用をご一考ください。
\begin{align}
x &= y\\
y &= z\\
\end{align}
\end{document}
Yamamoto Munehiro "munepi" への返信

Re: array環境で等号を揃えようとするとエラーが出る

- kaji kinako の投稿
Yamamoto様

うまくいきました!
{}内では&=&があってもうまくいかないことを知らず、教えていただき大変ありがとうございました。