有没有办法让两个或多个方程式放在一行上,每个方程式单独编号且等号垂直对齐?

有没有办法让两个或多个方程式放在一行上,每个方程式单独编号且等号垂直对齐?

我将从例子开始,以便更容易地解释我所追求的内容。

三个对齐示例

第一个例子展示了我希望如何排列四个方程式。当然,每行等号的垂直对齐是完美的,因为每个等号在对齐结构中都是一行。但是,并非所有四个方程式都可以编号。另一个缺点是,如果不使用 parbox,就无法控制水平扩展。

第二个例子显示了我希望如何对它们进行编号,但是牺牲了每行等号的垂直对齐,因为它们各自有不同的垂直高度。

第三个例子几乎完美。通过交换两个方程式,并按 [b] 对齐 parbox,在这种排列中,高度匹配得更好,但近距离观察,你会发现第二行略有偏差。这还不错,这是我目前使用的解决方案。

在第二个和第三个例子中,水平扩展正是我想要的,由 parbox 宽度控制。

代码如下:

\documentclass[10pt,a5paper]{book}

\usepackage[paperheight=9.5cm,paperwidth=13cm, margin=6mm]{geometry}

\usepackage{amsmath}
\usepackage{mathtools}

\newcommand{\pd}{\partial}
\newcommand{\gep}{\epsilon}
\newcommand{\gm}{\mu}
\newcommand{\gr}{\rho}

\thispagestyle{empty}

\begin{document}

Example 1
\begin{subequations}
\begin{align}
    \vec{\nabla}\times \vec{E} +\frac{\pd \vec{B}}{\pd t} & = 0 &
    \vec{\nabla}\cdot\vec{B} & = 0 \label{eqn:hB} \\
    \vec{\nabla}\cdot\vec{E} &= \frac{\gr}{\gep_0} &
    \vec{\nabla}\times \vec{B} - \gm_0 \gep_0 \frac{\pd \vec{E}}{\pd t} 
        &= \gm_0 \vec{j}\label{eqn:ihB}
\end{align}
\end{subequations}

Example 2

\begin{subequations}
\parbox[c]{\textwidth*7/16}{
\begin{align}
    \vec{\nabla}\times \vec{E} +\frac{\pd \vec{B}}{\pd t} & = 0 \\
    \vec{\nabla}\cdot\vec{B} & = 0 \label{eqn:hB}
\end{align}}
\parbox[c]{\textwidth*7/16}{
\begin{align}
    \vec{\nabla}\cdot\vec{E} &= \frac{\gr}{\gep_0} \\
    \vec{\nabla}\times \vec{B} - \gm_0 \gep_0 \frac{\pd \vec{E}}{\pd t} 
        &= \gm_0 \vec{j}\label{eqn:ihB}
\end{align}}
\end{subequations}

Example 3

\begin{subequations}
\parbox[b]{\textwidth*7/16}{
\begin{align}
    \vec{\nabla}\times \vec{E} +\frac{\pd \vec{B}}{\pd t} & = 0 \\
    \vec{\nabla}\cdot\vec{E} &= \frac{\gr}{\gep_0}
\end{align}}
\parbox[b]{\textwidth*7/16}{
\begin{align}
    \vec{\nabla}\cdot\vec{B} & = 0 \label{eqn:hB} \\
    \vec{\nabla}\times \vec{B} - \gm_0 \gep_0 \frac{\pd \vec{E}}{\pd t} 
        &= \gm_0 \vec{j}\label{eqn:ihB}
\end{align}}
\end{subequations}

\end{document}

AMS 对齐工具可以很好地对一列中彼此上方的多个方程进行水平对齐,也可以对一行中彼此相邻的多个方程进行垂直对齐,但如何使一行上多个方程编号呢?

是否有一种解决方案可以同时完全控制所有三个方面:一行上的多个方程式、水平对齐和垂直对齐?

附录

由于已经有多个答案,我在这里添加了一些注释,以免在评论中重复。

当没有其他方法可行时,我会使用幻影和其他结构调整,不幸的是,这种情况经常发生。如果我的问题的答案是调整是唯一的解决方案,那就这样吧。但在我看来,创建一个允许水平拥有多个方程编号的对齐结构将解决所有这些问题,而无需任何调整。AMS 开发部门有人在听吗?

我很感谢以下所有建议,因为除了内置解决方案之外,我所能做的就是进行调整,很高兴看到其他人如何解决这些问题。

关于垂直和水平对齐的语义的额外说明:我至少有两个软件程序使用这些对齐术语来指代移动元素以获得对齐的方向。因此,垂直对齐将元素排成一行并将它们向上或向下移动以使其对齐,而水平对齐将元素排成一列并将它们向左或向右移动以使其对齐。我认为元素本身的基本方向也可用于定义这些术语,即在垂直线上彼此重叠并在水平线上彼此相邻,给出与上述相反的定义。前者的定义指的是方法,后者指的是结果。

答案1

这是另一个主意。对齐非常容易获得。根据您引用方程的方式,可能/应该/将会有一种引用它们的方法。我甚至还没有开始研究如何引用方程的问题,因为我担心您可能会立即拒绝这个提议,这当然是完全可以的。

\documentclass[10pt,a5paper]{book}
\usepackage[paperheight=9.5cm,paperwidth=13cm, margin=6mm]{geometry}

\usepackage{amsmath}
\usepackage{mathtools}
\usepackage[colorlinks]{hyperref}
\newcommand{\pd}{\partial}
\newcommand{\gep}{\epsilon}
\newcommand{\gm}{\mu}
\newcommand{\gr}{\rho}

\thispagestyle{empty}

\begin{document}


\begin{subequations}
\begin{align}
    \vec{\nabla}\times \vec{E} +\frac{\pd \vec{B}}{\pd t} & = 0 
   && (\stepcounter{equation}\hypertarget{eq:Hom1}{\text{\theequation}}) 
   & \vec{\nabla}\cdot\vec{E} &= \frac{\gr}{\gep_0} \label{eq:MW1a}\\
    \vec{\nabla}\cdot\vec{B}& = 0
  && (\stepcounter{equation}\hypertarget{eq:Hom2}{\text{\theequation}})  
  &  \vec{\nabla}\times \vec{B} - \gm_0 \gep_0 \frac{\pd \vec{E}}{\pd t} 
        &= \gm_0 \vec{j}\label{eq:MW2}
\end{align}
\end{subequations}

The so--called "`homogeneous"' Maxwell equations are just a Bianchi identity.

\begin{subequations}
\begin{align}
    \vec{\nabla}\times \vec{E} +\frac{\pd \vec{B}}{\pd t} & = 0 
   && (\stepcounter{equation}\text{\theequation}\stepcounter{equation}) 
   & \vec{\nabla}\cdot\vec{E} &= \frac{\gr}{\gep_0} \label{eq:MW3}\\    
    \vec{\nabla}\cdot\vec{B}& = 0
  && (\addtocounter{equation}{-1}\text{\theequation}\stepcounter{equation})  
  &  \vec{\nabla}\times \vec{B} - \gm_0 \gep_0 \frac{\pd \vec{E}}{\pd t} 
        &= \gm_0 \vec{j} \label{eq:MW4}
\end{align}
\end{subequations}


\end{document}

在此处输入图片描述

旧物:可以通过添加几个\vphantoms来修复第二个示例的垂直对齐方式。

\documentclass[10pt,a5paper]{book}
\usepackage{tikzpagenodes} % just for illustration
\usepackage[paperheight=9.5cm,paperwidth=13cm, margin=6mm]{geometry}

\usepackage{amsmath}
\usepackage{mathtools}

\newcommand{\pd}{\partial}
\newcommand{\gep}{\epsilon}
\newcommand{\gm}{\mu}
\newcommand{\gr}{\rho}

\thispagestyle{empty}

\begin{document}

Based on example 2

\begin{subequations}
\parbox[c]{\textwidth*7/16}{
\begin{align}
    \vec{\nabla}\times \vec{E} +\frac{\pd \vec{B}}{\pd t}\vphantom{\frac{\pd \vec{E}}{\pd t}} & = 0 \\
    \vec{\nabla}\cdot\vec{B}\vphantom{\frac{\pd \vec{E}}{\pd t}} & = 0 \label{eqn:hB}
\end{align}}
\parbox[c]{\textwidth*8/16}{
\begin{align}
    \vec{\nabla}\cdot\vec{E}\vphantom{\frac{\pd \vec{E}}{\pd t}} &= \frac{\gr}{\gep_0} \\
    \vec{\nabla}\times \vec{B} - \gm_0 \gep_0 \frac{\pd \vec{E}}{\pd t} 
        \vphantom{\frac{\pd \vec{E}}{\pd t}}&= \gm_0 \vec{j}\label{eqn:ihB}
\end{align}}
\end{subequations}
\tikz[remember picture,overlay] {%
\foreach \X in {1.3,2.4}
{    \draw [red,opacity=0.5]
    ([yshift=-\X*1cm]current page text area.north west) --
    ([yshift=-\X*1cm]current page text area.north east);}
    }

\end{document}

在此处输入图片描述

附录免责声明:不,我不明白Heiko 的魔法密码完全没有,是的,我知道方程数太大了。这个附录的唯一目的是报告一个奇怪的观察结果:如果将你的方程式包装成Heiko Oberdiek 的代码,它们几乎完美对齐。这已经发生了,无需多言。恕我直言,这表明应该有一个相当基本的解决方案,不依赖于“大锤”包(使用 Bernard 的术语 ;-)。

\documentclass{article}
\usepackage{mathtools}
\usepackage{tikzpagenodes} % just for illustration

\makeatletter % from https://tex.stackexchange.com/a/387283/121799
\newif\ifEvenSpacing@Uneven
\newcommand*{\EvenSpacing}[1]{%
  \par
  \begingroup
    \EvenSpacing@Try{#1}%
    \@whilesw\ifEvenSpacing@Uneven\fi{%
      \advance\baselineskip by .1pt
      \advance\normalbaselineskip by .1pt
      \EvenSpacing@Try{#1}%
    }%
    #1\par
  \endgroup
}
\newcommand*{\EvenSpacing@Try}[1]{%
  \lineskip=0pt
  \normallineskip=0pt
  \settototalheight{\dimen0}{\parbox{\linewidth}{#1}}%
  \lineskip=1pt
  \normallineskip=1pt
  \settototalheight{\dimen2}{\parbox{\linewidth}{#1}}%
  \ifdim\dimen0=\dimen2
    \EvenSpacing@Unevenfalse
  \else
    \EvenSpacing@Uneventrue
  \fi
}
\makeatother
\newcommand{\pd}{\partial}
\newcommand{\gep}{\epsilon}
\newcommand{\gm}{\mu}
\newcommand{\gr}{\rho}

\begin{document}

\section*{Without Heiko's magic}

\begin{subequations}
\parbox[c]{\textwidth*7/16}{
\begin{align}
    \vec{\nabla}\times \vec{E} +\frac{\pd \vec{B}}{\pd t} & = 0 \\
    \vec{\nabla}\cdot\vec{B} & = 0 \label{eqn:hB}
\end{align}}
\parbox[c]{\textwidth*8/16}{
\begin{align}
    \vec{\nabla}\cdot\vec{E} &= \frac{\gr}{\gep_0} \\
    \vec{\nabla}\times \vec{B} - \gm_0 \gep_0 \frac{\pd \vec{E}}{\pd t} 
        &= \gm_0 \vec{j}\label{eqn:ihB}
\end{align}}
\end{subequations}

\section*{With Heiko's magic}

\EvenSpacing{\begin{subequations}
\parbox[c]{\textwidth*7/16}{
\begin{align}
    \vec{\nabla}\times \vec{E} +\frac{\pd \vec{B}}{\pd t} & = 0 \\
    \vec{\nabla}\cdot\vec{B} & = 0 \label{eqn:hB'}
\end{align}}
\parbox[c]{\textwidth*8/16}{
\begin{align}
    \vec{\nabla}\cdot\vec{E} &= \frac{\gr}{\gep_0} \\
    \vec{\nabla}\times \vec{B} - \gm_0 \gep_0 \frac{\pd \vec{E}}{\pd t} 
        &= \gm_0 \vec{j}\label{eqn:ihB'}
\end{align}}
\end{subequations}}



\tikz[remember picture,overlay] {%
\foreach \X in {1.82,2.55,5.8,6.8}
{    \draw [red,opacity=0.5]
    ([yshift=-\X*1cm]current page text area.north west) --
    ([yshift=-\X*1cm]current page text area.north east);}
    }

\end{document}

在此处输入图片描述

答案2

我基于 提出了此解决方案tabularx。请注意,单元格中的每个align 环境都必须插入到组中。我使用esdiff(便于输入偏导数)和esvect(便于获得更漂亮的矢量箭头)包进行了一些小改进。

\documentclass[10pt, a5paper]{book}

\usepackage[paperheight=9.5cm,paperwidth=13cm, margin=6mm]{geometry}

\usepackage{mathtools}
\usepackage[b]{esvect}
\usepackage{esdiff}
\usepackage{tabularx}
\newcommand{\pd}{\partial}
\newcommand{\gep}{\epsilon}
\newcommand{\gm}{\mu}
\newcommand{\gr}{\rho}

\makeatletter
\newcommand*{\compress}{\@minipagetrue}
\thispagestyle{empty}

\begin{document}

Example

\begin{subequations}
\noindent\begin{tabularx}{\linewidth}{@{}>{\compress\arraybackslash}X@{\qquad}>{\compress\arraybackslash}X@{}}
{\begin{align}
 \vv{\nabla}\times \vv{E} +\smash[t]{\diffp{\vv{B}}{t}} & = 0 \\[2pt]
\vv{\nabla}\cdot\vv{E} &= \frac{\gr}{\gep_0}
\end{align}}
 &
{\begin{align}
\vv{\nabla}\cdot\vv{B} & = 0 \label{eqn:hB}%
\\%
 \vv{\nabla}\times \vv{B} - \gm_0 \gep_0 \diffp{\vv{E}}{t}
 &= \gm_0 \vv{j}\label{eqn:ihB}
\end{align}}
\end{tabularx}
\end{subequations}

\end{document} 

在此处输入图片描述

答案3

本答案是关于如何计算出最小和最佳 vphantom 解决方案的主题。从 OP 开始,我将重点介绍示例 3,因为这是我想要在书中出现的方程编号的顺序。

乍一看,第一行条目的大小必须相同,但关键在于它们必须具有相同的对齐方式,并且总体上占用相同的空间。是的,场导数比 epsilon 零上的 rho 高,但请注意对齐将分数线与等号中间对齐,并且相对于此,下标 epsilon 在其下方占用的垂直空间比 del t 多。

第一行很简单,因为右边的等式比左边的等式浅,等号上方和下方都是如此。所以这里 vphantom 中需要整个分数,而左边不需要修正。

在第二行中,左侧的 epsilon zero 比右侧的 del t 更深,但右侧的 del vec E 比左侧的 rho 更高。为了强调我的观点,您可以看到,我已从此处使用的 vphantoms 中的分数中删除了不相关的内容。

\documentclass[10pt,a5paper]{book}

\usepackage[paperheight=4.7cm,paperwidth=13cm, margin=6mm]{geometry}

\usepackage{amsmath}
\usepackage{mathtools}

\newcommand{\pd}{\partial}
\newcommand{\gep}{\epsilon}
\newcommand{\gm}{\mu}
\newcommand{\gr}{\rho}

\thispagestyle{empty}

\begin{document}

Example 4

\begin{subequations}

\parbox[b]{\textwidth*13/32}{
\begin{align}
    \vec{\nabla}\times \vec{E} +\frac{\pd \vec{B}}{\pd t} & = 0 \\
    \vec{\nabla}\cdot\vec{E} \vphantom{\frac{\pd \vec{B}}{\pd t}} &= \frac{\gr}{\gep_0}
\end{align}}
\parbox[b]{\textwidth*17/32}{
\begin{align}
    \vec{\nabla}\cdot\vec{B} \vphantom{\frac{\pd \vec{B}}{}} & = 0 \label{eqn:hB} \\
    \vec{\nabla}\times \vec{B} - \gm_0 \gep_0 \frac{\pd \vec{E}}{\pd t} 
    \vphantom{\frac{}{\gep_0}} &= \gm_0 \vec{j}\label{eqn:ihB}
\end{align}}\newline
\end{subequations}

\end{document}

完美对齐的结果:

示例 3 修复

相关内容