개별 번호가 지정된 여러 열의 개별 방정식

개별 번호가 지정된 여러 열의 개별 방정식

짧은 방정식이 여러 개 있는데 이를 두 개의 열에 표시하고 싶습니다. 기본적으로:

A = B (1) || C = D (2)

E = F (3) || G = H (4)

나는 먼저 flalign환경을 시험해 보았지만(나는 이것을 선호 align하지만 꼭 필요한 것은 아닙니다) 내가 원하는 방식으로 방정식의 번호를 매길 수 없었습니다. 환경 align은 모든 행을 하나의 방정식으로 처리합니다.

예:

\documentclass{article}
\usepackage{mathtools}
\usepackage{amsmath}

\begin{document}
\begin{flalign}
A = & B & C = & D \\
E = & F & G = & H
\end{flalign}
\end{document}

또 다른 접근 방식은 강제로 열 나누기를 사용하는 간단한 multicolumn환경이었습니다.

\documentclass{article}
\usepackage{mathtools}
\usepackage{amsmath}
\usepackage{multicol}

\begin{document}
\begin{multicols}{2}
\begin{align}
A = & B \\
E = & F
\end{align}
\columnbreak
\begin{align}
C = & D \\
G = & H
\end{align}
\end{multicols}

\end{document}

그러나 여러 가지 문제가 있습니다.

  1. 방정식의 위치가 수직으로 잘못된 것 같습니다.
  2. 번호 매기기는 가로가 아닌 세로로 진행됩니다(이것은 나에게 허용됩니다).

이에 대한 도움을 주시면 감사하겠습니다.

답변1

나중에 참조하려는 경우에만 방정식에 번호를 매겨야 한다고 생각합니다. 따라서 이 철학에 따라 방정식 번호를 삽입하고 레이블도 만드는 매크로를 정의하는 것은 어떨까요?

\newcommand\Label[1]{&\refstepcounter{equation}(\theequation)\ltx@label{#1}&}

이것은 먼저 equation카운터를 증가시키고 인쇄한 다음 레이블을 만드는 데 몇 가지 트릭이 있습니다(amsmath 환경은 여러 레이블이 한 줄에 나타날 때 오류 메시지를 인쇄하므로 이를 회피해야 합니다). 때문에 @이것은 내부에 포장되어야 합니다 \makeatletter...\makeatother.

&아마도 현명하지 못할 수도 있지만 매크로 내부에 를 포함시켰 으므로 가 \Label항상 환경과 같은 내부에서 사용될 것이라고 암시적으로 가정했습니다. 환경이 추가 레이블을 제공하는 것을 원하지 않기 때문에 align*참고하세요 . *반면에 align*오류 발생을 방지하려면( align*방정식 번호를 억제하므로) 약간의 추가 노력이 필요하므로 이 매크로는 ams 정렬 환경 외부에서는 작동하지 않습니다.

이 매크로를 사용하면 다음이 제공됩니다.

여기에 이미지 설명을 입력하세요

전체 코드는 다음과 같습니다.

\documentclass{article}
\usepackage{mathtools}
\usepackage{amsmath}
\makeatletter
\newcommand\Label[1]{&\refstepcounter{equation}(\theequation)\ltx@label{#1}&}
\makeatother
\begin{document}
\begin{align*}
  A &= B \Label{one}& C &= D \Label{two}\\
  E &= F \Label{three}& G &= H \Label{four}
\end{align*}
See equations \ref{one}, \ref{two}, \ref{three} and \ref{four}.
\end{document}

위에서 말했듯이 두 개의 &를 매크로 안에 넣는 것은 \Label환경의 일부 구조를 숨겨 align*결국 누군가를 혼란스럽게 할 수 있으므로 현명하지 못할 것입니다.

Btw, 이것은 flalign*환경에서도 똑같이 잘 작동합니다.

답변2

답변에 댓글을 추가할 수 없어서 \Label첫 글자만 사용하는 것과 비슷한 문제가 있는 다른 사람에게 답변으로 추가합니다.

내부에서 적절하게 확장될 수 있도록 \tmpLabel프리미티브를 사용하여 더미 변수를 추가했습니다 .\def\ltx@label

\makeatletter
\newcommand{\allignLabel}[1]{&\refstepcounter{equation}(\theequation)\def\tmplab{#1}\ltx@label\tmplab&}
\makeatother

이에 대한 더 우아한 해결책이 있다고 확신하므로 적절한 해결책으로 이 답변에 의견을 제시하거나 편집하십시오.

관련 정보