循环图中未显示顶点样式

循环图中未显示顶点样式

我有以下 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}

在此处输入图片描述

一种可能的解释是,尽管不太可能,但这是因中的\pgfextrain触发的。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

相关内容