我假设可以标记顶点然后移动每个标签,但我不知道该怎么做。有人能给出一些建议吗?
我尝试过的:标记每个顶点
\begin{feynman}
\vertex (v1) {\(cl\)};
\vertex[right=0.5cm of v1] (v2) {\(cl\)};
\vertex[right=1cm of v2] (v3) {\(cl\)};
\vertex[right=0.5cm of v3] (v4) {\(cl\)};;
\diagram*{(v1)--(v2), (v2)--[half left](v3)--[half left](v2),(v3)--(v4)};
\end{feynman}
这太糟糕了。然后,我尝试标记边缘:
\begin{feynman}
\vertex (v1);
\vertex[right=0.5cm of v1] (v2);
\vertex[right=1cm of v2] (v3);
\vertex[right=0.5cm of v3] (v4);
\diagram*{(v1)--[edge label={\(cl \quad\)}](v2), (v2)--[half left,edge label={\(cl \quad cl\)}](v3)--[half left,edge label={\(cl \quad cl\)}](v2),(v3)--[edge label={\(\quad cl\)}](v4)};
\end{feynman}
它看起来不是那么糟糕,但并不完美:标签距离边缘太远。
答案1
使用像\node(a) at (.6,-.5) {\small cl};
tikz 这样的硬编码坐标是一种致命的错误,只要你改变最微小的东西,它就会被破坏。
要将水平线上的标签移动到行的开始和结束,请使用
near start
和near end
要将圆圈周围的标签移近线,请减少
inner sep
不要使用内联数学将多字母内容变为斜体
% !TeX TS-program = lualatex
\documentclass{article}
\usepackage{tikz-feynman}
\begin{document}
\begin{tikzpicture}
\begin{feynman}
\vertex (v1);
\vertex[right=0.5cm of v1] (v2);
\vertex[right=1cm of v2] (v3);
\vertex[right=0.5cm of v3] (v4);
\diagram*{
(v1)--[edge label={\textit{cl}},near start](v2),
(v2)--[half left,edge label={\textit{cl\quad cl}},inner sep=1pt](v3)--[half left,edge label={\textit{cl\quad cl}},inner sep=1pt](v2),
(v3)--[edge label={\textit{cl}},near end](v4)
};
\end{feynman}
\end{tikzpicture}
\end{document}
或者,无需任何人工干预,就可以让它tikz-feynman
完成工作:
% !TeX TS-program = lualatex
\documentclass{article}
\usepackage{tikz-feynman}
\begin{document}
\begin{tikzpicture}[inner sep=2pt]
\itshape
\begin{feynman}
\diagram[horizontal=a to f,small]{
a--[edge label={cl},near start]b,
b -- [quarter right,edge label'={cl}]
c -- [quarter right,edge label'={cl}]
d -- [quarter right,edge label'={cl}]
e -- [quarter right,edge label'={cl}]
b,
d--[edge label={cl},near end]f
};
\end{feynman}
\end{tikzpicture}
\end{document}