画费曼图结果为“未知密钥”

画费曼图结果为“未知密钥”

我想要创建一些类似于此图像的东西(仅上部,并具有不同的线条形状): 在此处输入图片描述

使用 tikz,因此我开始定义不同的元素并放置它们:

\begin{tikzpicture}
\tikzset{
    photon/.style={decorate, decoration={snake, dashed}, draw=red},
    electron/.style={draw=blue, postaction={decorate},
        decoration={markings,mark=at position .55 with {\arrow[draw=blue]{>}}}},
    phonon/.style={decorate, decoration={snake}, draw=green}
}
\draw(0, 0)
to[photon] (2, 0)
to[electron] (3, 1)
to[electron] (4, 0)
to[photon] (6, 0);
\end{tikzpicture}

不幸的是,这会导致错误

! Package pgfkeys Error: I do not know the key '/pgf/decoration/\pgfkeyscurrent

每行一个to[]。为什么?

答案1

我认为您不能使用 为路径的某些部分添加装饰to,而只能为整个路径添加装饰。这并不是说您不能使用to,而是您不能将装饰作为 的一个选项添加to,它应该是\draw [<decoration options>] (a) to (b),而不是\draw (a) to[<decoration options>] (b);

此外,该dashed选项不应成为decoration选项的一部分。

顺便说一句,我认为在这种情况下虚线看起来不太好,您可以尝试,或者使用例如而不是densely dashed创建自定义虚线图案。dash pattern=on 2 off 1dashed

一个工作示例:

在此处输入图片描述

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing,decorations.markings}
\begin{document}
\begin{tikzpicture}
\tikzset{
    photon/.style={decorate, decoration={snake},densely dashed, draw=red},
    electron/.style={draw=blue, postaction={decorate},
        decoration={markings,mark=at position .55 with {\arrow[draw=blue]{>}}}},
    phonon/.style={decorate, decoration={snake}, draw=green}
}
\draw [photon] (0, 0) -- (2, 0);
\draw [electron] (2,0) to[out=70,in=180] (3, 1);
\draw [electron] (3,1) to[out=0,in=110] (4, 0);
\draw [photon] (4,0) -- (6, 0);
\end{tikzpicture}
\end{document}

相关内容