TikZ-Feynman绘制无水平传播子费曼图的方法问询
实现方案
你之前修改失效的原因有两点:
a -- a属于自连接边,不会被tikz-feynman识别为顶点合并操作,会被布局引擎直接忽略- 当图中仅存在单个交互顶点时,tikz-feynman的自动布局默认会将所有连接到该顶点的边按圆周角度均匀分布,无法自动生成你需要的直角四端结构
直接使用手动预定义顶点位置的方式即可实现需求,不需要添加旋转指令,编译后完全匹配目标效果。
完整可运行代码(需使用LuaTeX编译)
\documentclass{article} \usepackage[utf8]{inputenc} \usepackage[compat=1.1.0]{tikz-feynman} \begin{document} \begin{tikzpicture} \begin{feynman} % 预先定义所有顶点的位置,跳过自动布局的位置计算 \vertex (a) at (0,0); % 唯一的交互顶点 \vertex [left=of a, particle=\(e^{-}\)] (i1); \vertex [above right=of a, particle=\(\gamma\)] (f1); \vertex [above left=of a, particle=\(\gamma\)] (i2); \vertex [right=of a, particle=\(e^{-}\)] (f2); % 用带星号的diagram命令按预设位置连线,不触发自动布局 \diagram* { (i1) -- [fermion, momentum'=\(p\)] (a) -- [photon, reversed momentum'=\(k\)] (f1), (i2) -- [photon, reversed momentum'=\(k'\)] (a) -- [fermion, momentum'=\(p'\)] (f2), }; \end{feynman} \end{tikzpicture} \end{document}
调整说明
- 如果你需要微调粒子标签、动量箭头的位置,直接修改对应边的参数、顶点相对位置即可,不会破坏整体结构
- 动量箭头方向没有严格要求的话,也可以直接删除
momentum相关参数简化代码
内容的提问来源于stack exchange,提问作者Jakov
相关产品推荐
相关产品推荐

