我正在尝试使用 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
以同样的方式定义样式,将值除以small
1.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}