在对齐环境中对两行进行分组,将某些内容放在其左侧

在对齐环境中对两行进行分组,将某些内容放在其左侧

我有一个在第一个等号处对齐的等式,如下所示:

\begin{align}
a &= b + c \nonumber\\ 
d &= e + f \label{eq1}\\    %this is row 1
g &= h + i \nonumber\\      %this is row 2
j &= k + l \nonumber\\
m &= n + o \nonumber
\end{align}

我如何分组第 1 行第 2 行所以我可以在它们的左边放点东西吗?我会更具体一点。我使用 TiKz 构造了一个箭头,如下所示:

\begin{tikzpicture}
\path (0,0.80) coordinate(c1)
(-0.32,0.65) coordinate(c2)
(-0.32,0.25) coordinate(c3)
(0.0,0) coordinate(c4)
(-0.32,0.4) coordinate(c5);
\draw [-latex] (c1) .. controls (c2) and (c3) .. (c4);
\draw (c5) node [anchor=east] {\scriptsize \text{\eqref{eq1}}};
\end{tikzpicture}

它在纸上看起来是这样的:

在此处输入图片描述

现在我想将此元素移动到行的左侧第 1 行第 2 行。我努力实现的是这样的:

在此处输入图片描述

答案1

您可以使用remember pictureoverlayTikZ 方法来标记点并在tikzpicture稍后将它们连接起来。

\documentclass{article}
\usepackage{tikz}
\tikzstyle{math atom}=[inner sep=0pt,outer sep=0pt,baseline=0,anchor=base]
\usepackage{amsmath}
\begin{document}
\begin{align}
\tikz[remember picture,overlay]{\node[math atom] (a) {$a$};}\;
  &= b + c \nonumber\\ 
\tikz[remember picture,overlay]{\node[math atom] (d) {$d$};}\;
  &= e + f \label{eq1}\\    %this is row 1
g &= h + i \nonumber\\      %this is row 2
j &= k + l \nonumber\\
m &= n + o \nonumber
\end{align}
\begin{tikzpicture}[remember picture,overlay]
\draw [-latex] (a) .. controls ([xshift=-0.5cm]a) and ([xshift=-0.5cm]d) .. (d)
  node [midway,anchor=east] {\scriptsize \text{\eqref{eq1}}};
\end{tikzpicture}
\end{document}

示例代码输出

这需要运行两次 LaTeX 才能将坐标定位到正确的位置,但无论如何,您需要运行两次才能正确获得交叉引用。

答案2

您可以将 TikZ 图片放入其中align,但将其粉碎,这样它就不会占用垂直空间。

\begin{align}
a &= b + c \nonumber\\
d &= e + f \label{eq1}\\    %this is row 1
\smash{%
\begin{tikzpicture}
\path (0,0.80) coordinate(c1)
(-0.32,0.65) coordinate(c2)
(-0.32,0.25) coordinate(c3)
(0.0,0) coordinate(c4)
(-0.32,0.4) coordinate(c5);
\draw [-latex] (c1) .. controls (c2) and (c3) .. (c4);
\draw (c5) node [anchor=east] {\scriptsize \text{\eqref{eq1}}};
\end{tikzpicture}%
}\ %% here is some horizontal space
g &= h + i \nonumber\\      %this is row 2
j &= k + l \nonumber\\
m &= n + o \nonumber
\end{align}%

示例输出

答案3

你知道吗tkz-linknodes? 它的作用与您想要的类似,只是链接在右侧且平方。它基于TiKZ及其remember picture,因此您需要运行两次才能获得正确的结果。

接下来是一个简单的例子,尽管我建议看一下它的手动的看看是否值得尝试。

\documentclass[]{article}
\usepackage[utf8]{inputenc}
\usepackage[upright]{fourier}
\usepackage{tkz-linknodes}
\begin{document}
\begin{NodesList}
\begin{align}
a &= b + c \nonumber\\ 
d &= e + f \label{eq1} \AddNode \\    %this is row 1
g &= h + i \nonumber \AddNode \\      %this is row 2
j &= k + l \nonumber\\
m &= n + o \nonumber
\end{align}
\LinkNodes{\scriptsize \text{\eqref{eq1}}}
\end{NodesList}
\end{document}

在此处输入图片描述

相关内容