用 tikz-feynman 包绘制 Feynman 图的时候,如何绘制外线?图中红色直线即为所谓的外线。

2020-05-18 09:39发布

## 编译环境 操作系统 * [x] Windows 7/8/10 * [ ] macOS * [ ] Linux `若需勾选,请把[ ]改成[x]` Tex发行版 * [x] TexLive ...

## 编译环境 操作系统 * [x] Windows 7/8/10 * [ ] macOS * [ ] Linux `若需勾选,请把[ ]改成[x]` Tex发行版 * [x] TexLive 2019 * [ ] MikTeX `版本号` * [ ] CTeX `若需勾选,请把[ ]改成[x]` ## 我的问题 用 tikz-feynman 包绘制 Feynman 图的时候,如何绘制外线?图中红色直线即为所谓的外线,即不是连接两个顶点的线。 ``` \documentclass{article} \usepackage{amsmath} \usepackage[compat=1.1.0]{tikz-feynman} \begin{document} \begin{tikzpicture}[line width=.7pt] \begin{feynman} \vertex (v1); \vertex [right=2cm of v1] (v2); \vertex at ($(v1)+(1cm,-1cm)$) (v3); \vertex [below=2cm of v3](b); \diagram*{ (v1) -- [fermion, half left, looseness=1.5, edge label=\(k_1\)] (v2), (v1) -- [fermion, edge label'=\(p_1+p_2-k_1\)] (v3), (v3) -- [fermion, edge label'=\(p_1+p_2-k_1\)] (v2), (v3) -- [fermion, out=-135, in=180, edge label'=\(k_2\)] (b) -- [fermion,out=0,in=-45] (v3) }; \draw[fill=black] (v1) circle (2pt); \draw[fill=black] (v2) circle (2pt); \draw[fill=black] (v3) circle (2pt); \end{feynman} \end{tikzpicture} \end{document} ``` ![我的代码的结果和期待的结果](https://wenda.latexstudio.net/data/attach/200518/l5h5c6fW.png "我的代码的结果和期待的结果")
1条回答
追风少年
2020-05-19 01:08
问题已解决。只需要定义一些额外的 vertex 即可。 ``` \documentclass{standalone} \usepackage{amsmath} \usepackage[compat=1.1.0]{tikz-feynman} \begin{document} \begin{tikzpicture}[line width=.7pt,baseline=(v1.south)] \begin{feynman} \vertex (v1); \vertex[right=2cm of v1] (v2); \vertex at ($(v1)+(1cm,-1cm)$) (v3); \vertex[below=2cm of v3] (b); \vertex at ($(v1)+(-1cm,+1cm)$) (i1); \vertex at ($(v1)+(-1cm,-1cm)$) (i2); \vertex at ($(v2)+(+1cm,+1cm)$) (f1); \vertex at ($(v2)+(+1cm,-1cm)$) (f2); \diagram*{ (i1) -- [fermion,edge label =\(p_1\)] (v1) -- [fermion,edge label=\(k_1\)] (v2) -- [fermion,edge label=\(q_1\)] (f1), (i2) -- [fermion,edge label'=\(p_2\)] (v1) -- [red,fermion] (v3) -- [blue,fermion] (v2) -- [fermion,edge label=\(q_2\)] (f2), (v3) -- [fermion,out=-135,in=180,edge label'=\(k_2\)] (b) -- [fermion,out=0,in=-45] (v3) }; \draw[fill=black] (v1) circle (2pt); \draw[fill=black] (v2) circle (2pt); \draw[fill=black] (v3) circle (2pt); \end{feynman} \end{tikzpicture} \end{document} ``` 这个代码实现的效果和上面期望的效果在外观上稍有不同,但完全等价。没有任何本质上的区别。

一周热门 更多>