我有一个在第一个等号处对齐的等式,如下所示:
\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 picture
和overlay
TikZ 方法来标记点并在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}