Как рисовать диаграммы Виттена в XeTex?

Как рисовать диаграммы Виттена в XeTex?

Я пытаюсь воспроизвести следующее схематическое уравнение диаграмм Виттена в XeTex. Я скачал пакет TikZ, но я все еще новичок. Любая помощь будет оценена по достоинству!введите описание изображения здесь

решение1

Если у вас есть тонны таких диаграмм, вам, возможно, лучше определить среду, которая рисует заполненный круг и устанавливает базовую линию диаграммы соответствующим образом, а также делает другие вещи. Этот ответ является излишеством в том смысле, что он показывает вам два способа избежать повторения:

  1. определить новую среду.
  2. использовать execute at begin tikzpicture.

На практике используют любой из них, но это для иллюстрации этих вариантов. Кстати, насколько мне известно, Виттен набирает дифференциал ds вертикально.

\documentclass{article} 
\usepackage{tikz}
\tikzset{Witten diagram/.style={execute at begin picture={%
\draw[blue,fill=blue!20] circle[radius=\pgfkeysvalueof{/tikz/Witten/radius}];
\path node (X){\phantom{X}};
},baseline={(X.base)}},vertex/.style={circle,fill,inner sep=1.5pt,node
contents={}},
Witten/.cd,radius/.initial=1.5cm}
\newenvironment{wittendiagram}[1][]{\begin{tikzpicture}[Witten diagram,#1]}{\end{tikzpicture}}
\begin{document}
\[\begin{wittendiagram}
 \draw (-1,0) node[vertex] -- (1,0) node[vertex]; 
\end{wittendiagram}=\int\!\mathrm{d}\nu\,g(\nu)\,
\begin{wittendiagram}
 \draw[dashed] (-1,0) node[vertex] -- (90:\pgfkeysvalueof{/tikz/Witten/radius})
  node [midway,left]{$K$} node[vertex] -- (1,0) node [midway,right]{$K$}
  node[vertex];
\end{wittendiagram}\]
\end{document}

введите описание изображения здесь

А вот вторая версия с использованием environпакета и включением отсутствующего G(mille grazie @Sebastiano). Здесь диаграммы вертикально отцентрированы.

\documentclass{article} 
\usepackage{environ}
\usepackage{tikz}
\tikzset{Witten diagram/.style={execute at begin picture={%
\draw[blue,fill=blue!20] circle[radius=\pgfkeysvalueof{/tikz/Witten/radius}];
}},vertex/.style={circle,fill,inner sep=1.5pt,node
contents={}},
Witten/.cd,radius/.initial=1.5cm}
\NewEnviron{wittendiagram}[1][]{\vcenter{\hbox{\begin{tikzpicture}[Witten diagram,#1]%
\BODY
\end{tikzpicture}}}}
\begin{document}
\[\begin{wittendiagram}
 \draw (-1,0) node[vertex] -- (1,0) node[midway,above]{$G$} node[vertex]; 
\end{wittendiagram}=\int\!\mathrm{d}\nu\,g(\nu)\,
\begin{wittendiagram}
 \draw[dashed] (-1,0) node[vertex] -- (90:\pgfkeysvalueof{/tikz/Witten/radius})
  node [midway,left]{$K$} node[vertex] -- (1,0) node [midway,right]{$K$}
  node[vertex];
\end{wittendiagram}\]
\end{document}

введите описание изображения здесь

Обратите внимание, что вы можете объединить это с tikz-feynmanпакетом, если хотите добавить некоторые стандартные элементы диаграммы Фейнмана.

решение2

Менее сложное решение:

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{positioning}
\tikzset{
    mybluenode/.style={
        draw=blue,fill=blue!30, circle, minimum width=2cm, inner sep=0pt
        },
    myblacknode/.style={
        circle, inner sep=1pt, fill=black
        },
    }
\begin{document} 
\begin{tikzpicture}
\node[mybluenode] (first) {};
\draw ([xshift=-.5cm]first.center) node [myblacknode] {} -- node[above] {$G$} ([xshift=.5cm]first.center) node [myblacknode] {}; 
\node[right =4pt of first.east] (second) {$= \displaystyle\int \mathrm{d}\,\nu g(\nu)$};
\node[mybluenode, right =4pt of second.east] (third) {};
\draw[dashed] ([xshift=-.5cm]third.center) node [myblacknode] {} -- node[left] {$K$} (third.north) node [myblacknode] {} -- node[right] {$K$} ([xshift=.5cm]third.center) node [myblacknode] {}; 
\end{tikzpicture} 
\end{document}

введите описание изображения здесь

Связанный контент