![如何增加 tikz-feynman 包中玻色子的尺寸?](https://linux22.com/image/417588/%E5%A6%82%E4%BD%95%E5%A2%9E%E5%8A%A0%20tikz-feynman%20%E5%8C%85%E4%B8%AD%E7%8E%BB%E8%89%B2%E5%AD%90%E7%9A%84%E5%B0%BA%E5%AF%B8%EF%BC%9F.png)
我正在使用该tikz-feynman
包制作一些像这样的费曼图:
\documentclass{article}
% Beta decay
\usepackage{tikz}
\usepackage[compat=1.1.0]{tikz-feynman}
\usepackage{feynmf}
\begin{document}
\begin{tikzpicture}
\begin{feynman}
\vertex (a);
\vertex [above right = 5 cm of a] (u11);
\vertex [above left = 5 cm of u11] (u12);
\vertex [right = 0.4 cm of a] (b);
\vertex [above right = 5 cm of b] (u21);
\vertex [above left = 5 cm of u21] (u22);
\vertex [right = 0.4 cm of b] (c);
\vertex [above right = 5 cm of c] (u31);
\vertex [above left = 5 cm of u31] (u32);
\vertex [above right = 2 cm of u31] (f1);
\vertex [above right = 3 cm of f1] (f2);
\vertex [below right = 3 cm of f1] (f3);
\diagram* {
(a) -- [fermion] (u11) -- [fermion] (u12),
(b) -- [fermion] (u21) -- [fermion] (u22),
(c) -- [fermion] (u31) -- [fermion] (u32),
(u31) -- [boson] (f1),
(f1) -- [fermion] (f2);
(f1) -- [fermion] (f3);
};
\end{feynman}
\end{tikzpicture}
\end{document}
但我有两个问题:
我无法得到玻色子的锯齿线,它看起来和光子一模一样。软件包支持锯齿线
feynmf
,但我不确定是否可以将其合并到使用 TikZ 的图表中。我希望能够让玻色子显得更突出,这样波的振幅应该更大,但我也不知道该怎么做。我尝试了更改
size=#
或使用键的选项large
,但都不起作用。
答案1
tikz-feynman
您可以使用命令修改元素(例如boson
)的样式\tikzfeynmanset
。但是,通常此命令会附加到预定义样式而不是覆盖它,在这种情况下,这意味着您仍然可以获得玻色子的正弦波混合与其他一些模式一样。
要实际重新定义元素,您可以boson@@
使用设置内部元素\tikzfeynmanset
。由于此名称包含@
符号,因此您需要在代码周围放置\makeatletter
和\makeatother
以进行修改。除此之外,您只需从中复制源代码的相关部分tikz-feynman
并修改样式的任何部分即可。
锯齿形图案在 TikZdecorations.pathmorphing
库中已预定义,可选择amplitude
影响图案的大小。此库已加载tikz-feynman
(用于其他装饰,例如光子的正弦波),因此您无需单独加载该库。
梅威瑟:
\documentclass{article}
\usepackage{tikz-feynman}
\makeatletter
\tikzfeynmanset{/tikzfeynman/every boson@@/.style={
/tikz/draw=none,
/tikz/decoration={name=none},
/tikz/postaction={
/tikz/draw,
/tikz/decoration={
zigzag,
amplitude=2mm,
},
/tikz/decorate=true,
}
}}
\makeatother
\begin{document}
\begin{tikzpicture}
\begin{feynman}
\vertex (a);
\vertex [above right = 5 cm of a] (u11);
\vertex [above left = 5 cm of u11] (u12);
\vertex [right = 0.4 cm of a] (b);
\vertex [above right = 5 cm of b] (u21);
\vertex [above left = 5 cm of u21] (u22);
\vertex [right = 0.4 cm of b] (c);
\vertex [above right = 5 cm of c] (u31);
\vertex [above left = 5 cm of u31] (u32);
\vertex [above right = 2 cm of u31] (f1);
\vertex [above right = 3 cm of f1] (f2);
\vertex [below right = 3 cm of f1] (f3);
\diagram* {
(a) -- [fermion] (u11) -- [fermion] (u12),
(b) -- [fermion] (u21) -- [fermion] (u22),
(c) -- [fermion] (u31) -- [fermion] (u32),
(u31) -- [boson] (f1),
(f1) -- [fermion] (f2);
(f1) -- [fermion] (f3);
(f2) -- [photon] (f3);
};
\end{feynman}
\end{tikzpicture}
\end{document}
结果:
为了进行比较,我还在两个随机节点之间添加了一个光子(这可能违反了某些物理定律)。
注意:为了使您的代码更清晰,最好不要混合tikz-feynman
和feynmf
,除非绝对必要。
答案2
可以按照手册中的说明创建自己的样式。这里我创建了yourboson
蓝色的样式(当然可以修改)。
\tikzfeynmanset{
yourboson/.style={
blue,
decoration={zigzag,amplitude=2mm,segment length=4mm,pre,pre length=2pt, post,post length=2pt},decorate}
}
其优点是可以保持原有的风格。
\documentclass[border=5mm]{standalone}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\usetikzlibrary {decorations}
\tikzfeynmanset{
yourboson/.style={
blue,
decoration={zigzag,amplitude=2mm,segment length=4mm,pre,pre length=2pt, post,post length=2pt},decorate}
}
\begin{tikzpicture}
\begin{feynman}
\vertex (a);
\vertex [above right = 5 cm of a] (u11);
\vertex [above left = 5 cm of u11] (u12);
\vertex [right = 0.4 cm of a] (b);
\vertex [above right = 5 cm of b] (u21);
\vertex [above left = 5 cm of u21] (u22);
\vertex [right = 0.4 cm of b] (c);
\vertex [above right = 5 cm of c] (u31);
\vertex [above left = 5 cm of u31] (u32);
\vertex [above right = 2 cm of u31] (f1);
\vertex [above right = 3 cm of f1] (f2);
\vertex [below right = 3 cm of f1] (f3);
\diagram* {
(a) -- [fermion] (u11) -- [fermion] (u12),
(b) -- [fermion] (u21) -- [fermion] (u22),
(c) -- [fermion] (u31) -- [fermion] (u32),
(u31) -- [yourboson] (f1),
(f1) -- [fermion] (f2);
(f1) -- [fermion] (f3);
};
\end{feynman}
\end{tikzpicture}
\end{document}