我想要创建一些类似于此图像的东西(仅上部,并具有不同的线条形状):
使用 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 1
dashed
一个工作示例:
\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}