
この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);
(1,2)
座標を定義する際のtikzの柔軟性がわかります。しかし、行のオンザフライ座標は
(1, 2) -- [fermion] (ib),
受け入れられません。
それでも、 のスコープ内で座標を定義し、座標演算を実行することが非常に望ましいです\diagram
。
助言がありますか?
答え1
\diagram
(および\diagram*
)コマンドはティけZ-ファインマン(CTAN) graphdrawing
Tiのライブラリを使用するけZはノードの配置を決定するアルゴリズムを使用する。これらのアルゴリズムは純粋な座標を扱うことができないため、残念ながら
\diagram* {
(1, 2) -- (i1),
};
そうは言っても、役に立つかもしれない 2 つの代替案を次に示します。
頂点を釘で固定する
を使用して、頂点の最終的な配置に関するヒントをアルゴリズムに与えることができます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}
座標にはコンマが含まれるため,
、座標を中括弧で囲む必要があることに注意してください{}
。そうでない場合はTiけZ は、コンマが次のオプションの開始を示すものとして理解します。
ご覧のとおり、余分な座標があるとすぐに非常に乱雑になる可能性があります。また、\vertex
事前にコマンドを使用するよりも大きな改善は得られないと思います。
頂点を微調整する
特定の頂点にちょっとした調整を加えたいのであれば、nudge
コマンド群で指定することができます(PGF/Tiの§27.6を参照)。けZ 手動)。これは、アルゴリズムによって自動的に計算された座標を引き続き使用しますが、すべてを描画する前に座標を少しだけ移動します。
上記と同様の図を作成するためのナッジの実行例:
\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}