我正在尝试绘制带有两个循环的费曼图。我成功绘制了以下图:
\documentclass[DIV=14,headsepline]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{luainputenc}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\[
\feynmandiagram[horizontal=a to b, layered layout]{
a[dot] -- c [dot] --[out=135, in=45, loop, min distance=2cm,insertion=0.5] c -- b [dot],
};
\]
\end{document}
这让我
我想在第一个循环上方添加另一个循环,但我不知道该怎么做。我试过使用,tikzpicture
但没有得到任何结果。
我遇到的另一个问题是,我希望一些点更大以便有源项(大点)和顶点(小点),但我也不知道该怎么做。[big=dot]
不起作用。
先感谢您。
答案1
问题在于 tikz-feynman 使用装饰而不是新节点来实现“插入”选项。因此,要找到循环顶部顶点的位置以便在第一个循环上方绘制第二个循环非常棘手。
一个好的解决方法是使用相对节点位置:
\documentclass[DIV=14,headsepline]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{luainputenc}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\[
\feynmandiagram[horizontal=a to b]{
a[dot] -- c [dot] -- b [dot],
c --[out=135, in=185, min distance=0.6cm] d[dot, above = 2cm of c]
--[out=355, in=45, min distance=0.6cm] c,
d --[out=135, in=185, min distance=0.6cm]
e[large, dot, above = 4cm of c]
--[out=355, in=45, min distance=0.6cm] d,
e --[out=135, in=185, min distance=0.6cm]
f[small, blob, above = 6cm of c]
--[out=355, in=45, min distance=0.6cm] e,
};
\]
\end{document}
我还改变了两个顶点的样式,以向您展示一些可用的选项。
答案2
像这样吗?
\documentclass{article}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\begin{tikzpicture}[baseline=(current bounding box.north)]
\begin{feynman}
\vertex(in);
\tikzfeynmanset{every vertex={dot,minimum size=4mm}} %<- change the size of the dots here
\vertex[right=1.5cm of in] (v);
\vertex[above=1.2cm of v] (u);
\tikzfeynmanset{every vertex={empty dot,minimum size=0mm}} %<- ugly, I know
\vertex[right=1.5cm of v] (out);
\vertex[above=1.2cm of u] (w);
\diagram{(in) -- (v) -- (out)};
\diagram{(v) -- [half left] (u) -- [half right] (w) -- [half right] (u) -- [half left] (v)};
\end{feynman}
\end{tikzpicture}
\end{document}
请注意,我是使用 xelatex 进行编译的(因为我无法让 lualatex 工作),而且这是我用 tikz-feynman 绘制的第一张图表,因此毫无疑问还有很大的改进空间。
编辑:这是为了让图表更吸引人一些。
\documentclass{article}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\begin{tikzpicture}[baseline=(current bounding box.north)]
\begin{feynman}
\vertex(in);
\vertex[right=1.5cm of in] (v);
\vertex[above=1.2cm of v] (u);
\vertex[right=1.5cm of v] (out);
\vertex[above=1.2cm of u] (w);
\diagram{(in) -- (v) -- (out)};
\diagram{(v) -- [half left] (u) -- [half right] (w) -- [half right] (u) -- [half left] (v)};
\draw[fill=black] (v) circle(1.5mm);
\draw[fill=black] (u) circle(1.5mm);
% \draw (1.5,0.6) circle (0.6cm); %<- uncomment this line to compare the loop toa real circle
\end{feynman}
\end{tikzpicture}
\end{document}