从最近的答案开始
使用这个 MWE:
\documentclass[a4paper,12pt]{article}
\usepackage{amssymb,amsmath}
\usepackage{tikz-feynman}
\tikzfeynmanset{compat=1.1.0}
\newcommand{\virgola}{\smash{\raisebox{0.1ex}{,}}}
\begin{document}
\feynmandiagram [layered layout, horizontal=b to c] {
a -- [boson,edge label'=\(p\virgola a\),charged boson] b
-- [fermion, half left, looseness=1.5,edge label'=\(\scriptstyle q+\frac{p}{2}\)] c
-- [fermion, half left, looseness=1.5, edge label'=\(\scriptstyle q-\frac{p}{2}\)] b,
c -- [boson,edge label'=\(p\virgola a\),charged boson] d,
};
\end{document}
我遇到了这些困难:
- 我无法将每个费米子的标签放在图表之外。我读了手册,只有放置在玻色子、光子等下的选项。我认为只存在这个选项:
edge label'
;- 我可以只在标签中放入符号吗?例如,我在数学模式中创建了一个逗号“virgola”。如果我不采用此解决方案,就会出现错误。
有什么解决方案?
答案1
在 中edge label'
, 的'
意思是“将标签移到线的另一侧”,所以使用edge label
而不是edge label'
。
关于逗号,问题在于选项列表是用逗号分隔的列表,因此如果某个条目中有逗号,则需要用括号保护它。换句话说,使用foo={bar, baz}
而不是foo=bar,baz
,否则解析器会被逗号搞糊涂。在你的情况下,edge label'={\(p, a\)}
。
\documentclass[a4paper,12pt]{article}
\usepackage{amssymb,amsmath}
\usepackage{tikz-feynman}
\tikzfeynmanset{compat=1.1.0}
\begin{document}
\feynmandiagram [layered layout, horizontal=b to c] {
a -- [boson,edge label'={\(p, a\)},charged boson] b
-- [fermion, half left, looseness=1.5,edge label=\(\scriptstyle q+\frac{p}{2}\)] c
-- [fermion, half left, looseness=1.5, edge label=\(\scriptstyle q-\frac{p}{2}\)] b,
c -- [boson,edge label'={\(p,a\)},charged boson] d,
};
\end{document}