Loops e inserções em Tikz-Feynman

Loops e inserções em Tikz-Feynman

Eu gostaria de produzir esses diagramas usandoTikz-Feynman.

insira a descrição da imagem aqui

O que eu tenho até agora é

insira a descrição da imagem aqui

\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:

  1. Como posso mover as setas de impulso para fora dos loops?
  2. Como posso encurtar as linhas de entrada e saída?
  3. Como posso alinhar verticalmente com precisão o centro de ambos os diagramas com o sinal de mais?
  4. Como posso adicionar o ponto cruzado no primeiro diagrama?

Atualizar

Com a ajuda deJP-Elliseu consegui

insira a descrição da imagem aqui

\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 bosonaté edge labelo 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 momentumchave vem em duas formas: momentume momentum'. Eles diferem apenas em termos do lado em que as flechas são colocadas; então usar momentumresolve 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 baselinechave 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 atchave.

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 \feynmandiagramcomando. A solução abaixo utiliza o \diagramcomando 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 nudgee 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}

saída


Para responder à resposta atualizada: o charged bosonestilo é, internamente, uma combinação de bosone with arrow=0.99. O with arrowestilo 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=1na verdade não funciona, então 0.99é bom o suficiente.

Como resultado, você pode simplesmente substituir charged bosonpelo boson, with arrow=1resultado 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}

saída

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}

insira a descrição da imagem aqui


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}

insira a descrição da imagem aqui

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}

insira a descrição da imagem aqui

informação relacionada