釘住頂點

釘住頂點

在此 MWE(最小工作範例)中

\RequirePackage{luatex85}
\documentclass{article}
\thispagestyle{empty}
\usepackage{tikz}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\begin{tikzpicture}
  \begin{feynman}
    \vertex (it) at (0, 0);
    \vertex (ib) at ($(it) + (1.1, 1.1)$);
    \diagram*
        {
          (it) -- [photon] (ib),
          (1, 2) -- [fermion] (ib),
        };
       \draw[->] (1, 2) -- (ib);
  \end{feynman}
\end{tikzpicture}
\end{document}

在行

\vertex (ib) at ($(it) + (1.1, 1.1)$);
\draw[->] (1, 2) -- (ib);

可以看出 tikz 在定義座標方面的靈活性。然而,(1,2)線上的即時座標

(1, 2) -- [fermion] (ib),

不被接受。

然而,非常希望在 的範圍內定義座標並執行座標算術\diagram

有什麼建議麼?

答案1

\diagram(和)命令\diagram*來自kZ-費曼(CTAN)使用graphdrawingTi 中的函式庫kZ 使用演算法來決定節點的位置。這些演算法無法處理純座標,因此不幸的是,永遠不可能有

\diagram* {
  (1, 2) -- (i1),
};

話雖如此,這裡有兩種可能對您有幫助的選擇。

釘住頂點

可以透過 ; 向演算法提供有關頂點最終位置的提示desired at=<coordinate>;但是,某些演算法不支援這一點,並且會完全忽略該提示。

為了更有力,可以使用 ,nail at=<coordinate>它不僅向演算法提供提示,而且隨後忽略底層演算法計算的座標並用指定的座標覆蓋它。由於這是一種相當暴力的方法,因此可能會導致一些令人驚訝的結果。

下面是一個正在運行的鍵的範例,它完全指定了所有內容,以便為玻色子線創建輕微的傾斜:

\RequirePackage{luatex85}
\documentclass[tikz, border=10pt]{standalone}

\usepackage[compat=1.1.0]{tikz-feynman}

\begin{document}
\begin{tikzpicture}
  \begin{feynman}
    \diagram {
      i1 [nail at={(-2, 1)}]
      -- [fermion] a
      -- [fermion] i2 [nail at={(-2, -1)}],
      a [nail at={(-1, 0.2)}] -- [boson] b [nail at={(1, -0.2)}],
      f1 [nail at={(2, 1)}]
      -- [fermion] b
      -- [fermion] f2 [nail at={(2, -1)}],
    };
  \end{feynman}
\end{tikzpicture}
\end{document}

輸出

請注意,由於座標有逗號,,因此必須將座標用大括號括起來{},否則 TikZ 會將逗號理解為表示下一個選項的開始。

正如您所看到的,這很快就會因所有額外的座標而變得非常混亂,而且我認為這與事先使用該命令相比並沒有帶來太大的改進\vertex

微移頂點

如果您真正感興趣的是對某些頂點進行一些調整,那麼可以使用nudge命令系列來指定這些調整(請參閱 PGF/Ti 的第 27.6 節)kZ 手冊)。這仍然使用演算法自動計算的座標,但在繪製所有內容之前稍微微調座標。

建立與上面類似的圖表的微移範例:

\RequirePackage{luatex85}
\documentclass[tikz, border=10pt]{standalone}

\usepackage[compat=1.1.0]{tikz-feynman}

\begin{document}
\feynmandiagram [horizontal=a to b] {
  i1 -- [fermion] a -- [fermion] i2,
  a [nudge up=0.2cm] -- [boson] b [nudge down=0.2cm],
  f1 -- [fermion] b -- [fermion] f2,
};
\end{document}

輸出

相關內容