我有以下 tikz-feynman 图的来源:
\documentclass{standalone}
\usepackage{tikz}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\begin{tikzpicture}
\begin{feynman}
\vertex [dot] (o1);
\vertex [right=of o1,dot] (i1);
\vertex [above right=of i1] (it);
\vertex [above=of it,crossed dot] (ot);
\vertex [below right=of it,dot] (i2);
\vertex [below left=of i2] (ib);
\vertex [below=of ib] (ob);
\vertex [right=of i2,dot] (o2);
\diagram* {
(o1) -- [gluon] (i1),
(i2) -- [gluon] (o2),
(o1) -- [fermion, quarter left] (ot),
(ot) -- [fermion, quarter left] (o2),
(o2) -- [fermion, quarter left] (ob),
(ob) -- [fermion, quarter left] (o1),
(i1) -- [fermion, quarter left] (it),
(it) -- [fermion, quarter left] (i2),
(i2) -- [fermion, quarter left] (ib),
(ib) -- [fermion, quarter left] (i1),
};
\end{feynman}
\end{tikzpicture}
\end{document}
我不清楚为什么顶点样式dot
没有crossed dot
显示。
总的来说,我对任何能够适当传达循环是切割传播子的风格感到满意,尽管这超出了问题的范围。
答案1
欢迎来到 TeX.SE!我真的不知道这里发生了什么。我所能提供的只是一种基于语法的解决方法,应该相当于你正在做的事情,但显然不是。
\documentclass[tikz,border=3.14mm]{standalone}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\begin{tikzpicture}
\begin{feynman}[every dot={/tikz/draw=black}]
\path (0,0) node[vertex,dot] (o1)
node[vertex,right=of o1,dot] (i1)
node[vertex,above right=of i1] (it)
node[vertex,above=of it,crossed dot] (ot)
node[vertex,below right=of it,dot] (i2)
node[vertex,below left=of i2] (ib)
node[vertex,below=of ib] (ob)
node[vertex,right=of i2,dot] (o2);
\diagram {
(o1) -- [gluon] (i1),
(i2) -- [gluon] (o2),
(o1) -- [fermion, quarter left] (ot),
(ot) -- [fermion, quarter left] (o2),
(o2) -- [fermion, quarter left] (ob),
(ob) -- [fermion, quarter left] (o1),
(i1) -- [fermion, quarter left] (it),
(it) -- [fermion, quarter left] (i2),
(i2) -- [fermion, quarter left] (ib),
(ib) -- [fermion, quarter left] (i1),
};
\end{feynman}
\end{tikzpicture}
\end{document}
一种可能的解释是,尽管不太可能,但这是因中的\pgfextra
in触发的。pgfmanual 在第 162 页上说\def\tikzfeynman@commands@vertex{ \path \pgfextra{\tikzfeynmanallowemptynodetrue} \pgfextra{\tikzfeynmanvertextrue} node}
/tikzlibraryfeynman.code.tex
可以使用以下路径操作 \pgfextra 实现此效果。请注意,此操作仅应由真正的专家使用,并且仅应在巧妙的宏内部深处使用,而不应在普通路径上使用。
很可能这不是原因,但无论如何,我想说的是,人们应该尽量避免pfgextra
。这里也不需要。人们可以简单地定义一个 pgfkey vertextrue/.code={\tikzfeynmanallowemptynodetrue\tikzfeynmanvertextrue}
,然后执行\path [vertextrue] node
。