
Начиная с недавнего ответа
с этим 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" в math-mode. Если я не приму это решение, то получу ошибки.
Каковы решения?
решение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}