数式の垂直ぞろえ

数式の垂直ぞろえ

- 加藤 樹 の投稿
返信数: 3

cloudlatexでceoを用いて数学のプリントを作成しています。

以下の\begin{align*}~\end{align*}内で行頭を揃えるために&をつけていて、最後の2行の数式内の=の位置も揃えたいと考えているのですが、うまくいくやり方が思いつかず質問させていただきます。



\documentclass[fleqn,b5paper,12Q]{jsarticle}

\usepackage{multicol}

\usepackage{amsmath}
\usepackage[dvipdfmx]{graphicx}
\usepackage{float}
\usepackage{txfonts} %設定部分
\usepackage{listings, jlisting}
\usepackage{waku,ceo}
\usepackage[margin=5truemm]{geometry}
\renewcommand{\baselinestretch}{1.15}
\pagestyle{empty}
\begin{document}
\begin{align*}
\kakkosan\: &1\leq k \leq n を満たす自然数kについて\\
&k\comb{n}{k}=k\cdot\frac{n!}{k!(n-k)!}=n\cdot\frac{(n-1)!}{(k-1)!(n-k)!}\\
&=n\cdot\frac{(n-1)!}{(k-1)!\{n-1-(k-1)!\}!}=n\comb{n--1}{k-1}\: 」\:\setlength{\fboxsep}{0cm}\fbox{1点}\\
&よって\sum\limits_{k=1}^{n}k\comb{n}{k}=\sum\limits_{k=1}^{n}n\comb{n-1}{k-1}=n\sum\limits_{k=0}^{n-1}\comb{n-1}{k}=n\cdot2^{n-1}\: 」\:\setlength{\fboxsep}{0cm}\fbox{1点}\\
&(\eqref{E1} にx=1を代入の場合,上と合わせて \setlength{\fboxsep}{0cm}\fbox{2点}) \\
&ゆえに \sum\limits_{k=1}^{n}k^2\comb{n}{k}&=\sum\limits_{k=1}^{n}k(k-1)\comb{n}{k}+\sum\limits_{k=1}^{n-1}k\comb{n}{k}\: 」\:\setlength{\fboxsep}{0cm}\fbox{1点}\\
&=n(n-1)\cdot2^{n-2}+n\cdot2^{n-1}
\end{align*}

\end{document}

加藤 樹 への返信

Re: 数式の垂直ぞろえ

- 和田 勇 の投稿
  • まだ、個人的には満足いかないのですが ... 解答案のたたき台です(添付ファイルを参考にしてください)
  • 1\leq k \leq n を満たす自然数kについて

    これは長すぎるので 以下のようにしたら良いかもしれません

      \intertext{
        \kakkosan\:
        $1\leq k \leq n$ を満たす自然数kについて
        }
    
  • 全体的にですが align 環境では 「&」で整列しますので、「&」のでのカラム場所がわかるように以下のように表現し直しました。

        ゆえに
        &
        &
        & \sum\limits_{k=1}^{n}k^2\comb{n}{k}
        & =
        & \sum\limits_{k=1}^{n}k(k-1)\comb{n}{k}
          +\sum\limits_{k=1}^{n-1}k\comb{n}{k}
          \: 」\:\setlength{\fboxsep}{0cm}\fbox{1点}
        \\
    
  • 上記の補足

    • 長い数式表現ですとどこに & があるか分かり難いので、「&」で改行した方が読みやすくなり、どのカラムのグループかも分かりやすくんると思います。

    • 今回の解答案では空白が入って良さそうな演算子のところで適宜改行しています。

加藤 樹 への返信

Re: 数式の垂直ぞろえ

- 北見 けん の投稿
どうもalign環境の機能と使い方を誤解なさっているのではないかと思います。
「行頭を揃えるため」であれば、align環境は不用です。

$ 数式1 $\\
$ 数式2 $\\

のように、数式を書いて改行するだけで行頭は揃うと思います。
ただこれだと数式内の分数やΣ記号がテキストスタイルで小さくなってしまうので、
ディスプレイ数式のように大きくしたい場合は

$\displaystyle 数式1 $\\
$\displaystyle 数式2 $\\

のように \displaystyle を適用します。

align環境はひとまとまりの数式を等号などで位置を揃えて並べる環境で、
中には数式だけが入って地の文は入れないように使います。
地の文を挟んだうえで、その上下の数式の位置を地の文をまたいで揃えたい場合には、
地の文だけ \intertext{地の文} のように指定します。
サンプルの文では、冒頭の「1\leq k \leq n を満たす自然数kについて」とか、
途中の「(\eqref{E1} にx=1を代入の場合,上と合わせて ・・・」をまたいで
その上下の数式の位置を揃えようというわけではなさそうですし、
揃えたいのは行頭だけのようでもありますし、align環境を使う意味がなさそうです。
(地の文を数式中に収めるようなことをしない場合は、
 例えば「自然数kに」のところを「自然数$k$に」のように変数を数式として扱います)

「最後の2行の数式内の=の位置も揃えたい」というのは、
最後の数式で、一つのΣ記号を二つのΣ記号の項に分けるところの等号と、
その次の、和を計算してしまってΣ記号を解消するところの等号とを、
縦に並べて揃えたいということですね?
つまり、サンプル冒頭の数式のところでは数式の改行後に行頭でそろえているのに、
こちらの最後のほうは行頭でなく等号で揃えるという意図でしょうか?
もしそうなら、それこそalign環境の出番です。

\begin{align*}
\sum &= \sum + \sum \\
&=n(n-1)...
\end{align*}

のようにすると揃います。
ただし、align環境はディスプレイ数式を作るための環境なので、
サンプルの「ゆえに$\sum =...」のように、
最初の行が地の文の途中から始まるような使い方はしません。
地の文の「ゆえに」のあとで改行されて「\sum &= 」の数式がディスプレイされることになります。

プリントの解答の場合は、紙面の大きさなどのレイアウト的な制約があって
細かく調整する必要がありそうですから、
他にもこまごまとした対応が必要になるかもしれません。
何かわからないことがあれば追加で訊いてみてください。
加藤 樹 への返信

Re: 数式の垂直ぞろえ

- 帯田 木偶太 の投稿
提示されたソースを見るに、align* 環境の冒頭で \kakkosan がきて、
その後の行の第 1 列がことごとく空であるところから、
括弧囲みの数字を左に突き出させて、以降のテキスト(非数式部分)を
左端に揃えたいという意図のように思われます。
だとすれば、align* 環境等の数式環境で対応するのは相当強引な手口で、
通常ならリスト系の環境(特に enumerate 環境)を使う(その上で、
番号の付き方や揃え位置の寸法等を工夫する)ものだと思いますが、
そういったアプローチが取れない状況だと云うことでしょうか?

ちなみに、enumerate 環境を使えば、次のように、そこそこ素直な
ソースになると思います。
        ※      出力上 k\comb{n}{k} の類いがk_{n}\mathrm{C}_{k} と
                見分けが付かないとか、気になるところは残っていますが…。

\documentclass[fleqn,b5paper,12Q]{jsarticle}
\usepackage{multicol}
\usepackage{amsmath}
\usepackage[dvipdfmx]{graphicx}
\usepackage{float}
\usepackage{txfonts} %設定部分
\usepackage{listings, jlisting}
        \usepackage{waku,ceo}
        \usepackage[margin=5truemm]{geometry}
\renewcommand{\baselinestretch}{1.15}
\pagestyle{empty}
\renewcommand*{\labelenumi}{(\theenumi)}
\begin{document}
\begin{enumerate}
                \item
                        some text
                \item
                        some text
                \item
                        $1\leq k \leq n$ を満たす自然数$k$について
                        \begin{align*}
                                k\comb{n}{k}&=k\cdot\frac{n!}{k!(n-k)!}=n\cdot\frac{(n-1)!}{(k-1)!(n-k)!}\\
                                &=n\cdot\frac{(n-1)!}{(k-1)!\{n-1-(k-1)!\}!}
                                =n\comb{n--1}{k-1}\:\mbox{」 \setlength{\fboxsep}{0cm}\fbox{1点}}
                        \end{align*}
                        よって
                        \begin{align*}
                                \sum\limits_{k=1}^{n}k\comb{n}{k}
                                &=\sum\limits_{k=1}^{n}n\comb{n-1}{k-1}
                                =n\sum\limits_{k=0}^{n-1}\comb{n-1}{k}=n\cdot2^{n-1}
                                \:\mbox{」\setlength{\fboxsep}{0cm}\fbox{1点}}
                        \end{align*}
                        (\eqref{E1} に$x=1$を代入の場合,上と合わせて {\setlength{\fboxsep}{0cm}\fbox{2点})}\\
                        ゆえに
                        \begin{align*}
                                \sum\limits_{k=1}^{n}k^2\comb{n}{k}
                                        &=        \sum\limits_{k=1}^{n}k(k-1)\comb{n}{k}
                                                +\sum\limits_{k=1}^{n-1}k\comb{n}{k}
                                                \:\mbox{」\setlength{\fboxsep}{0cm}\fbox{1点}}\\
                                        &=        n(n-1)\cdot2^{n-2}+n\cdot2^{n-1}
                        \end{align*}
\end{enumerate}
\end{document}