qft-propagators.tex (33 lines)
\documentclass[tikz]{standalone}
\usepackage{mathtools}
\let\Im\relax
\DeclareMathOperator{\Im}{Im}
\let\Re\relax
\DeclareMathOperator{\Re}{Re}
\usetikzlibrary{decorations.pathmorphing}
\def\rerange{5}
\def\imrange{4}
\begin{document}
\begin{tikzpicture}[thick]
\draw[->] [decorate, decoration={zigzag, segment length=4, amplitude=1, post=lineto, post length=2}] (-\rerange, 0) -- (\rerange, 0) node[below left] {$\Re(\omega)$};
\draw[->] (0, -\imrange+1) -- (0, \imrange-1) node[below right] {$\Im(\omega)$};
\foreach \n in {-\imrange, ..., \imrange}{
\node[circle, fill, inner sep=0, minimum size=5] (omega\n) at (0, 2/3*\n) {};}
\node[left=2, align=left] (mf) at (omega3) {Matsubara\\frequencies};
\draw[red, dashed] (-\rerange, -1) -- (\rerange, -1) node[below, very near start] {advanced};
\draw[blue, dashed] (-\rerange, 1) -- (\rerange, 1) node[above, very near start] {retarded};
\draw[orange, dashed] (-\rerange, -1) -- (\rerange, 1) node[below right, very near end] {Feynman};
\end{tikzpicture}
\end{document}
qft-propagators.typ (101 lines)
#import "@preview/cetz:0.3.2": canvas, draw, decorations
#import draw: line, content, circle
#set page(width: auto, height: auto, margin: 5pt)
#let re-range = 5
#let im-range = 4
#let arrow-style = (end: "stealth", fill: black, scale: 0.5)
#canvas({
// Axes
// Real axis with zigzag decoration
// TODO: add arrow at the end, requireshttps://github.com/cetz-package/cetz/issues/446
decorations.zigzag(
line(
(-re-range, 0),
(re-range, 0),
),
amplitude: 0.1,
segment-length: 0.2,
name: "x-axis",
mark: arrow-style,
)
content(
"x-axis.end",
$"Re"(omega)$,
anchor: "north-east",
padding: (top: 5pt),
)
// Imaginary axis
line(
(0, -im-range + 1),
(0, im-range - 1),
mark: arrow-style,
name: "y-axis",
)
content(
"y-axis.end",
$"Im"(omega)$,
anchor: "north-west",
padding: (left: 5pt),
)
// Matsubara frequencies
for n in range(-im-range, im-range + 1) {
circle(
(0, 2 / 3 * n),
radius: 0.05,
fill: black,
name: "omega" + str(n),
)
}
content(
(-1.1, 2),
align(right)[Matsubara\ frequencies],
)
// Propagators
// Advanced propagator (red)
line(
(-re-range, -1),
(re-range, -1),
stroke: (paint: red, dash: "dashed"),
name: "advanced",
)
content(
(rel: (0, -0.4), to: "advanced.start"),
text(red)[advanced],
anchor: "south-west",
padding: (left: 5pt),
)
// Retarded propagator (blue)
line(
(-re-range, 1),
(re-range, 1),
stroke: (paint: blue, dash: "dashed"),
name: "retarded",
)
content(
"retarded.start",
text(blue)[retarded],
anchor: "south-west",
padding: 2pt,
)
// Feynman propagator (orange)
line(
(-re-range, -1),
(re-range, 1),
stroke: (paint: orange, dash: "dashed"),
name: "feynman",
)
content(
(rel: (-0.7, -0.55), to: "feynman.end"),
text(orange)[Feynman],
padding: 2pt,
)
})