
이 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*
) 명령은 다음과 같습니다 .티케이Z-파인만(CTAN) graphdrawing
Ti의 라이브러리를 사용하세요케이Z는 노드 배치를 결정하기 위해 알고리즘을 사용합니다. 이러한 알고리즘은 순수 좌표를 처리할 수 없으므로 불행히도 절대 좌표를 가질 수 없습니다.
\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}
좌표에는 쉼표가 있으므로 ,
좌표를 중괄호로 묶어야 합니다. {}
그렇지 않으면 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}