TikZ-Feymann 패키지의 이상한 라벨과 수학 모드의 어려움

TikZ-Feymann 패키지의 이상한 라벨과 수학 모드의 어려움

최근 답변부터 시작

여기에 이미지 설명을 입력하세요

이 MWE를 사용하면:

\documentclass[a4paper,12pt]{article}
\usepackage{amssymb,amsmath}

\usepackage{tikz-feynman}
\tikzfeynmanset{compat=1.1.0}
\newcommand{\virgola}{\smash{\raisebox{0.1ex}{,}}}
\begin{document}
\feynmandiagram [layered layout, horizontal=b to c] {
a -- [boson,edge label'=\(p\virgola a\),charged boson] b
-- [fermion, half left, looseness=1.5,edge label'=\(\scriptstyle q+\frac{p}{2}\)] c
-- [fermion, half left, looseness=1.5, edge label'=\(\scriptstyle q-\frac{p}{2}\)] b,
c -- [boson,edge label'=\(p\virgola a\),charged boson] d,
};

\end{document}

나는 다음과 같은 어려움을 겪었습니다.

  1. 모든 페르미온의 라벨을 그래프 바깥쪽에 놓을 수는 없습니다. 매뉴얼을 읽어보니 보존, 광자 등 아래에 배치하는 옵션만 있습니다. 제 생각에는 이 옵션만 존재하는 것 같습니다: edge label';
  2. 라벨에는 기호만 넣을 수 있나요? 예를 들어 수학 모드에서 쉼표 "virgola"를 만들었습니다. 이 솔루션을 채택하지 않으면 오류가 발생합니다.

해결책은 무엇입니까?

답변1

에서 는 "레이블을 줄의 반대쪽으로 이동"을 의미하므로 대신 edge label'사용 하십시오 .'edge labeledge label'

쉼표와 관련하여 문제는 옵션 목록이 쉼표로 구분된 목록이므로 항목 중 하나에 쉼표가 있으면 중괄호로 보호해야 한다는 것입니다. 즉 , foo={bar, baz}대신에 을 사용하십시오 foo=bar,baz. 그렇지 않으면 파서가 쉼표로 인해 혼동됩니다. 귀하의 경우에는 edge label'={\(p, a\)}.

여기에 이미지 설명을 입력하세요

\documentclass[a4paper,12pt]{article}
\usepackage{amssymb,amsmath}
\usepackage{tikz-feynman}
\tikzfeynmanset{compat=1.1.0}
\begin{document}
\feynmandiagram [layered layout, horizontal=b to c] {
a -- [boson,edge label'={\(p, a\)},charged boson] b
-- [fermion, half left, looseness=1.5,edge label=\(\scriptstyle q+\frac{p}{2}\)] c
-- [fermion, half left, looseness=1.5, edge label=\(\scriptstyle q-\frac{p}{2}\)] b,
c -- [boson,edge label'={\(p,a\)},charged boson] d,
};

\end{document}

관련 정보