一般フォーラム

長い数式を折り返したい.

長い数式を折り返したい.

by matushiro 97 -
Number of replies: 7
添付のtestSplit01の数式が長いので折り返したくsplitを使いたいのですがtestSplit02うまくいきません.どこが間違っているでしょうか?
In reply to matushiro 97

Re: 長い数式を折り返したい.

by 和田 勇 -
添付されているものを見ると単に記述ミスだけであって、
サブジェクトとは直接関係ないように思いますが ...

そうそう ws-ijtaf.cls が同梱されていなかったので探したら以前質問された時のものだと思い流用しました。

さてログをよくみましょう。

Runaway argument?
{split] \tilde {\mathcal {Y}}\left ( y \right ):=\left \{ \tilde {Y}\ge \ETC.
! Paragraph ended before \begin was complete.

上記のログを見れと「{」と「]」 で囲っているのが原因。
差分を載せておきます。

diff --git a/testSplit02.tex b/testSplit02.tex
index 98e428f..7ba8e55 100755
--- a/testSplit02.tex
+++ b/testSplit02.tex
@@ -4,9 +4,9 @@
\begin{document}

\begin{equation}
-\begin{split]
+\begin{split}
\tilde{\mathcal{Y}}\left( y \right):=\left\{ \tilde{Y}\ge 0;\tilde{Y}=y\text{ and }\!\!~\!\!\text{ }\tilde{X}\tilde{Y}={{\left( {{{\tilde{X}}}_{t}}{{{\tilde{Y}}}_{t}} \right)}_{0\le t\le T}}\text{ is a super martingale for every }\tilde{X}\in \tilde{\mathcal{X}}\left( 1 \right) \right\}.
-\end{split]
+\end{split}
\end{equation}

\end{document}
In reply to 和田 勇

Re: 長い数式を折り返したい.

by matushiro 97 -
和田さま
ありがとうございました.
{]を{}に修正することで表示されるようになりましたが,番号が2行目にくるのでもっと見栄えよくしたいのです.
自動的に改行してくれると期待したのですが,数式自体が1行に収まる場合はsplit命令では改行してくれないのですね.

"is a super martingale for every"の適当なところで改行し,2行目が1行目の\tilde{Y}にそろうようにするにはどうすればいいでしょうか?

よろしくお願いします.

In reply to matushiro 97

Re: 長い数式を折り返したい.

by 和田 勇 -
\begin{split} ...\end{split} とくくっただけで良しなにというわけには行きません。「長い数式 split」などで Web検索して見ましょう。
例えば以下の URL を見て勉強しましょう。

  http://www.irohabook.com/latex-split
  LaTeXのsplitで数式モード内の長い数式を折り返す

揃えたいところの直前に「 &」 を入れ、
折り返したいところに「 \\」 を 。。。
例えば 。。。

\begin{split}
...... & \tilde{Y} ....\\
& \text{ is a super martingale for every }...\\
\end{split}

てな感じに書き換えればできると思います。頑張ってください。
In reply to 和田 勇

Re: 長い数式を折り返したい.

by matushiro 97 -
和田様
ありがとうございます.
自分でもいろいろ調べて,折り返すところに強制改行コード\\,
そろえたい位置に&まではわかったのですが,\\をいれただけでエラーが発生しました.
エラー原因をきりわかるために
\\だけ追加の場合,
&と\\を追加の場合,
などいろいろな組み合わせで試したのですが\\の挿入が原因でエラーが発生していると思われます.
添え字やチルダがついた複雑な数式の場合は,他の記号とのペアリングが変則的になり挿入した\\を強制改行として認識するのに失敗しているように見えます.添付のファイルを実行していただき,一時的に&と\\を外すとうまくいくので,そのことが確認できると思います.

In reply to matushiro 97

Re: 長い数式を折り返したい.

by 和田 勇 -
ログのエラーメッセージを読みましたか?

「 Extra }, or forgotten \right.」

とのこと。これを貼り付けて検索すればいくつか情報が出てきますが、
対となる 「}」や「\right.」忘れているんじゃないの?ということ。 https://tex.stackexchange.com/questions/49890/linebreak-between-left-and-right にあるような \right. とか \left. のような対応が \left\{ \right\} でどうするかすぐには調べれなかったので
\left\{ と\right\} は \\ が途中で入らないという意味で同一行にしないようにする解法例を考えて見ました。

「\left\{ \right\}」 の扱いと 「is a super 云々」のコメントをどうするかによりますが、\left\{ と \right\} の外にするなら

\begin{split}
.... & := \left\{ \tilda{Y} ... \right\} \\ %% 同じ行内で
& \text{ is a super ...}\\ %% コメントは外だし
\end{split}


あるいは中に入れたければ split を以下のように入れ子にするとかかな

\begin{split} %%% 外側の split
..... & := \left\{
\begin{split} %%% 内側の split
\tilda{Y} .... \\
\text{ is a super ...}\\ %% コメント内包
\end{split} %%% 内側の split 終了
\right\}\\
\end{split} %%% 外側 split 終了
In reply to 和田 勇

Re: 長い数式を折り返したい.

by matushiro 97 -
山田様

丁寧なご説明ありがとうございました。
「 Extra }, or forgotten \right.」
とのこと。これを貼り付けて検索すればいくつか情報が出てきますが、
こういう使い方があることを初めて知りました。
「\left\{ \right\}」 の扱いと 「is a super 云々」のコメントをどうするかによりますが、
「is a super 云々」は集合の定義ですので外にはできません。
あるいは中に入れたければ split を以下のように入れ子にするとかかな
\\が発生する部分を先に処理して処理結果を 外側のsplit環境の引数にするということだと理解しました。
こういうやり方があるのですね。Texの内部構造を垣間見た気がします。
山田様の助言していただいたコードを参考に修正したのですがうまくいきませんでした。
それで色々と調べて\right.や\left.が閉じ命令として使えることが判明したのでそれを使っていろいろとやってみました。
指定位置で2つの行を合わせるということや、数式番号を2行目だけに出力するということはできていませんが、途中経過の報告です。

今後ともご指導お願いいたします。