方程式の相互参照に関するヘルプ

方程式の相互参照に関するヘルプ

\eqref私は、単に を実行するのではなく、コマンドの使い方を学ぼうとしていますtag{1.1}。そうすれば、戻って番号を振り直す必要がなくなります。問題3bで、私はこう言います。

Now \eq{y(t, \epsilon)= y_0(t) + \epsilon y_1(t) + O(\epsilon^2), \label{eq:aa}}

(\eqは私が定義した略語で、 です\newcommand{\eq}[1]{\begin{align*}#1\end{align*}})。後で戻って と書きますSo we can fill in \eqref{eq:aa}が、問題は次のようになります。

  1. 方程式にラベルを付けない
  2. これを参照する場合、これは最初のタグ付き方程式ですが、(1.2) と呼びます。

診断に役立つよう、私のコードへのリンクをここに示します。https://www.writelatex.com/read/zjhhjpndjpkz

私はあなたの助けに感謝します!

答え1

わかりました。あなたの定義にはいくつか問題があります。

どれでも星付きの数式表示環境は、番号付けを抑制することを目的としています。星付きの環境に を置くことはできます\tag{...}が、番号は自動的に増加しません。ただし、\labelそのようなタグに を置くと、意思\refまたはによって尊重されます\eqref。(\eqref実際には、 a の引数を\ref縦向きにして括弧で囲むだけです。)

次に、 は、align各行に左側と右側の部分がある複数行の式に使用することを目的としています。 多くの人が を\align1 行の表示に使用しますが、複数行の表示の周囲の垂直方向の間隔は 1 行の表示の周囲の垂直方向の間隔とは意図的に異なるため、これは良い考えではありません。 また、行に 2 つの部分 ( で区切られる&) がない場合、構造は水平方向に中央揃えされません。

最後に、環境をコマンドに変換すると、他の人が入力を読んだり解読したりすることが非常に難しくなり、表示資料を長い行に並べるなどの悪い入力習慣につながります。信じてください、これはジャーナル編集者の深刻な損失につながります。

このような省略形を使用して 1 行の番号付き表示を本当に必要とする場合は、次のように実行できます。

\newcommand{\eq}[1]{\begin{equation} #1\end{equation}}

しかし、そうする前によく考えた方が良いでしょう。誰かが、入力環境/エディタに「補完」を使うように説得することを提案しました。これは、多くのより精査しやすいファイルになり、長期的にはデバッグとメンテナンスの効率が向上します。

答え2

リンク先のコードを確認しました。主な問題は、マクロalign*の定義で環境を使用していることのようです\eqalign*環境は、設計上、ない方程式の番号を増分または印刷します。したがって、\labelこの方程式 (または方程式のグループ) に関連付けられた命令は、 によって生成されたものを指すことはありません\eq

その結果、後続の\refまたは\eqref命令はその構造を指しません。代わりに、(??)が出力されるか、または相互参照は、失われた\label命令の前に関連カウンタが最後に増加したオブジェクトを指します。このオブジェクトは、セクション、定理、( を介さずに)「通常の」方法で生成されたその他の方程式\eqなどです。

マクロを次のように定義すると、より良い結果が得られるはずです\eq

\newcommand{\eq}[1]{\begin{equation}\begin{split} #1 \end{split}\end{equation}}

そして、\labelそれに指示を付け加える。

\eq{y(t, \epsilon)= y_0(t) + \epsilon y_1(t) + O(\epsilon^2),} \label{eq:aa}

この設定では、ステートメント\tag内のすべての命令の名前を に変更する必要があることに注意してください。\eq\label

関連情報