我想要一些类似于这张图片中的箭头的东西:
是否可以在不编写大量代码的情况下实现此功能?目前的代码如下:
\documentclass[10pt,a4paper]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage{amsmath}
\begin{document}
\begin{equation}
\begin{split}
& ^\text{1}\text{H} + {}^\text{1}\text{H} \rightarrow {}^\text{2}\text{H} + \text{e}^+ + \nu \\
& ^\text{2}\text{H} + {}^\text{1}\text{H} \rightarrow {}^\text{3}\text{He} + \gamma \\
& ^\text{3}\text{He} + {}^\text{4}\text{He} \rightarrow {}^\text{7}\text{Be} \\
& ^\text{7}\text{Be} + \text{p} \rightarrow {}^\text{8}\text{B} + \gamma \\
& ^\text{8}\text{B} \rightarrow {}^\text{8}\text{Be} + \nu + \text{e}^+ \\
& ^\text{8}\text{Be} \rightarrow \text{2}~ ^\text{4}\text{He}
\label{eq:ppkette3}
\end{split}
\end{equation}
\end{document}
我尝试用盒子装一些东西,但没有得到任何可用的结果。
提前致谢
答案1
使用著名宏的可能解决方案\tikzmark
:
\documentclass[10pt,a4paper]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{tikz}
\newcommand{\tikzmark}[1]{%
\tikz[overlay,remember picture,
baseline=-\the\dimexpr\fontdimen22\textfont2\relax]% correct vertical alignment:
% http://tex.stackexchange.com/questions/59658/use-of-tikzpicture-matrix-in-align-or-gather-environment/59660#comment126261_59660
\node (#1) {};%
}
\tikzset{square arrow/.style={to path={(\tikztostart)-- ++(-0.5,0) |- (\tikztotarget)}}}
\begin{document}
\begin{equation}
\begin{split}
\tikzmark{ini} & ^\text{1}\text{H} + {}^\text{1}\text{H} \rightarrow {}^\text{2}\text{H} + \text{e}^+ + \nu \\
& ^\text{2}\text{H} + {}^\text{1}\text{H} \rightarrow {}^\text{3}\text{He} + \gamma \\
& ^\text{3}\text{He} + {}^\text{4}\text{He} \rightarrow {}^\text{7}\text{Be} \\
& ^\text{7}\text{Be} + \text{p} \rightarrow {}^\text{8}\text{B} + \gamma \\
& ^\text{8}\text{B} \rightarrow {}^\text{8}\text{Be} + \nu + \text{e}^+ \\
\tikzmark{end} & ^\text{8}\text{Be} \rightarrow \text{2}~ ^\text{4}\text{He}
\end{split}
\begin{tikzpicture}[remember picture,overlay]
\draw[-stealth,square arrow] (end) to (ini);
\end{tikzpicture}
\label{eq:ppkette3}
\end{equation}
\end{document}
结果:
它需要两次编译运行。
要获得与 匹配的箭头\rightarrow
,可以利用强大的arrows.meta
库。添加
\usetikzlibrary{arrows.meta}
在序言中并进行修改:
\draw[-stealth,square arrow] (end) to (ini);
和
\draw[-{To[length=2.45pt]},square arrow] (end) to (ini);
其结果将是:
答案2
我们还可以使用halign
没有行间跳跃和垂直规则的平原来做到这一点。
\documentclass{article}
\begin{document}
\begin{equation}
\vcenter{\offinterlineskip\halign{&$#$\hfil\cr
\vrule height .6ex depth 6pt\mkern-1.67mu \to & \rm \mathord{{}^1H + {}^1H} \to \mathord{{}^2H + e^+ + \nu} \cr
\vrule height 9pt depth 6pt & \rm \mathord{{}^2H + {}^1H} \to {}^3He +\gamma \cr
\vrule height 9pt depth 6pt & \rm \mathord{{}^3He+ {}^4He} \to {}^7Be\cr
\vrule height 9pt depth 6pt & \rm \mathord{{}^7Be+ p} \to {}^8B+\gamma\cr
\vrule height 9pt depth 6pt & \rm \mathord{{}^8B} \to {}^8Be+\nu+e^+\cr
\vrule height 9pt depth -.6ex\mkern-.67mu
\vrule height .6ex depth -.5ex width 1em \
& \rm \mathord{{}^8Be} \to {}^4He\cr
}}
\end{equation}
\end{document}
这样做的好处是箭头看起来一样。请注意,最后的水平线实际上是由 绘制的\vrule
。
答案3
tkz-linknodes
如果您同意将箭头放在等式的右侧,则包是另一种选择。
套餐目标是
通过指示两条线之间进行的操作,轻松地在环境中的线之间创建链接,使之对齐或仍然对齐
仅使用三个命令/环境NodesList
,AddNode
和LinkNodes
。来自包文档的示例如下:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{tkz-linknodes}
\begin{document}
\begin{NodesList}
\begin{align}
\boxed{ 3(x^2-3) =4 } \AddNode\\
x^2-3 =\frac{4}{3} \AddNode\\
\intertext{\hfil isolate the term with the variable \hfil}
x^2 =\frac{13}{3} \AddNode\\
\sqrt{x^2} =\sqrt{\frac{13}{3}} \AddNode\\
|x| =\sqrt{\frac{13}{3}} \AddNode\\
x =\pm\sqrt{\frac{13}{3}} \AddNode
\end{align}
\LinkNodes[margin=1cm]{$\div 3$}%
\LinkNodes[margin=1.5cm]{$+3$}%
\LinkNodes[margin=2.5cm]{$\sqrt{\ldots}$}
\LinkNodes[margin=3cm]{$\sqrt{x^2}=|x|$}
\LinkNodes[margin=4.5cm]{we have two answers}
\end{NodesList}
\end{document}
并产生
因此,你的例子可能是
\documentclass[10pt,a4paper]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{tkz-linknodes}
\begin{document}
\begin{NodesList}
\begin{equation}
\begin{split}
& ^\text{1}\text{H} + {}^\text{1}\text{H} \rightarrow {}^\text{2}\text{H} + \text{e}^+ + \nu \AddNode \\
& ^\text{2}\text{H} + {}^\text{1}\text{H} \rightarrow {}^\text{3}\text{He} + \gamma \\
& ^\text{3}\text{He} + {}^\text{4}\text{He} \rightarrow {}^\text{7}\text{Be} \\
& ^\text{7}\text{Be} + \text{p} \rightarrow {}^\text{8}\text{B} + \gamma \\
& ^\text{8}\text{B} \rightarrow {}^\text{8}\text{Be} + \nu + \text{e}^+ \\
& ^\text{8}\text{Be} \rightarrow \text{2}~ ^\text{4}\text{He}\AddNode
\label{eq:ppkette3}
\end{split}
\end{equation}
\tikzset{ArrowStyle/.append style={<-}}
\LinkNodes[margin=4cm]{}
\end{NodesList}
\end{document}
结果:
答案4
如果您同意将箭头放在等式的右侧,则可以使用它witharrows
,它是直接的。
\documentclass{article}
\usepackage{amstext}
\usepackage{witharrows}
\begin{document}
\begin{DispWithArrows*}[format = l]
^\text{1}\text{H} + {}^\text{1}\text{H} \rightarrow {}^\text{2}\text{H} + \text{e}^+ + \nu
\Arrow[tikz=<-,jump=5]{} \\
^\text{2}\text{H} + {}^\text{1}\text{H} \rightarrow {}^\text{3}\text{He} + \gamma \\
^\text{3}\text{He} + {}^\text{4}\text{He} \rightarrow {}^\text{7}\text{Be} \\
^\text{7}\text{Be} + \text{p} \rightarrow {}^\text{8}\text{B} + \gamma \\
^\text{8}\text{B} \rightarrow {}^\text{8}\text{Be} + \nu + \text{e}^+ \\
^\text{8}\text{Be} \rightarrow \text{2}~ ^\text{4}\text{He}
\end{DispWithArrows*}
\end{document}
如果您愿意,可以更改箭头的形状(如果您知道 Tikz 的语法)。
\documentclass{article}
\usepackage{amstext}
\usepackage{witharrows}
\begin{document}
\begin{DispWithArrows*}%
[ format = l ,
tikz-code = { \draw (#1) -- ++(5mm,0) |- (#2) ; } ]
^\text{1}\text{H} + {}^\text{1}\text{H} \rightarrow {}^\text{2}\text{H} + \text{e}^+ + \nu
\Arrow[tikz=<-,jump=5]{} \\
^\text{2}\text{H} + {}^\text{1}\text{H} \rightarrow {}^\text{3}\text{He} + \gamma \\
^\text{3}\text{He} + {}^\text{4}\text{He} \rightarrow {}^\text{7}\text{Be} \\
^\text{7}\text{Be} + \text{p} \rightarrow {}^\text{8}\text{B} + \gamma \\
^\text{8}\text{B} \rightarrow {}^\text{8}\text{Be} + \nu + \text{e}^+ \\
^\text{8}\text{Be} \rightarrow \text{2}~ ^\text{4}\text{He}
\end{DispWithArrows*}
\end{document}