费曼图:包 pgfkeys 错误:我不知道密钥“/tikz/empty dot”,我将忽略它。也许你拼错了

费曼图:包 pgfkeys 错误:我不知道密钥“/tikz/empty dot”,我将忽略它。也许你拼错了

我正在尝试使用 tikz-feynman 绘制一个特定的费曼图。除了我得到这个错误之外,它几乎正确地绘制了它

软件包 pgfkeys 错误:我不知道密钥“/tikz/empty dot”,我将忽略它。也许您拼错了。

空点内部有交叉的线,如下图所示:

在此处输入图片描述

我的代码是这样的:

\documentclass[11pt,a4paper,border={1pt 1pt 16pt 1pt},varwidth]{standalone}
\usepackage[top=12mm,bottom=12mm,left=30mm,right=30mm,head=12mm,includeheadfoot]{geometry}
\usepackage{graphicx,color,soul}
\usepackage[compat=1.1.0]{tikz-feynman}
\usepackage{XCharter}
\begin{document}
\thispagestyle{empty}

\begin{figure*}[t]
    \hspace{-0.4cm}\feynmandiagram [scale=.7,horizontal=root to v0] {
         root -- [fermion] v0, 
         v0 -- [fermion] v1, 
         v0 -- [fermion] v4, 
         v1 -- [fermion] v2, 
         v1 -- [fermion] vNone0, 
         v2 -- [fermion] v3 [empty dot], 
         v2 -- [fermion] vNone1, 
         v4 -- [fermion] v3 [empty dot], 
         v4 -- [fermion] vNone2, 
     }; 
\end{figure*} 
\end{document}

答案1

我不完全确定这是为什么,但是如果删除第二条语句,错误就会消失[emtpy dot],可能是因为在这个位置,没有构造新的节点,但是v3引用了已经存在的节点。

为了解决边缘线指向点内部的问题,可以使用选项small代替,scale=0.7或者,如果这还不够小,则减小node distance(甚至将其与结合small):

\documentclass[border=10pt]{standalone}
\usepackage[compat=1.1.0]{tikz-feynman}

\begin{document}
    \feynmandiagram [horizontal=root to v0, small] {
        root -- [fermion] v0, 
        v0 -- [fermion] v1, 
        v0 -- [fermion] v4, 
        v1 -- [fermion] v2, 
        v1 -- [fermion] vNone0, 
        v2 -- [fermion] v3 [empty dot], 
        v2 -- [fermion] vNone1, 
        v4 -- [fermion] v3, 
        v4 -- [fermion] vNone2, 
    }; 

    \feynmandiagram [horizontal=root to v0, node distance=1cm] {
        root -- [fermion] v0, 
        v0 -- [fermion] v1, 
        v0 -- [fermion] v4, 
        v1 -- [fermion] v2, 
        v1 -- [fermion] vNone0, 
        v2 -- [fermion] v3 [empty dot], 
        v2 -- [fermion] vNone1, 
        v4 -- [fermion] v3, 
        v4 -- [fermion] vNone2, 
    }; 
\end{document}

在此处输入图片描述

答案2

图表库似乎不喜欢缩放。但是,tikz-feynman提供了三个关键点来规模图表(通过将各种不同尺寸设置为适当的值):

  • large
  • medium(默认)和
  • small

我建议smaller以同样的方式定义样式,将值除以small1.5,然后再次调整值,以使图表看起来足够好。例如,只需将箭头大小除以 1.5 即可得到非常小的箭头尖。

请随意进一步调整值或以相同的方式定义您自己的风格。

代码

\documentclass[tikz]{standalone}
\usepackage[compat=1.1.0]{tikz-feynman}
\tikzfeynmanset{
  smaller/.style={/tikzfeynman/every smaller@@},
  every smaller/.style={/tikzfeynman/every smaller@@/.append style={#1}},
  every smaller@@/.style={
    /tikz/node distance=+.6666cm,
    /graph drawing/node distance=+.83333cm,
    /graph drawing/level distance=+.6666cm,
    /graph drawing/sibling distance=+1cm,
    /tikzfeynman/every dot@@/.append style={/tikz/minimum size=+1mm},
    /tikzfeynman/every crossed dot@@/.append style={/tikz/minimum size=+1.3333mm},
    /tikzfeynman/every blob@@/.append style={/tikz/minimum size=+.3333cm},
    /tikzfeynman/arrow size=+1pt,
    /tikzfeynman/insertion/size=+1.7pt}}
\begin{document}
\feynmandiagram [scale=.7, red, horizontal=root to v0] {
   root -- [fermion] v0
        -- [fermion] {v1,             v4},
     v1 -- [fermion] {v2,             vNone0}, 
     v2 -- [fermion] {v3 [empty dot], vNone1}, 
     v4 -- [fermion] {v3,             vNone2}
 }; 
\feynmandiagram [horizontal=root to v0] {% normal size: medium
   root -- [fermion] v0
        -- [fermion] {v1,             v4},
     v1 -- [fermion] {v2,             vNone0}, 
     v2 -- [fermion] {v3 [empty dot], vNone1}, 
     v4 -- [fermion] {v3,             vNone2}
 }; 
 \feynmandiagram [small, horizontal=root to v0] {
   root -- [fermion] v0
        -- [fermion] {v1,             v4},
     v1 -- [fermion] {v2,             vNone0}, 
     v2 -- [fermion] {v3 [empty dot], vNone1}, 
     v4 -- [fermion] {v3,             vNone2}
 }; 
 \feynmandiagram [smaller, horizontal'=root to v0] {
   root -- [fermion] v0
        -- [fermion] {v1,             v4},
     v1 -- [fermion] {v2,             vNone0}, 
     v2 -- [fermion] {v3 [empty dot], vNone1}, 
     v4 -- [fermion] {v3,             vNone2}
 }; 
\end{document}

输出

在此处输入图片描述 在此处输入图片描述

相关内容