
Eu gostaria de produzir esses diagramas usandoTikz-Feynman
.
O que eu tenho até agora é
\RequirePackage{luatex85}
\documentclass{standalone}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
$\feynmandiagram [horizontal=a to b, layered layout, baseline=(i1.base)] {
i1 -- a [dot]
-- [photon,half left,momentum'=\(q\)] b [dot]
-- [photon,half left,momentum'=\(q\)] a,
b -- f1
};
+
\feynmandiagram [horizontal=a to b, layered layout, baseline=(a.base)] {
{i1,i2} -- a [dot]
-- [photon,half left,momentum'=\(q\)] b [crossed dot]
-- [photon,half left,momentum'=\(q\)] a,
};$
\end{document}
Existem algumas questões em aberto:
- Como posso mover as setas de impulso para fora dos loops?
- Como posso encurtar as linhas de entrada e saída?
- Como posso alinhar verticalmente com precisão o centro de ambos os diagramas com o sinal de mais?
- Como posso adicionar o ponto cruzado no primeiro diagrama?
Atualizar
Com a ajuda deJP-Elliseu consegui
\RequirePackage{luatex85}
\documentclass{standalone}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
$\feynmandiagram [horizontal=a to c,inline=(a.base)] {
a [dot] -- [charged boson,quarter left,edge label=\(q\)] b
-- [photon,quarter left] c [dot]
-- [charged boson,quarter left,edge label=\(q\)] d [crossed dot]
-- [charged boson,quarter left,edge label=\(q\)] a,
f1 -- c,
i1 -- a,
};
\quad\raisebox{-0.5ex}{+}\quad
\feynmandiagram [horizontal=a to b, layered layout, inline=(a.base)] {
{i1,i2} -- a [dot]
-- [charged boson,half left,edge label=\(q\)] b [crossed dot]
-- [charged boson,half left,edge label=\(q\)] a [desired at={(0, 0)}],
};$
\end{document}
Uma questão permanece: existe uma maneira de mover a seta charged boson
até edge label
o final de uma linha? Minha intenção é colocá-los no topo do arco superior do primeiro diagrama (e não no meio do primeiro quarto).
Responder1
Ótimo trabalho nos diagramas já!
Então deixe-me responder às questões:
Como posso mover as setas de impulso para fora dos loops?
A momentum
chave vem em duas formas: momentum
e momentum'
. Eles diferem apenas em termos do lado em que as flechas são colocadas; então usar momentum
resolve o problema no seu caso.
Como posso encurtar as linhas de entrada e saída?
Recentemente respondi outra pergunta neste site que explorou o uso de nudge
. Se você deseja apenas ajustar especificamente as linhas externas, isso pode ser usado. Alternativamente, talvez você queira ajustar todo o diagrama para ficar menor (pois parece que você os terá dentro de uma equação). Isto pode ser conseguido com small
.
Como posso alinhar verticalmente com precisão o centro de ambos os diagramas com o sinal de mais?
Você está correto ao usar baseline
; entretanto, como você notou, o símbolo '+' não está realmente na linha de base e está um pouco acima. A 'distância mágica' da linha de base até a barra horizontal no '+' é -\the\dimexpr\fontdimen22\textfont2\relax
; embora eu não me lembre de onde consegui isso originalmente neste site.
A baseline
chave pode então assumir um nó (como você fez) ou uma distância real de deslocamento. No caso em que uma distância é especificada, esta é relativa à (0, 0)
coordenada que, se nenhuma outra coordenada for especificada, será a localização do primeiro vértice. Para o primeiro diagrama está tudo bem, mas no segundo caso eu digo ao algoritmo que (a)
deve (0, 0)
usar a desired at
chave.
Como posso adicionar o ponto cruzado no primeiro diagrama?
Você pode adicionar vértices extras em locais fixos, embora infelizmente não possa fazer isso dentro do \feynmandiagram
comando. A solução abaixo utiliza o \diagram
comando dentro de um {feynman}
ambiente, e depois coloca manualmente o ponto cruzado. O ponto intermediário é calculado com (a)!0.5!(b)
e, em seguida, é movido para baixo até ficar bem.
Aqui está a solução que implementa tudo. Observe que usei ambos nudge
e small
. Isso significa que o segundo diagrama tem tudo um pouco menor (daí os pontos preenchidos e cruzados parecerem diferentes). Idealmente, eu usaria apenas um dos dois métodos, mas ambos são ilustrados aqui.
\documentclass{article}
\usepackage[compat=1.1.0]{tikz-feynman}
\def\plusheight{-\the\dimexpr\fontdimen22\textfont2\relax}
\begin{document}
\begin{equation}
\begin{tikzpicture}[baseline=\plusheight]
\begin{feynman}
\diagram [horizontal=a to b, layered layout] {
i1 [nudge right=0.7cm] -- a [dot]
-- [photon, half left, momentum=\(q\)] b [dot]
-- [photon, half left, momentum=\(q\)] a ,
b -- f1 [nudge left=0.7cm]
};
\vertex [crossed dot, fill=white] (i) at ($(a)!0.5!(b) - (0, 0.75)$) {};
\end{feynman}
\end{tikzpicture}
+
\feynmandiagram [horizontal=a to b, layered layout, small, baseline=\plusheight] {
{i1,i2} -- a [dot]
-- [photon, half left, momentum=\(q\)] b [crossed dot]
-- [photon, half left, momentum=\(q\)] a [desired at={(0, 0)}],
};
\end{equation}
\end{document}
Para responder à resposta atualizada: o charged boson
estilo é, internamente, uma combinação de boson
e with arrow=0.99
. O with arrow
estilo não está documentado neste estágio, pois não imaginei que as pessoas o usassem, mas provavelmente deveria adicioná-lo à documentação. Por alguma razão, with arrow=1
na verdade não funciona, então 0.99
é bom o suficiente.
Como resultado, você pode simplesmente substituir charged boson
pelo boson, with arrow=1
resultado desejado:
\RequirePackage{luatex85}
\documentclass{standalone}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
\feynmandiagram [horizontal=a to c, small] {
a [dot] -- [boson, with arrow=0.99, quarter left, edge label=\(q\)] b
-- [photon, quarter left] c [dot]
-- [charged boson, quarter left, edge label=\(q\)] d [crossed dot]
-- [charged boson, quarter left, edge label=\(q\)] a,
f1 -- c,
i1 -- a,
};
\end{document}
Responder2
Para o seu segundo diagrama:
% !TEX TS-program = lualatex
\RequirePackage{luatex85}
\documentclass{standalone}
\usepackage[compat=1.1.0]{tikz-feynman}
\begin{document}
$\feynmandiagram [horizontal=a to b, layered layout, baseline=(a.base)] {
{i1,i2} -- a [dot]
-- [charged boson,half left,edge label=\(q\)] b [crossed dot]
-- [charged boson,half left,edge label=\(q\)] a,
};$
\end{document}
Ou com pontas de seta personalizadas:
% !TEX TS-program = lualatex
\RequirePackage{luatex85}
\documentclass{standalone}
\usepackage[compat=1.1.0]{tikz-feynman}
\tikzfeynmanset{ with arrow/.style = {
decoration={
markings,
mark=at position 0.5
with {\arrow[xshift=1mm]{Stealth[width=2mm,length=2mm]}}
},
postaction=decorate}
}
\begin{document}
$\feynmandiagram [horizontal=a to b, layered layout, baseline=(a.base)] {
{i1,i2} -- a [dot]
-- [charged boson,half left,edge label=\(q\)] b [crossed dot]
-- [charged boson,half left,edge label=\(q\)] a,
};$
\end{document}
O mesmo com o primeiro diagrama:
% !TEX TS-program = lualatex
\RequirePackage{luatex85}
\documentclass{standalone}
\usepackage[compat=1.1.0]{tikz-feynman}
\tikzfeynmanset{ with arrow/.style = {
decoration={
markings,
mark=at position 0.5
with {\arrow[xshift=1mm]{Stealth[width=1.8mm,length=1.8mm]}}
},
postaction=decorate}
}
\begin{document}
$\feynmandiagram [horizontal'=a to c,inline=(a.base)] {
a [dot] -- [charged boson,half left,edge label=\(q\)] c [dot]
-- [charged boson,quarter left,edge label=\(q\)] d [crossed dot, yshift=0.4cm]
-- [charged boson,quarter left,edge label=\(q\)] a,
f1[yshift=-0.465cm] -- c,
i1[yshift=-0.465cm] -- a,
};
$
\end{document}