Tikz 图片(弧形)无法定位

Tikz 图片(弧形)无法定位

我正在尝试将用 Tikz 完成的圆弧(代表电流)与费曼图(用 feynmp 完成)放在一起,但即使尝试更改 Tikz 图片的坐标它也不会改变。

我的代码如下:

    \documentclass[margin=25 mm]{standalone}
    \usepackage{amsmath,amssymb}
    \usepackage{graphicx}
    \usepackage{feynmp-auto}
    \usepackage{tikz}  % pras correntes
    \usetikzlibrary{positioning}
    \begin{document}
  

    %%_________________________________________ feynman diagram


    \newcommand{\marrow}[5]{%
        \fmfcmd{style_def marrow#1
            expr p = drawarrow subpath (1/4, 3/4) of p shifted 6 #2 withpen pencircle scaled 0.4;
            label.#3(btex #4 etex, point 0.5 of p shifted 6 #2);
            enddef;}
        \fmf{marrow#1,tension=0}{#5}}
    
    %%_________________________________________ 

    \begin{fmffile}{dgs}
    \begin{fmfgraph*}(150,100)
        \fmfleft{i1,i2}
        \fmfright{o1,o2}
        \fmflabel{$e^-$}{i2}
        \fmflabel{$e^-$}{o2}
        \fmflabel{$\mu^-$}{i1}
        \fmflabel{$\mu^-$}{o1}
        \fmf{fermion}{i2,v2,o2}
        \marrow{ea}{ up }{top}{$P_A$}{i2,v2}
        \marrow{eb}{down}{bot}{$P_C$}{v2,o2}
        \fmf{fermion}{i1,v1,o1}
        \marrow{ma}{down}{bot}{$P_B$}{i1,v1}
        \marrow{mb}{ up }{top}{$P_D$}{v1,o1}
        \fmf{photon,label=$\gamma$}{v2,v1}
    \end{fmfgraph*}
    \end{fmffile}

    %%_________________________________________end of feynman diagram

    %%%_________________________________________ tikz pictures: 

    \begin{tikzpicture}
    \draw[blue, ultra thick, ->] (0,0)  arc[radius = 20mm, start angle= 150, end angle= 25];
    \end{tikzpicture}

    \begin{tikzpicture}
    \draw[blue, ultra thick, ->] (0,0)  arc[radius = 20mm, start angle= 210, end angle= 335];
    \end{tikzpicture}


\end{document}

结果如下:

在此处输入图片描述

附言:为了使图表出现在 pdf 上,您必须使用 metapost 编译来编译 metapost 辅助文件。

我希望弧线位于图表的上方和下方。

答案1

内的坐标tikzpicture与页面或文本块无关,仅与同一 内的其他坐标有关tikzpicture。图表的边界框被裁剪为图表的内容,然后由 TeX 将其放置在页面上,就像将图像或字母放置在页面上一样。因此,\tikz\draw (0,0) -- (1,0);看起来与 完全相同,\tikz\draw (10,10) -- (11,10);因为两者都是tikzpicture由长度为 1 的单个水平箭头组成的 。(\tikz是环境的缩写tikzpicture。)

因此,您会看到页面上有三个单独的框,一个接一个。一个框用于费曼图,一个框用于每个弧。由于课程的standalone工作方式,它们彼此相邻。例如,如果这是在课程中,它们将彼此叠放在一起,因为每个单独的图表之间都有一个段落分隔符(一个空行)。如果您将选项添加到课程中,article您可以获得相同的结果standalonevarwidth

因此,针对此特定情况的一个快速解决方法是将所有三个图放在一个中center environment,首先是 TikZ 制作的顶部圆弧,然后是费曼图,然后是第二条圆弧。这是可行的,因为费曼图关于垂直方向对称。

不过,最好按照 John Kormylo 在评论中建议的那样做,因为这样您就可以将所有内容放在同一个位置tikzpicture,并相对于其他图表元素定位弧线。或者可能使用tikz-feynman包来绘制图表。

%\documentclass{article}
\documentclass[border=25mm, varwidth=true]{standalone} % <-- added varwidth=true

    \usepackage{amsmath,amssymb}
    \usepackage{feynmp-auto}
    \usepackage{tikz}  % pras correntes
    \usetikzlibrary{positioning}
    \newcommand{\marrow}[5]{%
        \fmfcmd{style_def marrow#1
            expr p = drawarrow subpath (1/4, 3/4) of p shifted 6 #2 withpen pencircle scaled 0.4;
            label.#3(btex #4 etex, point 0.5 of p shifted 6 #2);
            enddef;}
        \fmf{marrow#1,tension=0}{#5}}
    
    \begin{document}
  
  \begin{center}
    \begin{tikzpicture}
    \draw[blue, ultra thick, ->] (0,0)  arc[radius = 20mm, start angle= 150, end angle= 25];
    \end{tikzpicture}

    \begin{fmffile}{dgs}
    \begin{fmfgraph*}(150,100)
        \fmfleft{i1,i2}
        \fmfright{o1,o2}
        \fmflabel{$e^-$}{i2}
        \fmflabel{$e^-$}{o2}
        \fmflabel{$\mu^-$}{i1}
        \fmflabel{$\mu^-$}{o1}
        \fmf{fermion}{i2,v2,o2}
        \marrow{ea}{ up }{top}{$P_A$}{i2,v2}
        \marrow{eb}{down}{bot}{$P_C$}{v2,o2}
        \fmf{fermion}{i1,v1,o1}
        \marrow{ma}{down}{bot}{$P_B$}{i1,v1}
        \marrow{mb}{ up }{top}{$P_D$}{v1,o1}
        \fmf{photon,label=$\gamma$}{v2,v1}
    \end{fmfgraph*}
    \end{fmffile}

    %%_________________________________________end of feynman diagram

    %%%_________________________________________ tikz pictures: 


    \begin{tikzpicture}
    \draw[blue, ultra thick, ->] (0,0)  arc[radius = 20mm, start angle= 210, end angle= 335];
    \end{tikzpicture}

\end{center}
\end{document}

在此处输入图片描述

相关内容