我正在使用 Ti 绘制费曼图钾Z-Feynman如下:
\documentclass[border=1ex, tikz]{standalone}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\begin{tikzpicture}
\begin{feynman}[large]
\vertex (a) {\(e^{-}\)};
\vertex [below right=of a ] (b);
\vertex [below right=of b ] (c) {\(e^{-}\)};
\vertex [below =of b ] (d);
\vertex [below left =of d ] (e) {\(e^{-}\)};
\vertex [above right=of d ] (f) {\(e^{-}\)};
\diagram* {
(a) -- [fermion, momentum' = \(p_{1}\)] (b) -- [fermion, momentum = \(k_{1}\)] (c),
(b) -- [plain] (d),
(e) -- [fermion, momentum = \(p_{2}\)] (d),
(d) -- [fermion, momentum' = \(k_{2}\)] (f),
};
\end{feynman}
\end{tikzpicture}
\end{document}
图有点丑啊。
我怎样才能使传出的线更长并使图表看起来更美观?
答案1
为了实现这样的你通道图,您可以使用其中一种算法自动确定顶点的位置。这是我从 Ti 文档中复制的一个例子钾Z-费曼:
\documentclass[border=1ex, tikz]{standalone}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\begin{tikzpicture}
\begin{feynman}
\diagram [vertical'=a to b] {
i1 [particle=\(e^{-}\)]
-- [fermion] a
-- [draw=none] f1 [particle=\(e^{+}\)],
a -- [photon, edge label'=\(p\)] b,
i2 [particle=\(e^{+}\)]
-- [anti fermion] b
-- [draw=none] f2 [particle=\(e^{-}\)],
};
\diagram* {
(a) -- [fermion] (f2),
(b) -- [anti fermion] (f1),
};
\end{feynman}
\end{tikzpicture}
\end{document}
由于默认情况下图形放置不会与线相交,因此第一个命令(\diagram
)设置一般结构,第二个命令(\diagram*
) 绘制交叉线。请注意,此布局相当紧凑,如果不变得非常杂乱无章。
如果您使用手动放置顶点(如您所做的那样),则可以更轻松地进行微调,特别是考虑到您可以使用以下方式指定顶点之间的分离:
below=<distance> of <node>
或者
above right=<distance> and <distance> of <node>
如果您想指定垂直和水平距离。
利用这一点,您可以获得:
\documentclass[border=1ex, tikz]{standalone}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\begin{tikzpicture}
\begin{feynman}[large]
\vertex (a);
\vertex [below =of a] (b);
\vertex [above left=of a] (i1) {\(e^{-}\)};
\vertex [below left =of b] (i2) {\(e^{-}\)};
\vertex [right =4cm of i2] (f1) {\(e^{-}\)};
\vertex [right =4cm of i1] (f2) {\(e^{-}\)};
\diagram* {
(i1) -- [fermion, momentum'=\(p_{1}\)] (a)
-- [fermion, momentum={[arrow shorten=0.4]\(k_{1}\)}] (f1),
(a) -- [plain] (b),
(i2) -- [fermion, momentum=\(p_{2}\)] (b),
(b) -- [fermion, momentum'={[arrow shorten=0.4]\(k_{2}\)}] (f2),
};
\end{feynman}
\end{tikzpicture}
\end{document}
请注意,我更改了您用于节点的命名方案,以便a, b, c, ...
我使用而不是i1, i2
来表示初始状态、f1, f2
最终状态和a, b
内部顶点。