방정식 상호 참조에 대한 도움말

방정식 상호 참조에 대한 도움말

\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각 줄에는 왼쪽 부분과 오른쪽 부분이 있는 여러 줄 표현에 사용됩니다. 많은 사람들이 \align단선 디스플레이를 사용하지만 다중 라인 디스플레이 주변의 수직 간격이 단선 디스플레이 주변의 수직 간격과 의도적으로 다르기 때문에 이는 나쁜 생각입니다. 한 줄에 두 부분이 없으면( 로 구분됨 &) 구조가 수평으로 중앙에 배치되지 않습니다.

마지막으로, 환경을 명령으로 전환하면 입력 내용을 다른 사람이 읽고 해독하기가 훨씬 더 어려워지며 표시 자료를 긴 줄로 실행하는 것과 같은 나쁜 입력 습관으로 이어집니다. 제 말을 믿으십시오. 이는 저널 편집자의 심각한 탈모로 이어집니다.

이와 같은 약칭을 사용하여 한 줄로 된 숫자 표시를 정말로 원한다면 다음과 같이 할 수 있습니다:

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

하지만 그렇게 하기 전에 두 번 생각하는 것이 좋습니다. 누군가 입력 환경/편집기에서 "완성"을 사용하도록 설득할 것을 제안했습니다. 이것이 만든다많이파일을 더 조사하기 쉽고 장기적으로 더 효율적인 디버깅 및 유지 관리가 가능합니다.

답변2

링크에 제공된 코드를 살펴보았습니다. 가장 큰 문제는 align*매크로 정의에 환경을 사용한다는 것입니다 \eq. 그만큼align* 은 설계상 다음과 같습니다.~ 아니다방정식 번호를 늘리거나 인쇄합니다. 따라서 \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

관련 정보