diff --git a/assets/conv2d/conv2d-hd.png b/assets/2d-convolution/2d-convolution-hd.png
similarity index 100%
rename from assets/conv2d/conv2d-hd.png
rename to assets/2d-convolution/2d-convolution-hd.png
diff --git a/assets/conv2d/conv2d.pdf b/assets/2d-convolution/2d-convolution.pdf
similarity index 100%
rename from assets/conv2d/conv2d.pdf
rename to assets/2d-convolution/2d-convolution.pdf
diff --git a/assets/conv2d/conv2d.png b/assets/2d-convolution/2d-convolution.png
similarity index 100%
rename from assets/conv2d/conv2d.png
rename to assets/2d-convolution/2d-convolution.png
diff --git a/assets/conv2d/conv2d.svg b/assets/2d-convolution/2d-convolution.svg
similarity index 100%
rename from assets/conv2d/conv2d.svg
rename to assets/2d-convolution/2d-convolution.svg
diff --git a/assets/conv2d/conv2d.tex b/assets/2d-convolution/2d-convolution.tex
similarity index 100%
rename from assets/conv2d/conv2d.tex
rename to assets/2d-convolution/2d-convolution.tex
diff --git a/assets/conv2d/conv2d.typ b/assets/2d-convolution/2d-convolution.typ
similarity index 100%
rename from assets/conv2d/conv2d.typ
rename to assets/2d-convolution/2d-convolution.typ
diff --git a/assets/conv2d/conv2d.yml b/assets/2d-convolution/2d-convolution.yml
similarity index 100%
rename from assets/conv2d/conv2d.yml
rename to assets/2d-convolution/2d-convolution.yml
diff --git a/assets/gnn-node-aggregation/gnn-node-aggregation-hd.png b/assets/gnn-node-aggregation/gnn-node-aggregation-hd.png
new file mode 100644
index 00000000..f0ee2a23
Binary files /dev/null and b/assets/gnn-node-aggregation/gnn-node-aggregation-hd.png differ
diff --git a/assets/gnn-node-aggregation/gnn-node-aggregation.pdf b/assets/gnn-node-aggregation/gnn-node-aggregation.pdf
new file mode 100644
index 00000000..a0d45947
Binary files /dev/null and b/assets/gnn-node-aggregation/gnn-node-aggregation.pdf differ
diff --git a/assets/gnn-node-aggregation/gnn-node-aggregation.png b/assets/gnn-node-aggregation/gnn-node-aggregation.png
new file mode 100644
index 00000000..6a83ba46
Binary files /dev/null and b/assets/gnn-node-aggregation/gnn-node-aggregation.png differ
diff --git a/assets/gnn-node-aggregation/gnn-node-aggregation.svg b/assets/gnn-node-aggregation/gnn-node-aggregation.svg
new file mode 100644
index 00000000..f41c18db
--- /dev/null
+++ b/assets/gnn-node-aggregation/gnn-node-aggregation.svg
@@ -0,0 +1,308 @@
+
+
diff --git a/assets/gnn-node-aggregation/gnn-node-aggregation.typ b/assets/gnn-node-aggregation/gnn-node-aggregation.typ
new file mode 100644
index 00000000..adc535bc
--- /dev/null
+++ b/assets/gnn-node-aggregation/gnn-node-aggregation.typ
@@ -0,0 +1,137 @@
+#import "@preview/cetz:0.3.1": canvas, draw
+
+#set page(width: auto, height: auto, margin: 8pt)
+
+#canvas({
+ import draw: line, content, circle, rect
+
+ // Styles
+ let arrow-style = (mark: (end: "stealth", fill: black, scale: 0.5, offset: 2pt), stroke: 0.5pt)
+ let edge-style = (stroke: 0.4pt)
+ let node-radius = 0.3
+ let graph-sep = 4.5 // separation between input graph and aggregation
+
+ // Node colors - ensure consistency
+ let colors = (
+ A: rgb("#ffd700"), // Gold
+ B: rgb("#ff4d4d"), // Red
+ C: rgb("#90ee90"), // Light green
+ D: rgb("#4d94ff"), // Blue
+ E: rgb("#9370db"), // Purple
+ F: rgb("#ff69b4"), // Pink
+ )
+
+ // Helper to draw a node with label
+ let draw-node(pos, label, name) = {
+ circle(
+ pos,
+ radius: node-radius,
+ fill: colors.at(label),
+ stroke: black + 0.5pt,
+ name: name,
+ )
+ content(pos, label, anchor: "center")
+ }
+
+ // Input Graph (left side)
+ // Define node positions
+ let target-pos = (-1.5, 1.2)
+ let b-pos = (0.5, 2)
+ let c-pos = (1, 1)
+ let d-pos = (-2.5, -.7)
+ let e-pos = (-0.25, -1.25)
+ let f-pos = (1.5, 0)
+
+ // Draw nodes
+ draw-node(target-pos, "A", "target")
+ draw-node(b-pos, "B", "b")
+ draw-node(c-pos, "C", "c")
+ draw-node(d-pos, "D", "d")
+ draw-node(e-pos, "E", "e")
+ draw-node(f-pos, "F", "f")
+
+ // Add target node label
+ content((rel: (0, 1.5), to: "target"), "Target Node", name: "target-label")
+ line("target-label.south", "target", ..arrow-style)
+
+ // Draw edges
+ for (start, end) in (
+ ("target", "b"),
+ ("target", "c"),
+ ("b", "c"),
+ ("target", "d"),
+ ("c", "e"),
+ ("c", "f"),
+ ("e", "f"),
+ ) {
+ line(start, end, ..edge-style)
+ }
+
+ // Add "Input Graph" label
+ content((0.25, -1.8), [Input Graph])
+
+ // Main aggregation box
+ let box-pos = (graph-sep, 0.5)
+ content(
+ box-pos,
+ [Aggregation\ for Node A],
+ name: "agg-box",
+ fill: rgb("ddd"),
+ frame: "rect",
+ stroke: 0.2pt,
+ padding: (3pt, 7pt),
+ )
+
+ // First layer nodes - renamed to show they're neighbors of A
+ let first-layer = (
+ (2, 2, "B", "a-to-b"),
+ (2, 0, "C", "a-to-c"),
+ (2, -2, "D", "a-to-d"),
+ )
+
+ // Draw first layer nodes and arrows
+ for (dx, dy, label, name) in first-layer {
+ draw-node((rel: (dx, dy), to: "agg-box.east"), label, name)
+ line(name, "agg-box.east", ..arrow-style)
+ }
+
+ content((rel: (0, .7), to: "a-to-b"), "Hop 1")
+
+ // Draw aggregation boxes for each first layer node
+ for node in ("a-to-b", "a-to-c", "a-to-d") {
+ let letter = node.split("-").at(-1)
+ content(
+ (rel: (2, 0), to: node),
+ [Aggr(#upper(letter))],
+ fill: rgb("ddd"),
+ frame: "rect",
+ stroke: 0.2pt,
+ padding: (2pt, 4pt),
+ name: "aggr-" + letter,
+ )
+ line("aggr-" + letter, node, ..arrow-style)
+ }
+
+
+ // Second layer nodes and connections - renamed to show full path
+ let second-layer = (
+ // From B-aggregation (B's neighbors)
+ ((2, 1), "A", "aggr-b", "b-to-a"),
+ ((2, 0), "C", "aggr-b", "b-to-c"),
+ // From C-aggregation (C's neighbors)
+ ((2, 1), "A", "aggr-c", "c-to-a"),
+ ((2, 0.25), "B", "aggr-c", "c-to-b"),
+ ((2, -0.5), "E", "aggr-c", "c-to-e"),
+ ((2, -1.25), "F", "aggr-c", "c-to-f"),
+ // From D-aggregation (D's neighbors)
+ ((2, 0), "A", "aggr-d", "d-to-a"),
+ )
+
+ // Draw second layer nodes and arrows
+ for ((dx, dy), label, parent, name) in second-layer {
+ draw-node((rel: (dx, dy), to: parent), label, name)
+ line(name, parent + ".east", ..arrow-style)
+ }
+
+ content((rel: (0, .7), to: "b-to-a"), "Hop 2")
+})
diff --git a/assets/gnn-node-aggregation/gnn-node-aggregation.yml b/assets/gnn-node-aggregation/gnn-node-aggregation.yml
new file mode 100644
index 00000000..b52947da
--- /dev/null
+++ b/assets/gnn-node-aggregation/gnn-node-aggregation.yml
@@ -0,0 +1,37 @@
+title: GNN Node Aggregation Process
+description: >
+ Diagram illustrating the message-passing process in graph neural networks (GNNs).
+ Shows how information flows from neighboring nodes to a target node A through
+ multiple layers of aggregation. The first layer combines information from direct
+ neighbors (B, C, D) while the second layer incorporates information from nodes
+ two hops away (E, F), demonstrating how a node's receptive field grows with
+ network depth.
+
+authors:
+ - Janosh Riebesell
+ - William L. Hamilton
+
+references:
+ - hamilton_graph_2020:
+ title: Graph Representation Learning
+ authors: William L. Hamilton
+ year: 2020
+ page: 55
+ publisher: Morgan & Claypool Publishers
+ doi: 10.2200/S01045ED1V01Y202009AIM046
+
+tags:
+ - graph-neural-networks
+ - message-passing
+ - node-aggregation
+ - neural-networks
+ - deep-learning
+ - information-flow
+ - receptive-field
+
+components:
+ - input-graph
+ - target-node
+ - aggregation-layers
+ - message-passing
+ - node-states
diff --git a/assets/kohn-sham-cycle/kohn-sham-cycle.typ b/assets/kohn-sham-cycle/kohn-sham-cycle.typ
index bbf58d8c..69046040 100644
--- a/assets/kohn-sham-cycle/kohn-sham-cycle.typ
+++ b/assets/kohn-sham-cycle/kohn-sham-cycle.typ
@@ -15,6 +15,7 @@
width: 22em,
height: 12em,
name: "enclosure",
+ radius: 5pt,
)
// Enclosure label
@@ -52,6 +53,7 @@
width: 20em,
name: "initial",
padding: (3pt, 2em, 0),
+ radius: 1em,
)
// Potential box
diff --git a/assets/made/made.typ b/assets/made/made.typ
new file mode 100644
index 00000000..b2811331
--- /dev/null
+++ b/assets/made/made.typ
@@ -0,0 +1,214 @@
+#import "@preview/cetz:0.3.1": canvas, draw
+
+#set page(width: auto, height: auto, margin: 8pt)
+
+#canvas({
+ import draw: line, content, circle, rect
+
+ // Styles
+ let arrow-style = (mark: (end: "stealth", fill: black, scale: 0.5, offset: 1pt), stroke: .5pt)
+ let node-style = (stroke: black + 0.7pt)
+ let layer-sep = 2 // now vertical separation
+ let horiz-sep = 1.3 // horizontal separation between nodes in a layer
+
+ // Helper to draw a vertical layer of nodes
+ let draw-layer(y, nodes, prefix: "", masks: none, x-offset: 0) = {
+ for i in range(nodes) {
+ let x = (nodes - 1) * horiz-sep / 2 - i * horiz-sep + x-offset
+ circle(
+ (x, y),
+ radius: 0.3,
+ name: prefix + str(i),
+ ..node-style,
+ )
+ if masks != none {
+ content((x, y), str(masks.at(i)))
+ }
+ }
+ }
+
+ // Helper to connect all nodes between layers
+ let connect-layers(from-prefix, to-prefix, from-nodes, to-nodes) = {
+ for i in range(from-nodes) {
+ for j in range(to-nodes) {
+ line(
+ from-prefix + str(i),
+ to-prefix + str(j),
+ ..arrow-style,
+ )
+ }
+ }
+ }
+
+ // Adjust x-positions for the three components
+ let fcnn-x = -5 // Autoencoder on the left
+ let mask-x = 0 // Masks in the middle
+ let made-x = 5 // MADE network on the right
+
+ // Draw autoencoder (left side)
+ // Draw all layers from bottom to top
+ for (idx, (y, nodes)) in (
+ (0, 3),
+ (layer-sep, 4),
+ (2 * layer-sep, 4),
+ (3 * layer-sep, 3),
+ ).enumerate() {
+ draw-layer(y, nodes, prefix: "fcnn" + str(idx) + "-", x-offset: fcnn-x)
+ }
+
+ // Connect autoencoder layers
+ connect-layers("fcnn0-", "fcnn1-", 3, 4)
+ connect-layers("fcnn1-", "fcnn2-", 4, 4)
+ connect-layers("fcnn2-", "fcnn3-", 4, 3)
+
+ // Add weight labels along autoencoder edges
+ let weight-offset = 0.3
+ content(
+ (fcnn-x + weight-offset + 1.35, layer-sep / 2),
+ $W_1$,
+ anchor: "west",
+ )
+ content(
+ (fcnn-x + weight-offset + 1.55, 1.5 * layer-sep),
+ $W_2$,
+ anchor: "west",
+ )
+ content(
+ (fcnn-x + weight-offset + 1.4, 2.5 * layer-sep),
+ $V$,
+ anchor: "west",
+ )
+
+ // Draw mask matrices in the middle
+ let mask-base-size = 1.25
+ let mask-sep = 2.5
+ let mask-label-offset = 1.6 // Increased for left alignment
+
+ // Helper to draw grid lines and filled cells
+ let draw-mask(x, y, rows, cols, filled-cells) = {
+ let width = mask-base-size * cols / 3 // normalize to make 3 cols = base size
+ let height = mask-base-size * rows / 3 // normalize to make 3 rows = base size
+ let cell-width = width / cols
+ let cell-height = height / rows
+
+ // Draw grid lines
+ for i in range(cols + 1) {
+ let x-pos = x - width / 2 + i * cell-width
+ line(
+ (x-pos, y),
+ (x-pos, y + height),
+ stroke: .2pt,
+ )
+ }
+ for i in range(rows + 1) {
+ let y-pos = y + i * cell-height
+ line(
+ (x - width / 2, y-pos),
+ (x + width / 2, y-pos),
+ stroke: .2pt,
+ )
+ }
+
+ // Fill cells
+ for (row, col) in filled-cells {
+ rect(
+ (x - width / 2 + col * cell-width, y + (rows - row - 1) * cell-height),
+ (x - width / 2 + (col + 1) * cell-width, y + (rows - row) * cell-height),
+ fill: black,
+ )
+ }
+ }
+
+ // Draw M_V mask (top, 2x4)
+ let mv-width = mask-base-size * 4 / 3
+ let mv-height = mask-base-size * 2 / 3
+ rect((mask-x - mv-width / 2, 2 * mask-sep), (mask-x + mv-width / 2, 2 * mask-sep + mv-height))
+ content((mask-x - mask-label-offset, 2 * mask-sep + mv-height / 2), $M_V =$)
+ draw-mask(
+ mask-x,
+ 2 * mask-sep,
+ 2,
+ 4,
+ ((0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (1, 3)),
+ )
+
+ // Draw M_W2 mask (middle, 4x4)
+ let mw2-size = mask-base-size * 4 / 3
+ rect((mask-x - mw2-size / 2, mask-sep), (mask-x + mw2-size / 2, mask-sep + mw2-size))
+ content((mask-x - mask-label-offset, mask-sep + mw2-size / 2), $M_(W_2) =$)
+ draw-mask(
+ mask-x,
+ mask-sep,
+ 4,
+ 4,
+ ((0, 0), (0, 2), (0, 3), (3, 0), (3, 2), (3, 3)),
+ )
+
+ // Draw M_W1 mask (bottom, 4x3)
+ let mw1-width = mask-base-size
+ let mw1-height = mask-base-size * 4 / 3
+ rect((mask-x - mw1-width / 2, 0), (mask-x + mw1-width / 2, mw1-height))
+ content((mask-x - mask-label-offset, mw1-height / 2), $M_(W_1) =$)
+ draw-mask(
+ mask-x,
+ 0,
+ 4,
+ 3,
+ ((0, 0), (1, 0), (2, 0), (3, 0), (2, 2)),
+ )
+
+ // Draw MADE (right side)
+ // Draw MADE layers with masks
+ for (idx, (y, nodes, masks)) in (
+ (0, 3, (3, 1, 2)),
+ (layer-sep, 4, (2, 1, 2, 2)),
+ (2 * layer-sep, 4, (1, 2, 2, 1)),
+ (3 * layer-sep, 3, (3, 1, 2)),
+ ).enumerate() {
+ draw-layer(y, nodes, prefix: "made" + str(idx) + "-", masks: masks, x-offset: made-x)
+ }
+
+ // Connect MADE layers with masked connections
+ // Layer 1 -> 2
+ for (from, tos) in ((0, ()), (1, (0, 1, 2, 3)), (2, (0, 2, 3))) {
+ let from-node = "made0-" + str(from)
+ for to in tos {
+ line("made0-" + str(from), "made1-" + str(to), ..arrow-style)
+ }
+ }
+
+ // Layer 2 -> 3
+ for (from, tos) in ((0, (1, 2)), (1, (0, 1, 2, 3)), (2, (1, 2)), (3, (1, 2))) {
+ for to in tos {
+ line("made1-" + str(from), "made2-" + str(to), ..arrow-style)
+ }
+ }
+
+ // Layer 3 -> 4
+ for (from, tos) in ((0, (0, 2)), (1, (0,)), (2, (0,)), (3, (0, 2))) {
+ for to in tos {
+ line("made2-" + str(from), "made3-" + str(to), ..arrow-style)
+ }
+ }
+
+ // Add input and output labels
+ for i in range(3) {
+ content((rel: (0, -0.6), to: "fcnn0-" + str(i)), $x_#i$)
+ content((rel: (0, 0.6), to: "fcnn3-" + str(i)), $hat(x)_#i$)
+ content((rel: (0, -0.6), to: "made0-" + str(i)), $x_#i$)
+ }
+
+ // Add MADE output labels
+ content((rel: (0, 0.6), to: "made3-0"), $p(x_3|x_2)$)
+ content((rel: (0, 0.6), to: "made3-1"), $p(x_2)$)
+ content((rel: (-.2, 0.6), to: "made3-2"), $p(x_1|x_2,x_3)$)
+
+ // Add bottom labels with vertical alignment and larger font
+ let bottom-y = -2
+ let label-size = 1.5em
+ content((fcnn-x, bottom-y), text(weight: "bold", size: label-size)[autoencoder])
+ content((mask-x - 2, bottom-y), text(weight: "bold", size: label-size)[$times$])
+ content((mask-x, bottom-y), text(weight: "bold", size: label-size)[masks])
+ content((mask-x + 2, bottom-y), text(weight: "bold", size: label-size)[$arrow.r$])
+ content((made-x, bottom-y), text(weight: "bold", size: label-size)[MADE])
+})
diff --git a/readme.md b/readme.md
index f2cbb351..c29ac610 100644
--- a/readme.md
+++ b/readme.md
@@ -1,5 +1,5 @@
- 111 Scientific Diagrams
+ 112 Scientific Diagrams
@@ -20,120 +20,120 @@ Have a TikZ/Cetz diagram you'd like to share? [Submit a PR](https://github.com/j
## Images
-| | |
-| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
-| [`autoencoder`](https://janosh.github.io/diagrams/autoencoder) [![LaTeX][latex-logo]](assets/autoencoder/autoencoder.tex) [![Typst][typst-logo]](assets/autoencoder/autoencoder.typ) | [`basis-plus-lattice`](https://janosh.github.io/diagrams/basis-plus-lattice) [![LaTeX][latex-logo]](assets/basis-plus-lattice/basis-plus-lattice.tex) [![Typst][typst-logo]](assets/basis-plus-lattice/basis-plus-lattice.typ) |
-| ![`autoencoder.png`](assets/autoencoder/autoencoder.png) | ![`basis-plus-lattice.png`](assets/basis-plus-lattice/basis-plus-lattice.png) |
-| [`bloch-sphere`](https://janosh.github.io/diagrams/bloch-sphere) [![LaTeX][latex-logo]](assets/bloch-sphere/bloch-sphere.tex) [![Typst][typst-logo]](assets/bloch-sphere/bloch-sphere.typ) | [`bose-einstein-distribution-3d`](https://janosh.github.io/diagrams/bose-einstein-distribution-3d) [![LaTeX][latex-logo]](assets/bose-einstein-distribution-3d/bose-einstein-distribution-3d.tex) |
-| ![`bloch-sphere.png`](assets/bloch-sphere/bloch-sphere.png) | ![`bose-einstein-distribution-3d.png`](assets/bose-einstein-distribution-3d/bose-einstein-distribution-3d.png) |
-| [`bose-einstein-distribution`](https://janosh.github.io/diagrams/bose-einstein-distribution) [![LaTeX][latex-logo]](assets/bose-einstein-distribution/bose-einstein-distribution.tex) [![Typst][typst-logo]](assets/bose-einstein-distribution/bose-einstein-distribution.typ) | [`branch-and-bound`](https://janosh.github.io/diagrams/branch-and-bound) [![LaTeX][latex-logo]](assets/branch-and-bound/branch-and-bound.tex) [![Typst][typst-logo]](assets/branch-and-bound/branch-and-bound.typ) |
-| ![`bose-einstein-distribution.png`](assets/bose-einstein-distribution/bose-einstein-distribution.png) | ![`branch-and-bound.png`](assets/branch-and-bound/branch-and-bound.png) |
-| [`branch-cuts-1`](https://janosh.github.io/diagrams/branch-cuts-1) [![LaTeX][latex-logo]](assets/branch-cuts-1/branch-cuts-1.tex) [![Typst][typst-logo]](assets/branch-cuts-1/branch-cuts-1.typ) | [`branch-cuts-2`](https://janosh.github.io/diagrams/branch-cuts-2) [![LaTeX][latex-logo]](assets/branch-cuts-2/branch-cuts-2.tex) |
-| ![`branch-cuts-1.png`](assets/branch-cuts-1/branch-cuts-1.png) | ![`branch-cuts-2.png`](assets/branch-cuts-2/branch-cuts-2.png) |
-| [`change-of-variables`](https://janosh.github.io/diagrams/change-of-variables) [![LaTeX][latex-logo]](assets/change-of-variables/change-of-variables.tex) [![Typst][typst-logo]](assets/change-of-variables/change-of-variables.typ) | [`closed-string-topologies`](https://janosh.github.io/diagrams/closed-string-topologies) [![LaTeX][latex-logo]](assets/closed-string-topologies/closed-string-topologies.tex) |
-| ![`change-of-variables.png`](assets/change-of-variables/change-of-variables.png) | ![`closed-string-topologies.png`](assets/closed-string-topologies/closed-string-topologies.png) |
-| [`complex-sign-function`](https://janosh.github.io/diagrams/complex-sign-function) [![LaTeX][latex-logo]](assets/complex-sign-function/complex-sign-function.tex) | [`complex-sign-plane`](https://janosh.github.io/diagrams/complex-sign-plane) [![LaTeX][latex-logo]](assets/complex-sign-plane/complex-sign-plane.tex) [![Typst][typst-logo]](assets/complex-sign-plane/complex-sign-plane.typ) |
-| ![`complex-sign-function.png`](assets/complex-sign-function/complex-sign-function.png) | ![`complex-sign-plane.png`](assets/complex-sign-plane/complex-sign-plane.png) |
-| [`concave-functions`](https://janosh.github.io/diagrams/concave-functions) [![LaTeX][latex-logo]](assets/concave-functions/concave-functions.tex) [![Typst][typst-logo]](assets/concave-functions/concave-functions.typ) | [`conv2d`](https://janosh.github.io/diagrams/conv2d) [![LaTeX][latex-logo]](assets/conv2d/conv2d.tex) [![Typst][typst-logo]](assets/conv2d/conv2d.typ) |
-| ![`concave-functions.png`](assets/concave-functions/concave-functions.png) | ![`conv2d.png`](assets/conv2d/conv2d.png) |
-| [`convex-functions`](https://janosh.github.io/diagrams/convex-functions) [![LaTeX][latex-logo]](assets/convex-functions/convex-functions.tex) [![Typst][typst-logo]](assets/convex-functions/convex-functions.typ) | [`convex-hull-of-stability`](https://janosh.github.io/diagrams/convex-hull-of-stability) [![LaTeX][latex-logo]](assets/convex-hull-of-stability/convex-hull-of-stability.tex) [![Typst][typst-logo]](assets/convex-hull-of-stability/convex-hull-of-stability.typ) |
-| ![`convex-functions.png`](assets/convex-functions/convex-functions.png) | ![`convex-hull-of-stability.png`](assets/convex-hull-of-stability/convex-hull-of-stability.png) |
-| [`critical-temperature`](https://janosh.github.io/diagrams/critical-temperature) [![LaTeX][latex-logo]](assets/critical-temperature/critical-temperature.tex) | [`cylinder-to-plane`](https://janosh.github.io/diagrams/cylinder-to-plane) [![LaTeX][latex-logo]](assets/cylinder-to-plane/cylinder-to-plane.tex) |
-| ![`critical-temperature.png`](assets/critical-temperature/critical-temperature.png) | ![`cylinder-to-plane.png`](assets/cylinder-to-plane/cylinder-to-plane.png) |
-| [`detailed-balance`](https://janosh.github.io/diagrams/detailed-balance) [![LaTeX][latex-logo]](assets/detailed-balance/detailed-balance.tex) [![Typst][typst-logo]](assets/detailed-balance/detailed-balance.typ) | [`dft-choices`](https://janosh.github.io/diagrams/dft-choices) [![LaTeX][latex-logo]](assets/dft-choices/dft-choices.tex) |
-| ![`detailed-balance.png`](assets/detailed-balance/detailed-balance.png) | ![`dft-choices.png`](assets/dft-choices/dft-choices.png) |
-| [`dft-mlff-cff-speed-accuracy-transfer`](https://janosh.github.io/diagrams/dft-mlff-cff-speed-accuracy-transfer) [![LaTeX][latex-logo]](assets/dft-mlff-cff-speed-accuracy-transfer/dft-mlff-cff-speed-accuracy-transfer.tex) [![Typst][typst-logo]](assets/dft-mlff-cff-speed-accuracy-transfer/dft-mlff-cff-speed-accuracy-transfer.typ) | [`diagrams`](https://janosh.github.io/diagrams/diagrams) [![LaTeX][latex-logo]](assets/diagrams/diagrams.tex) |
-| ![`dft-mlff-cff-speed-accuracy-transfer.png`](assets/dft-mlff-cff-speed-accuracy-transfer/dft-mlff-cff-speed-accuracy-transfer.png) | ![`diagrams.png`](assets/diagrams/diagrams.png) |
-| [`disk-to-plane`](https://janosh.github.io/diagrams/disk-to-plane) [![LaTeX][latex-logo]](assets/disk-to-plane/disk-to-plane.tex) | [`divergence`](https://janosh.github.io/diagrams/divergence) [![LaTeX][latex-logo]](assets/divergence/divergence.tex) |
-| ![`disk-to-plane.png`](assets/disk-to-plane/disk-to-plane.png) | ![`divergence.png`](assets/divergence/divergence.png) |
-| [`dropout`](https://janosh.github.io/diagrams/dropout) [![LaTeX][latex-logo]](assets/dropout/dropout.tex) [![Typst][typst-logo]](assets/dropout/dropout.typ) | [`energy-distribution-functions`](https://janosh.github.io/diagrams/energy-distribution-functions) [![LaTeX][latex-logo]](assets/energy-distribution-functions/energy-distribution-functions.tex) [![Typst][typst-logo]](assets/energy-distribution-functions/energy-distribution-functions.typ) |
-| ![`dropout.png`](assets/dropout/dropout.png) | ![`energy-distribution-functions.png`](assets/energy-distribution-functions/energy-distribution-functions.png) |
-| [`ergodic`](https://janosh.github.io/diagrams/ergodic) [![LaTeX][latex-logo]](assets/ergodic/ergodic.tex) [![Typst][typst-logo]](assets/ergodic/ergodic.typ) | [`euler-angles`](https://janosh.github.io/diagrams/euler-angles) [![LaTeX][latex-logo]](assets/euler-angles/euler-angles.tex) |
-| ![`ergodic.png`](assets/ergodic/ergodic.png) | ![`euler-angles.png`](assets/euler-angles/euler-angles.png) |
-| [`fermi-dirac-vs-temp`](https://janosh.github.io/diagrams/fermi-dirac-vs-temp) [![LaTeX][latex-logo]](assets/fermi-dirac-vs-temp/fermi-dirac-vs-temp.tex) [![Typst][typst-logo]](assets/fermi-dirac-vs-temp/fermi-dirac-vs-temp.typ) | [`ferroelectric-response`](https://janosh.github.io/diagrams/ferroelectric-response) [![LaTeX][latex-logo]](assets/ferroelectric-response/ferroelectric-response.tex) [![Typst][typst-logo]](assets/ferroelectric-response/ferroelectric-response.typ) |
-| ![`fermi-dirac-vs-temp.png`](assets/fermi-dirac-vs-temp/fermi-dirac-vs-temp.png) | ![`ferroelectric-response.png`](assets/ferroelectric-response/ferroelectric-response.png) |
-| [`feynman-1`](https://janosh.github.io/diagrams/feynman-1) [![LaTeX][latex-logo]](assets/feynman-1/feynman-1.tex) | [`feynman-2`](https://janosh.github.io/diagrams/feynman-2) [![LaTeX][latex-logo]](assets/feynman-2/feynman-2.tex) |
-| ![`feynman-1.png`](assets/feynman-1/feynman-1.png) | ![`feynman-2.png`](assets/feynman-2/feynman-2.png) |
-| [`feynman-3`](https://janosh.github.io/diagrams/feynman-3) [![LaTeX][latex-logo]](assets/feynman-3/feynman-3.tex) | [`feynman-4`](https://janosh.github.io/diagrams/feynman-4) [![LaTeX][latex-logo]](assets/feynman-4/feynman-4.tex) |
-| ![`feynman-3.png`](assets/feynman-3/feynman-3.png) | ![`feynman-4.png`](assets/feynman-4/feynman-4.png) |
-| [`feynman-diagram-loop`](https://janosh.github.io/diagrams/feynman-diagram-loop) [![LaTeX][latex-logo]](assets/feynman-diagram-loop/feynman-diagram-loop.tex) | [`feynman-diagram-loops`](https://janosh.github.io/diagrams/feynman-diagram-loops) [![LaTeX][latex-logo]](assets/feynman-diagram-loops/feynman-diagram-loops.tex) |
-| ![`feynman-diagram-loop.png`](assets/feynman-diagram-loop/feynman-diagram-loop.png) | ![`feynman-diagram-loops.png`](assets/feynman-diagram-loops/feynman-diagram-loops.png) |
-| [`feynman-diagram-one-point`](https://janosh.github.io/diagrams/feynman-diagram-one-point) [![LaTeX][latex-logo]](assets/feynman-diagram-one-point/feynman-diagram-one-point.tex) | [`feynman-diagram-propagator-loop`](https://janosh.github.io/diagrams/feynman-diagram-propagator-loop) [![LaTeX][latex-logo]](assets/feynman-diagram-propagator-loop/feynman-diagram-propagator-loop.tex) |
-| ![`feynman-diagram-one-point.png`](assets/feynman-diagram-one-point/feynman-diagram-one-point.png) | ![`feynman-diagram-propagator-loop.png`](assets/feynman-diagram-propagator-loop/feynman-diagram-propagator-loop.png) |
-| [`fluctuations`](https://janosh.github.io/diagrams/fluctuations) [![LaTeX][latex-logo]](assets/fluctuations/fluctuations.tex) | [`four-vs-of-data`](https://janosh.github.io/diagrams/four-vs-of-data) [![LaTeX][latex-logo]](assets/four-vs-of-data/four-vs-of-data.tex) [![Typst][typst-logo]](assets/four-vs-of-data/four-vs-of-data.typ) |
-| ![`fluctuations.png`](assets/fluctuations/fluctuations.png) | ![`four-vs-of-data.png`](assets/four-vs-of-data/four-vs-of-data.png) |
-| [`generative-adversarial-network`](https://janosh.github.io/diagrams/generative-adversarial-network) [![LaTeX][latex-logo]](assets/generative-adversarial-network/generative-adversarial-network.tex) | [`geometric-bayes`](https://janosh.github.io/diagrams/geometric-bayes) [![LaTeX][latex-logo]](assets/geometric-bayes/geometric-bayes.tex) [![Typst][typst-logo]](assets/geometric-bayes/geometric-bayes.typ) |
-| ![`generative-adversarial-network.png`](assets/generative-adversarial-network/generative-adversarial-network.png) | ![`geometric-bayes.png`](assets/geometric-bayes/geometric-bayes.png) |
-| [`graph-isomorphism`](https://janosh.github.io/diagrams/graph-isomorphism) [![LaTeX][latex-logo]](assets/graph-isomorphism/graph-isomorphism.tex) [![Typst][typst-logo]](assets/graph-isomorphism/graph-isomorphism.typ) | [`gravitons`](https://janosh.github.io/diagrams/gravitons) [![LaTeX][latex-logo]](assets/gravitons/gravitons.tex) |
-| ![`graph-isomorphism.png`](assets/graph-isomorphism/graph-isomorphism.png) | ![`gravitons.png`](assets/gravitons/gravitons.png) |
-| [`harmonic-oscillator-energy-vs-freq`](https://janosh.github.io/diagrams/harmonic-oscillator-energy-vs-freq) [![LaTeX][latex-logo]](assets/harmonic-oscillator-energy-vs-freq/harmonic-oscillator-energy-vs-freq.tex) [![Typst][typst-logo]](assets/harmonic-oscillator-energy-vs-freq/harmonic-oscillator-energy-vs-freq.typ) | [`harmonic-oscillator-energy-vs-inv-temp`](https://janosh.github.io/diagrams/harmonic-oscillator-energy-vs-inv-temp) [![LaTeX][latex-logo]](assets/harmonic-oscillator-energy-vs-inv-temp/harmonic-oscillator-energy-vs-inv-temp.tex) [![Typst][typst-logo]](assets/harmonic-oscillator-energy-vs-inv-temp/harmonic-oscillator-energy-vs-inv-temp.typ) |
-| ![`harmonic-oscillator-energy-vs-freq.png`](assets/harmonic-oscillator-energy-vs-freq/harmonic-oscillator-energy-vs-freq.png) | ![`harmonic-oscillator-energy-vs-inv-temp.png`](assets/harmonic-oscillator-energy-vs-inv-temp/harmonic-oscillator-energy-vs-inv-temp.png) |
-| [`heatmap`](https://janosh.github.io/diagrams/heatmap) [![LaTeX][latex-logo]](assets/heatmap/heatmap.tex) [![Typst][typst-logo]](assets/heatmap/heatmap.typ) | [`higgs-potential`](https://janosh.github.io/diagrams/higgs-potential) [![LaTeX][latex-logo]](assets/higgs-potential/higgs-potential.tex) |
-| ![`heatmap.png`](assets/heatmap/heatmap.png) | ![`higgs-potential.png`](assets/higgs-potential/higgs-potential.png) |
-| [`high-entropy-alloy`](https://janosh.github.io/diagrams/high-entropy-alloy) [![LaTeX][latex-logo]](assets/high-entropy-alloy/high-entropy-alloy.tex) | [`isotherms`](https://janosh.github.io/diagrams/isotherms) [![LaTeX][latex-logo]](assets/isotherms/isotherms.tex) [![Typst][typst-logo]](assets/isotherms/isotherms.typ) |
-| ![`high-entropy-alloy.png`](assets/high-entropy-alloy/high-entropy-alloy.png) | ![`isotherms.png`](assets/isotherms/isotherms.png) |
-| [`jensens-inequality`](https://janosh.github.io/diagrams/jensens-inequality) [![LaTeX][latex-logo]](assets/jensens-inequality/jensens-inequality.tex) [![Typst][typst-logo]](assets/jensens-inequality/jensens-inequality.typ) | [`k-space`](https://janosh.github.io/diagrams/k-space) [![LaTeX][latex-logo]](assets/k-space/k-space.tex) [![Typst][typst-logo]](assets/k-space/k-space.typ) |
-| ![`jensens-inequality.png`](assets/jensens-inequality/jensens-inequality.png) | ![`k-space.png`](assets/k-space/k-space.png) |
-| [`kohn-sham-cycle`](https://janosh.github.io/diagrams/kohn-sham-cycle) [![LaTeX][latex-logo]](assets/kohn-sham-cycle/kohn-sham-cycle.tex) [![Typst][typst-logo]](assets/kohn-sham-cycle/kohn-sham-cycle.typ) | [`light`](https://janosh.github.io/diagrams/light) [![Typst][typst-logo]](assets/light/light.typ) |
-| ![`kohn-sham-cycle.png`](assets/kohn-sham-cycle/kohn-sham-cycle.png) | ![`light.png`](assets/light/light.png) |
-| [`m-theory`](https://janosh.github.io/diagrams/m-theory) [![LaTeX][latex-logo]](assets/m-theory/m-theory.tex) | [`made`](https://janosh.github.io/diagrams/made) [![LaTeX][latex-logo]](assets/made/made.tex) |
-| ![`m-theory.png`](assets/m-theory/m-theory.png) | ![`made.png`](assets/made/made.png) |
-| [`maf`](https://janosh.github.io/diagrams/maf) [![LaTeX][latex-logo]](assets/maf/maf.tex) | [`materials-informatics-challenges`](https://janosh.github.io/diagrams/materials-informatics-challenges) [![LaTeX][latex-logo]](assets/materials-informatics-challenges/materials-informatics-challenges.tex) |
-| ![`maf.png`](assets/maf/maf.png) | ![`materials-informatics-challenges.png`](assets/materials-informatics-challenges/materials-informatics-challenges.png) |
-| [`materials-informatics`](https://janosh.github.io/diagrams/materials-informatics) [![LaTeX][latex-logo]](assets/materials-informatics/materials-informatics.tex) | [`matsubara-contour-1`](https://janosh.github.io/diagrams/matsubara-contour-1) [![LaTeX][latex-logo]](assets/matsubara-contour-1/matsubara-contour-1.tex) |
-| ![`materials-informatics.png`](assets/materials-informatics/materials-informatics.png) | ![`matsubara-contour-1.png`](assets/matsubara-contour-1/matsubara-contour-1.png) |
-| [`matsubara-contour-2`](https://janosh.github.io/diagrams/matsubara-contour-2) [![LaTeX][latex-logo]](assets/matsubara-contour-2/matsubara-contour-2.tex) | [`matsubara-contour-3`](https://janosh.github.io/diagrams/matsubara-contour-3) [![LaTeX][latex-logo]](assets/matsubara-contour-3/matsubara-contour-3.tex) |
-| ![`matsubara-contour-2.png`](assets/matsubara-contour-2/matsubara-contour-2.png) | ![`matsubara-contour-3.png`](assets/matsubara-contour-3/matsubara-contour-3.png) |
-| [`matsubara-contour-4`](https://janosh.github.io/diagrams/matsubara-contour-4) [![LaTeX][latex-logo]](assets/matsubara-contour-4/matsubara-contour-4.tex) | [`matsubara-contour-5`](https://janosh.github.io/diagrams/matsubara-contour-5) [![LaTeX][latex-logo]](assets/matsubara-contour-5/matsubara-contour-5.tex) |
-| ![`matsubara-contour-4.png`](assets/matsubara-contour-4/matsubara-contour-4.png) | ![`matsubara-contour-5.png`](assets/matsubara-contour-5/matsubara-contour-5.png) |
-| [`matsubara-contour-deformation`](https://janosh.github.io/diagrams/matsubara-contour-deformation) [![LaTeX][latex-logo]](assets/matsubara-contour-deformation/matsubara-contour-deformation.tex) | [`maxwell-boltzmann-distribution`](https://janosh.github.io/diagrams/maxwell-boltzmann-distribution) [![LaTeX][latex-logo]](assets/maxwell-boltzmann-distribution/maxwell-boltzmann-distribution.tex) [![Typst][typst-logo]](assets/maxwell-boltzmann-distribution/maxwell-boltzmann-distribution.typ) |
-| ![`matsubara-contour-deformation.png`](assets/matsubara-contour-deformation/matsubara-contour-deformation.png) | ![`maxwell-boltzmann-distribution.png`](assets/maxwell-boltzmann-distribution/maxwell-boltzmann-distribution.png) |
-| [`mexican-hat`](https://janosh.github.io/diagrams/mexican-hat) [![LaTeX][latex-logo]](assets/mexican-hat/mexican-hat.tex) | [`ml-activations`](https://janosh.github.io/diagrams/ml-activations) [![Typst][typst-logo]](assets/ml-activations/ml-activations.typ) |
-| ![`mexican-hat.png`](assets/mexican-hat/mexican-hat.png) | ![`ml-activations.png`](assets/ml-activations/ml-activations.png) |
-| [`momentum-shell`](https://janosh.github.io/diagrams/momentum-shell) [![LaTeX][latex-logo]](assets/momentum-shell/momentum-shell.tex) [![Typst][typst-logo]](assets/momentum-shell/momentum-shell.typ) | [`mosfet`](https://janosh.github.io/diagrams/mosfet) [![LaTeX][latex-logo]](assets/mosfet/mosfet.tex) [![Typst][typst-logo]](assets/mosfet/mosfet.typ) |
-| ![`momentum-shell.png`](assets/momentum-shell/momentum-shell.png) | ![`mosfet.png`](assets/mosfet/mosfet.png) |
-| [`nf-coupling-layer`](https://janosh.github.io/diagrams/nf-coupling-layer) [![LaTeX][latex-logo]](assets/nf-coupling-layer/nf-coupling-layer.tex) [![Typst][typst-logo]](assets/nf-coupling-layer/nf-coupling-layer.typ) | [`normalizing-flow`](https://janosh.github.io/diagrams/normalizing-flow) [![LaTeX][latex-logo]](assets/normalizing-flow/normalizing-flow.tex) [![Typst][typst-logo]](assets/normalizing-flow/normalizing-flow.typ) |
-| ![`nf-coupling-layer.png`](assets/nf-coupling-layer/nf-coupling-layer.png) | ![`normalizing-flow.png`](assets/normalizing-flow/normalizing-flow.png) |
-| [`open-string-topologies`](https://janosh.github.io/diagrams/open-string-topologies) [![LaTeX][latex-logo]](assets/open-string-topologies/open-string-topologies.tex) | [`operator-orderings`](https://janosh.github.io/diagrams/operator-orderings) [![LaTeX][latex-logo]](assets/operator-orderings/operator-orderings.tex) |
-| ![`open-string-topologies.png`](assets/open-string-topologies/open-string-topologies.png) | ![`operator-orderings.png`](assets/operator-orderings/operator-orderings.png) |
-| [`organic-molecule`](https://janosh.github.io/diagrams/organic-molecule) [![LaTeX][latex-logo]](assets/organic-molecule/organic-molecule.tex) | [`otto-cycle`](https://janosh.github.io/diagrams/otto-cycle) [![LaTeX][latex-logo]](assets/otto-cycle/otto-cycle.tex) [![Typst][typst-logo]](assets/otto-cycle/otto-cycle.typ) |
-| ![`organic-molecule.png`](assets/organic-molecule/organic-molecule.png) | ![`otto-cycle.png`](assets/otto-cycle/otto-cycle.png) |
-| [`periodic-table`](https://janosh.github.io/diagrams/periodic-table) [![LaTeX][latex-logo]](assets/periodic-table/periodic-table.tex) [![Typst][typst-logo]](assets/periodic-table/periodic-table.typ) | [`physics-mindmap`](https://janosh.github.io/diagrams/physics-mindmap) [![LaTeX][latex-logo]](assets/physics-mindmap/physics-mindmap.tex) |
-| ![`periodic-table.png`](assets/periodic-table/periodic-table.png) | ![`physics-mindmap.png`](assets/physics-mindmap/physics-mindmap.png) |
-| [`plane-to-torus`](https://janosh.github.io/diagrams/plane-to-torus) [![LaTeX][latex-logo]](assets/plane-to-torus/plane-to-torus.tex) | [`plate-capacitor`](https://janosh.github.io/diagrams/plate-capacitor) [![LaTeX][latex-logo]](assets/plate-capacitor/plate-capacitor.tex) [![Typst][typst-logo]](assets/plate-capacitor/plate-capacitor.typ) |
-| ![`plane-to-torus.png`](assets/plane-to-torus/plane-to-torus.png) | ![`plate-capacitor.png`](assets/plate-capacitor/plate-capacitor.png) |
-| [`potential-triangle`](https://janosh.github.io/diagrams/potential-triangle) [![LaTeX][latex-logo]](assets/potential-triangle/potential-triangle.tex) | [`propagator-fluctuations`](https://janosh.github.io/diagrams/propagator-fluctuations) [![LaTeX][latex-logo]](assets/propagator-fluctuations/propagator-fluctuations.tex) |
-| ![`potential-triangle.png`](assets/potential-triangle/potential-triangle.png) | ![`propagator-fluctuations.png`](assets/propagator-fluctuations/propagator-fluctuations.png) |
-| [`propagators`](https://janosh.github.io/diagrams/propagators) [![LaTeX][latex-logo]](assets/propagators/propagators.tex) | [`qft-propagator-poles`](https://janosh.github.io/diagrams/qft-propagator-poles) [![LaTeX][latex-logo]](assets/qft-propagator-poles/qft-propagator-poles.tex) [![Typst][typst-logo]](assets/qft-propagator-poles/qft-propagator-poles.typ) |
-| ![`propagators.png`](assets/propagators/propagators.png) | ![`qft-propagator-poles.png`](assets/qft-propagator-poles/qft-propagator-poles.png) |
-| [`qm-cost-vs-acc`](https://janosh.github.io/diagrams/qm-cost-vs-acc) [![LaTeX][latex-logo]](assets/qm-cost-vs-acc/qm-cost-vs-acc.tex) [![Typst][typst-logo]](assets/qm-cost-vs-acc/qm-cost-vs-acc.typ) | [`random-forest`](https://janosh.github.io/diagrams/random-forest) [![LaTeX][latex-logo]](assets/random-forest/random-forest.tex) |
-| ![`qm-cost-vs-acc.png`](assets/qm-cost-vs-acc/qm-cost-vs-acc.png) | ![`random-forest.png`](assets/random-forest/random-forest.png) |
-| [`regular-vs-bayes-nn`](https://janosh.github.io/diagrams/regular-vs-bayes-nn) [![LaTeX][latex-logo]](assets/regular-vs-bayes-nn/regular-vs-bayes-nn.tex) | [`rnvp`](https://janosh.github.io/diagrams/rnvp) [![LaTeX][latex-logo]](assets/rnvp/rnvp.tex) |
-| ![`regular-vs-bayes-nn.png`](assets/regular-vs-bayes-nn/regular-vs-bayes-nn.png) | ![`rnvp.png`](assets/rnvp/rnvp.png) |
-| [`roost-update`](https://janosh.github.io/diagrams/roost-update) [![LaTeX][latex-logo]](assets/roost-update/roost-update.tex) | [`sabatier-principle`](https://janosh.github.io/diagrams/sabatier-principle) [![LaTeX][latex-logo]](assets/sabatier-principle/sabatier-principle.tex) [![Typst][typst-logo]](assets/sabatier-principle/sabatier-principle.typ) |
-| ![`roost-update.png`](assets/roost-update/roost-update.png) | ![`sabatier-principle.png`](assets/sabatier-principle/sabatier-principle.png) |
-| [`saddle-point`](https://janosh.github.io/diagrams/saddle-point) [![LaTeX][latex-logo]](assets/saddle-point/saddle-point.tex) | [`seebeck-effect`](https://janosh.github.io/diagrams/seebeck-effect) [![LaTeX][latex-logo]](assets/seebeck-effect/seebeck-effect.tex) |
-| ![`saddle-point.png`](assets/saddle-point/saddle-point.png) | ![`seebeck-effect.png`](assets/seebeck-effect/seebeck-effect.png) |
-| [`self-attention`](https://janosh.github.io/diagrams/self-attention) [![LaTeX][latex-logo]](assets/self-attention/self-attention.tex) [![Typst][typst-logo]](assets/self-attention/self-attention.typ) | [`single-head-attention`](https://janosh.github.io/diagrams/single-head-attention) [![LaTeX][latex-logo]](assets/single-head-attention/single-head-attention.tex) [![Typst][typst-logo]](assets/single-head-attention/single-head-attention.typ) |
-| ![`self-attention.png`](assets/self-attention/self-attention.png) | ![`single-head-attention.png`](assets/single-head-attention/single-head-attention.png) |
-| [`skip-connection`](https://janosh.github.io/diagrams/skip-connection) [![LaTeX][latex-logo]](assets/skip-connection/skip-connection.tex) [![Typst][typst-logo]](assets/skip-connection/skip-connection.typ) | [`spontaneous-magnetization`](https://janosh.github.io/diagrams/spontaneous-magnetization) [![LaTeX][latex-logo]](assets/spontaneous-magnetization/spontaneous-magnetization.tex) [![Typst][typst-logo]](assets/spontaneous-magnetization/spontaneous-magnetization.typ) |
-| ![`skip-connection.png`](assets/skip-connection/skip-connection.png) | ![`spontaneous-magnetization.png`](assets/spontaneous-magnetization/spontaneous-magnetization.png) |
-| [`tanh`](https://janosh.github.io/diagrams/tanh) [![LaTeX][latex-logo]](assets/tanh/tanh.tex) | [`theory-space`](https://janosh.github.io/diagrams/theory-space) [![LaTeX][latex-logo]](assets/theory-space/theory-space.tex) |
-| ![`tanh.png`](assets/tanh/tanh.png) | ![`theory-space.png`](assets/theory-space/theory-space.png) |
-| [`thermo-ensemble-trafos`](https://janosh.github.io/diagrams/thermo-ensemble-trafos) [![LaTeX][latex-logo]](assets/thermo-ensemble-trafos/thermo-ensemble-trafos.tex) [![Typst][typst-logo]](assets/thermo-ensemble-trafos/thermo-ensemble-trafos.typ) | [`thomson-scattering`](https://janosh.github.io/diagrams/thomson-scattering) [![LaTeX][latex-logo]](assets/thomson-scattering/thomson-scattering.tex) |
-| ![`thermo-ensemble-trafos.png`](assets/thermo-ensemble-trafos/thermo-ensemble-trafos.png) | ![`thomson-scattering.png`](assets/thomson-scattering/thomson-scattering.png) |
-| [`tori`](https://janosh.github.io/diagrams/tori) [![LaTeX][latex-logo]](assets/tori/tori.tex) | [`torus-fundamental-domain`](https://janosh.github.io/diagrams/torus-fundamental-domain) [![LaTeX][latex-logo]](assets/torus-fundamental-domain/torus-fundamental-domain.tex) |
-| ![`tori.png`](assets/tori/tori.png) | ![`torus-fundamental-domain.png`](assets/torus-fundamental-domain/torus-fundamental-domain.png) |
-| [`torus`](https://janosh.github.io/diagrams/torus) [![LaTeX][latex-logo]](assets/torus/torus.tex) | [`two-point-no-cutoff`](https://janosh.github.io/diagrams/two-point-no-cutoff) [![LaTeX][latex-logo]](assets/two-point-no-cutoff/two-point-no-cutoff.tex) |
-| ![`torus.png`](assets/torus/torus.png) | ![`two-point-no-cutoff.png`](assets/two-point-no-cutoff/two-point-no-cutoff.png) |
-| [`two-point`](https://janosh.github.io/diagrams/two-point) [![LaTeX][latex-logo]](assets/two-point/two-point.tex) | [`unregularized-propagator-diagrams`](https://janosh.github.io/diagrams/unregularized-propagator-diagrams) [![LaTeX][latex-logo]](assets/unregularized-propagator-diagrams/unregularized-propagator-diagrams.tex) |
-| ![`two-point.png`](assets/two-point/two-point.png) | ![`unregularized-propagator-diagrams.png`](assets/unregularized-propagator-diagrams/unregularized-propagator-diagrams.png) |
-| [`variational-autoencoder`](https://janosh.github.io/diagrams/variational-autoencoder) [![LaTeX][latex-logo]](assets/variational-autoencoder/variational-autoencoder.tex) [![Typst][typst-logo]](assets/variational-autoencoder/variational-autoencoder.typ) | [`wall`](https://janosh.github.io/diagrams/wall) [![LaTeX][latex-logo]](assets/wall/wall.tex) |
-| ![`variational-autoencoder.png`](assets/variational-autoencoder/variational-autoencoder.png) | ![`wall.png`](assets/wall/wall.png) |
-| [`wetterich-equation`](https://janosh.github.io/diagrams/wetterich-equation) [![LaTeX][latex-logo]](assets/wetterich-equation/wetterich-equation.tex) | [`wyckoff-positions`](https://janosh.github.io/diagrams/wyckoff-positions) [![LaTeX][latex-logo]](assets/wyckoff-positions/wyckoff-positions.tex) [![Typst][typst-logo]](assets/wyckoff-positions/wyckoff-positions.typ) |
-| ![`wetterich-equation.png`](assets/wetterich-equation/wetterich-equation.png) | ![`wyckoff-positions.png`](assets/wyckoff-positions/wyckoff-positions.png) |
-| [`zt-vs-n`](https://janosh.github.io/diagrams/zt-vs-n) [![LaTeX][latex-logo]](assets/zt-vs-n/zt-vs-n.tex) [![Typst][typst-logo]](assets/zt-vs-n/zt-vs-n.typ) | |
-| ![`zt-vs-n.png`](assets/zt-vs-n/zt-vs-n.png) | |
+| | |
+| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
+| [`2d-convolution`](https://janosh.github.io/diagrams/2d-convolution) [![LaTeX][latex-logo]](assets/2d-convolution/2d-convolution.tex) [![Typst][typst-logo]](assets/2d-convolution/2d-convolution.typ) | [`autoencoder`](https://janosh.github.io/diagrams/autoencoder) [![LaTeX][latex-logo]](assets/autoencoder/autoencoder.tex) [![Typst][typst-logo]](assets/autoencoder/autoencoder.typ) |
+| ![`2d-convolution.png`](assets/2d-convolution/2d-convolution.png) | ![`autoencoder.png`](assets/autoencoder/autoencoder.png) |
+| [`basis-plus-lattice`](https://janosh.github.io/diagrams/basis-plus-lattice) [![LaTeX][latex-logo]](assets/basis-plus-lattice/basis-plus-lattice.tex) [![Typst][typst-logo]](assets/basis-plus-lattice/basis-plus-lattice.typ) | [`bloch-sphere`](https://janosh.github.io/diagrams/bloch-sphere) [![LaTeX][latex-logo]](assets/bloch-sphere/bloch-sphere.tex) [![Typst][typst-logo]](assets/bloch-sphere/bloch-sphere.typ) |
+| ![`basis-plus-lattice.png`](assets/basis-plus-lattice/basis-plus-lattice.png) | ![`bloch-sphere.png`](assets/bloch-sphere/bloch-sphere.png) |
+| [`bose-einstein-distribution-3d`](https://janosh.github.io/diagrams/bose-einstein-distribution-3d) [![LaTeX][latex-logo]](assets/bose-einstein-distribution-3d/bose-einstein-distribution-3d.tex) | [`bose-einstein-distribution`](https://janosh.github.io/diagrams/bose-einstein-distribution) [![LaTeX][latex-logo]](assets/bose-einstein-distribution/bose-einstein-distribution.tex) [![Typst][typst-logo]](assets/bose-einstein-distribution/bose-einstein-distribution.typ) |
+| ![`bose-einstein-distribution-3d.png`](assets/bose-einstein-distribution-3d/bose-einstein-distribution-3d.png) | ![`bose-einstein-distribution.png`](assets/bose-einstein-distribution/bose-einstein-distribution.png) |
+| [`branch-and-bound`](https://janosh.github.io/diagrams/branch-and-bound) [![LaTeX][latex-logo]](assets/branch-and-bound/branch-and-bound.tex) [![Typst][typst-logo]](assets/branch-and-bound/branch-and-bound.typ) | [`branch-cuts-1`](https://janosh.github.io/diagrams/branch-cuts-1) [![LaTeX][latex-logo]](assets/branch-cuts-1/branch-cuts-1.tex) [![Typst][typst-logo]](assets/branch-cuts-1/branch-cuts-1.typ) |
+| ![`branch-and-bound.png`](assets/branch-and-bound/branch-and-bound.png) | ![`branch-cuts-1.png`](assets/branch-cuts-1/branch-cuts-1.png) |
+| [`branch-cuts-2`](https://janosh.github.io/diagrams/branch-cuts-2) [![LaTeX][latex-logo]](assets/branch-cuts-2/branch-cuts-2.tex) | [`change-of-variables`](https://janosh.github.io/diagrams/change-of-variables) [![LaTeX][latex-logo]](assets/change-of-variables/change-of-variables.tex) [![Typst][typst-logo]](assets/change-of-variables/change-of-variables.typ) |
+| ![`branch-cuts-2.png`](assets/branch-cuts-2/branch-cuts-2.png) | ![`change-of-variables.png`](assets/change-of-variables/change-of-variables.png) |
+| [`closed-string-topologies`](https://janosh.github.io/diagrams/closed-string-topologies) [![LaTeX][latex-logo]](assets/closed-string-topologies/closed-string-topologies.tex) | [`complex-sign-function`](https://janosh.github.io/diagrams/complex-sign-function) [![LaTeX][latex-logo]](assets/complex-sign-function/complex-sign-function.tex) |
+| ![`closed-string-topologies.png`](assets/closed-string-topologies/closed-string-topologies.png) | ![`complex-sign-function.png`](assets/complex-sign-function/complex-sign-function.png) |
+| [`complex-sign-plane`](https://janosh.github.io/diagrams/complex-sign-plane) [![LaTeX][latex-logo]](assets/complex-sign-plane/complex-sign-plane.tex) [![Typst][typst-logo]](assets/complex-sign-plane/complex-sign-plane.typ) | [`concave-functions`](https://janosh.github.io/diagrams/concave-functions) [![LaTeX][latex-logo]](assets/concave-functions/concave-functions.tex) [![Typst][typst-logo]](assets/concave-functions/concave-functions.typ) |
+| ![`complex-sign-plane.png`](assets/complex-sign-plane/complex-sign-plane.png) | ![`concave-functions.png`](assets/concave-functions/concave-functions.png) |
+| [`convex-functions`](https://janosh.github.io/diagrams/convex-functions) [![LaTeX][latex-logo]](assets/convex-functions/convex-functions.tex) [![Typst][typst-logo]](assets/convex-functions/convex-functions.typ) | [`convex-hull-of-stability`](https://janosh.github.io/diagrams/convex-hull-of-stability) [![LaTeX][latex-logo]](assets/convex-hull-of-stability/convex-hull-of-stability.tex) [![Typst][typst-logo]](assets/convex-hull-of-stability/convex-hull-of-stability.typ) |
+| ![`convex-functions.png`](assets/convex-functions/convex-functions.png) | ![`convex-hull-of-stability.png`](assets/convex-hull-of-stability/convex-hull-of-stability.png) |
+| [`critical-temperature`](https://janosh.github.io/diagrams/critical-temperature) [![LaTeX][latex-logo]](assets/critical-temperature/critical-temperature.tex) | [`cylinder-to-plane`](https://janosh.github.io/diagrams/cylinder-to-plane) [![LaTeX][latex-logo]](assets/cylinder-to-plane/cylinder-to-plane.tex) |
+| ![`critical-temperature.png`](assets/critical-temperature/critical-temperature.png) | ![`cylinder-to-plane.png`](assets/cylinder-to-plane/cylinder-to-plane.png) |
+| [`detailed-balance`](https://janosh.github.io/diagrams/detailed-balance) [![LaTeX][latex-logo]](assets/detailed-balance/detailed-balance.tex) [![Typst][typst-logo]](assets/detailed-balance/detailed-balance.typ) | [`dft-choices`](https://janosh.github.io/diagrams/dft-choices) [![LaTeX][latex-logo]](assets/dft-choices/dft-choices.tex) |
+| ![`detailed-balance.png`](assets/detailed-balance/detailed-balance.png) | ![`dft-choices.png`](assets/dft-choices/dft-choices.png) |
+| [`dft-mlff-cff-speed-accuracy-transfer`](https://janosh.github.io/diagrams/dft-mlff-cff-speed-accuracy-transfer) [![LaTeX][latex-logo]](assets/dft-mlff-cff-speed-accuracy-transfer/dft-mlff-cff-speed-accuracy-transfer.tex) [![Typst][typst-logo]](assets/dft-mlff-cff-speed-accuracy-transfer/dft-mlff-cff-speed-accuracy-transfer.typ) | [`diagrams`](https://janosh.github.io/diagrams/diagrams) [![LaTeX][latex-logo]](assets/diagrams/diagrams.tex) |
+| ![`dft-mlff-cff-speed-accuracy-transfer.png`](assets/dft-mlff-cff-speed-accuracy-transfer/dft-mlff-cff-speed-accuracy-transfer.png) | ![`diagrams.png`](assets/diagrams/diagrams.png) |
+| [`disk-to-plane`](https://janosh.github.io/diagrams/disk-to-plane) [![LaTeX][latex-logo]](assets/disk-to-plane/disk-to-plane.tex) | [`divergence`](https://janosh.github.io/diagrams/divergence) [![LaTeX][latex-logo]](assets/divergence/divergence.tex) |
+| ![`disk-to-plane.png`](assets/disk-to-plane/disk-to-plane.png) | ![`divergence.png`](assets/divergence/divergence.png) |
+| [`dropout`](https://janosh.github.io/diagrams/dropout) [![LaTeX][latex-logo]](assets/dropout/dropout.tex) [![Typst][typst-logo]](assets/dropout/dropout.typ) | [`energy-distribution-functions`](https://janosh.github.io/diagrams/energy-distribution-functions) [![LaTeX][latex-logo]](assets/energy-distribution-functions/energy-distribution-functions.tex) [![Typst][typst-logo]](assets/energy-distribution-functions/energy-distribution-functions.typ) |
+| ![`dropout.png`](assets/dropout/dropout.png) | ![`energy-distribution-functions.png`](assets/energy-distribution-functions/energy-distribution-functions.png) |
+| [`ergodic`](https://janosh.github.io/diagrams/ergodic) [![LaTeX][latex-logo]](assets/ergodic/ergodic.tex) [![Typst][typst-logo]](assets/ergodic/ergodic.typ) | [`euler-angles`](https://janosh.github.io/diagrams/euler-angles) [![LaTeX][latex-logo]](assets/euler-angles/euler-angles.tex) |
+| ![`ergodic.png`](assets/ergodic/ergodic.png) | ![`euler-angles.png`](assets/euler-angles/euler-angles.png) |
+| [`fermi-dirac-vs-temp`](https://janosh.github.io/diagrams/fermi-dirac-vs-temp) [![LaTeX][latex-logo]](assets/fermi-dirac-vs-temp/fermi-dirac-vs-temp.tex) [![Typst][typst-logo]](assets/fermi-dirac-vs-temp/fermi-dirac-vs-temp.typ) | [`ferroelectric-response`](https://janosh.github.io/diagrams/ferroelectric-response) [![LaTeX][latex-logo]](assets/ferroelectric-response/ferroelectric-response.tex) [![Typst][typst-logo]](assets/ferroelectric-response/ferroelectric-response.typ) |
+| ![`fermi-dirac-vs-temp.png`](assets/fermi-dirac-vs-temp/fermi-dirac-vs-temp.png) | ![`ferroelectric-response.png`](assets/ferroelectric-response/ferroelectric-response.png) |
+| [`feynman-1`](https://janosh.github.io/diagrams/feynman-1) [![LaTeX][latex-logo]](assets/feynman-1/feynman-1.tex) | [`feynman-2`](https://janosh.github.io/diagrams/feynman-2) [![LaTeX][latex-logo]](assets/feynman-2/feynman-2.tex) |
+| ![`feynman-1.png`](assets/feynman-1/feynman-1.png) | ![`feynman-2.png`](assets/feynman-2/feynman-2.png) |
+| [`feynman-3`](https://janosh.github.io/diagrams/feynman-3) [![LaTeX][latex-logo]](assets/feynman-3/feynman-3.tex) | [`feynman-4`](https://janosh.github.io/diagrams/feynman-4) [![LaTeX][latex-logo]](assets/feynman-4/feynman-4.tex) |
+| ![`feynman-3.png`](assets/feynman-3/feynman-3.png) | ![`feynman-4.png`](assets/feynman-4/feynman-4.png) |
+| [`feynman-diagram-loop`](https://janosh.github.io/diagrams/feynman-diagram-loop) [![LaTeX][latex-logo]](assets/feynman-diagram-loop/feynman-diagram-loop.tex) | [`feynman-diagram-loops`](https://janosh.github.io/diagrams/feynman-diagram-loops) [![LaTeX][latex-logo]](assets/feynman-diagram-loops/feynman-diagram-loops.tex) |
+| ![`feynman-diagram-loop.png`](assets/feynman-diagram-loop/feynman-diagram-loop.png) | ![`feynman-diagram-loops.png`](assets/feynman-diagram-loops/feynman-diagram-loops.png) |
+| [`feynman-diagram-one-point`](https://janosh.github.io/diagrams/feynman-diagram-one-point) [![LaTeX][latex-logo]](assets/feynman-diagram-one-point/feynman-diagram-one-point.tex) | [`feynman-diagram-propagator-loop`](https://janosh.github.io/diagrams/feynman-diagram-propagator-loop) [![LaTeX][latex-logo]](assets/feynman-diagram-propagator-loop/feynman-diagram-propagator-loop.tex) |
+| ![`feynman-diagram-one-point.png`](assets/feynman-diagram-one-point/feynman-diagram-one-point.png) | ![`feynman-diagram-propagator-loop.png`](assets/feynman-diagram-propagator-loop/feynman-diagram-propagator-loop.png) |
+| [`four-vs-of-data`](https://janosh.github.io/diagrams/four-vs-of-data) [![LaTeX][latex-logo]](assets/four-vs-of-data/four-vs-of-data.tex) [![Typst][typst-logo]](assets/four-vs-of-data/four-vs-of-data.typ) | [`generative-adversarial-network`](https://janosh.github.io/diagrams/generative-adversarial-network) [![LaTeX][latex-logo]](assets/generative-adversarial-network/generative-adversarial-network.tex) |
+| ![`four-vs-of-data.png`](assets/four-vs-of-data/four-vs-of-data.png) | ![`generative-adversarial-network.png`](assets/generative-adversarial-network/generative-adversarial-network.png) |
+| [`geometric-bayes`](https://janosh.github.io/diagrams/geometric-bayes) [![LaTeX][latex-logo]](assets/geometric-bayes/geometric-bayes.tex) [![Typst][typst-logo]](assets/geometric-bayes/geometric-bayes.typ) | [`gnn-node-aggregation`](https://janosh.github.io/diagrams/gnn-node-aggregation) [![Typst][typst-logo]](assets/gnn-node-aggregation/gnn-node-aggregation.typ) |
+| ![`geometric-bayes.png`](assets/geometric-bayes/geometric-bayes.png) | ![`gnn-node-aggregation.png`](assets/gnn-node-aggregation/gnn-node-aggregation.png) |
+| [`grand-canonical-occupation-fluctuations`](https://janosh.github.io/diagrams/grand-canonical-occupation-fluctuations) [![LaTeX][latex-logo]](assets/grand-canonical-occupation-fluctuations/grand-canonical-occupation-fluctuations.tex) [![Typst][typst-logo]](assets/grand-canonical-occupation-fluctuations/grand-canonical-occupation-fluctuations.typ) | [`graph-isomorphism`](https://janosh.github.io/diagrams/graph-isomorphism) [![LaTeX][latex-logo]](assets/graph-isomorphism/graph-isomorphism.tex) [![Typst][typst-logo]](assets/graph-isomorphism/graph-isomorphism.typ) |
+| ![`grand-canonical-occupation-fluctuations.png`](assets/grand-canonical-occupation-fluctuations/grand-canonical-occupation-fluctuations.png) | ![`graph-isomorphism.png`](assets/graph-isomorphism/graph-isomorphism.png) |
+| [`gravitons`](https://janosh.github.io/diagrams/gravitons) [![LaTeX][latex-logo]](assets/gravitons/gravitons.tex) | [`harmonic-oscillator-energy-vs-freq`](https://janosh.github.io/diagrams/harmonic-oscillator-energy-vs-freq) [![LaTeX][latex-logo]](assets/harmonic-oscillator-energy-vs-freq/harmonic-oscillator-energy-vs-freq.tex) [![Typst][typst-logo]](assets/harmonic-oscillator-energy-vs-freq/harmonic-oscillator-energy-vs-freq.typ) |
+| ![`gravitons.png`](assets/gravitons/gravitons.png) | ![`harmonic-oscillator-energy-vs-freq.png`](assets/harmonic-oscillator-energy-vs-freq/harmonic-oscillator-energy-vs-freq.png) |
+| [`harmonic-oscillator-energy-vs-inv-temp`](https://janosh.github.io/diagrams/harmonic-oscillator-energy-vs-inv-temp) [![LaTeX][latex-logo]](assets/harmonic-oscillator-energy-vs-inv-temp/harmonic-oscillator-energy-vs-inv-temp.tex) [![Typst][typst-logo]](assets/harmonic-oscillator-energy-vs-inv-temp/harmonic-oscillator-energy-vs-inv-temp.typ) | [`heatmap`](https://janosh.github.io/diagrams/heatmap) [![LaTeX][latex-logo]](assets/heatmap/heatmap.tex) [![Typst][typst-logo]](assets/heatmap/heatmap.typ) |
+| ![`harmonic-oscillator-energy-vs-inv-temp.png`](assets/harmonic-oscillator-energy-vs-inv-temp/harmonic-oscillator-energy-vs-inv-temp.png) | ![`heatmap.png`](assets/heatmap/heatmap.png) |
+| [`higgs-potential`](https://janosh.github.io/diagrams/higgs-potential) [![LaTeX][latex-logo]](assets/higgs-potential/higgs-potential.tex) | [`high-entropy-alloy`](https://janosh.github.io/diagrams/high-entropy-alloy) [![LaTeX][latex-logo]](assets/high-entropy-alloy/high-entropy-alloy.tex) |
+| ![`higgs-potential.png`](assets/higgs-potential/higgs-potential.png) | ![`high-entropy-alloy.png`](assets/high-entropy-alloy/high-entropy-alloy.png) |
+| [`isotherms`](https://janosh.github.io/diagrams/isotherms) [![LaTeX][latex-logo]](assets/isotherms/isotherms.tex) [![Typst][typst-logo]](assets/isotherms/isotherms.typ) | [`jensens-inequality`](https://janosh.github.io/diagrams/jensens-inequality) [![LaTeX][latex-logo]](assets/jensens-inequality/jensens-inequality.tex) [![Typst][typst-logo]](assets/jensens-inequality/jensens-inequality.typ) |
+| ![`isotherms.png`](assets/isotherms/isotherms.png) | ![`jensens-inequality.png`](assets/jensens-inequality/jensens-inequality.png) |
+| [`k-space`](https://janosh.github.io/diagrams/k-space) [![LaTeX][latex-logo]](assets/k-space/k-space.tex) [![Typst][typst-logo]](assets/k-space/k-space.typ) | [`kohn-sham-cycle`](https://janosh.github.io/diagrams/kohn-sham-cycle) [![LaTeX][latex-logo]](assets/kohn-sham-cycle/kohn-sham-cycle.tex) [![Typst][typst-logo]](assets/kohn-sham-cycle/kohn-sham-cycle.typ) |
+| ![`k-space.png`](assets/k-space/k-space.png) | ![`kohn-sham-cycle.png`](assets/kohn-sham-cycle/kohn-sham-cycle.png) |
+| [`light`](https://janosh.github.io/diagrams/light) [![Typst][typst-logo]](assets/light/light.typ) | [`m-theory`](https://janosh.github.io/diagrams/m-theory) [![LaTeX][latex-logo]](assets/m-theory/m-theory.tex) |
+| ![`light.png`](assets/light/light.png) | ![`m-theory.png`](assets/m-theory/m-theory.png) |
+| [`made`](https://janosh.github.io/diagrams/made) [![LaTeX][latex-logo]](assets/made/made.tex) [![Typst][typst-logo]](assets/made/made.typ) | [`maf`](https://janosh.github.io/diagrams/maf) [![LaTeX][latex-logo]](assets/maf/maf.tex) |
+| ![`made.png`](assets/made/made.png) | ![`maf.png`](assets/maf/maf.png) |
+| [`materials-informatics-challenges`](https://janosh.github.io/diagrams/materials-informatics-challenges) [![LaTeX][latex-logo]](assets/materials-informatics-challenges/materials-informatics-challenges.tex) | [`materials-informatics`](https://janosh.github.io/diagrams/materials-informatics) [![LaTeX][latex-logo]](assets/materials-informatics/materials-informatics.tex) |
+| ![`materials-informatics-challenges.png`](assets/materials-informatics-challenges/materials-informatics-challenges.png) | ![`materials-informatics.png`](assets/materials-informatics/materials-informatics.png) |
+| [`matsubara-contour-1`](https://janosh.github.io/diagrams/matsubara-contour-1) [![LaTeX][latex-logo]](assets/matsubara-contour-1/matsubara-contour-1.tex) | [`matsubara-contour-2`](https://janosh.github.io/diagrams/matsubara-contour-2) [![LaTeX][latex-logo]](assets/matsubara-contour-2/matsubara-contour-2.tex) |
+| ![`matsubara-contour-1.png`](assets/matsubara-contour-1/matsubara-contour-1.png) | ![`matsubara-contour-2.png`](assets/matsubara-contour-2/matsubara-contour-2.png) |
+| [`matsubara-contour-3`](https://janosh.github.io/diagrams/matsubara-contour-3) [![LaTeX][latex-logo]](assets/matsubara-contour-3/matsubara-contour-3.tex) | [`matsubara-contour-4`](https://janosh.github.io/diagrams/matsubara-contour-4) [![LaTeX][latex-logo]](assets/matsubara-contour-4/matsubara-contour-4.tex) |
+| ![`matsubara-contour-3.png`](assets/matsubara-contour-3/matsubara-contour-3.png) | ![`matsubara-contour-4.png`](assets/matsubara-contour-4/matsubara-contour-4.png) |
+| [`matsubara-contour-5`](https://janosh.github.io/diagrams/matsubara-contour-5) [![LaTeX][latex-logo]](assets/matsubara-contour-5/matsubara-contour-5.tex) | [`matsubara-contour-deformation`](https://janosh.github.io/diagrams/matsubara-contour-deformation) [![LaTeX][latex-logo]](assets/matsubara-contour-deformation/matsubara-contour-deformation.tex) |
+| ![`matsubara-contour-5.png`](assets/matsubara-contour-5/matsubara-contour-5.png) | ![`matsubara-contour-deformation.png`](assets/matsubara-contour-deformation/matsubara-contour-deformation.png) |
+| [`maxwell-boltzmann-distribution`](https://janosh.github.io/diagrams/maxwell-boltzmann-distribution) [![LaTeX][latex-logo]](assets/maxwell-boltzmann-distribution/maxwell-boltzmann-distribution.tex) [![Typst][typst-logo]](assets/maxwell-boltzmann-distribution/maxwell-boltzmann-distribution.typ) | [`mexican-hat`](https://janosh.github.io/diagrams/mexican-hat) [![LaTeX][latex-logo]](assets/mexican-hat/mexican-hat.tex) |
+| ![`maxwell-boltzmann-distribution.png`](assets/maxwell-boltzmann-distribution/maxwell-boltzmann-distribution.png) | ![`mexican-hat.png`](assets/mexican-hat/mexican-hat.png) |
+| [`ml-activations`](https://janosh.github.io/diagrams/ml-activations) [![Typst][typst-logo]](assets/ml-activations/ml-activations.typ) | [`momentum-shell`](https://janosh.github.io/diagrams/momentum-shell) [![LaTeX][latex-logo]](assets/momentum-shell/momentum-shell.tex) [![Typst][typst-logo]](assets/momentum-shell/momentum-shell.typ) |
+| ![`ml-activations.png`](assets/ml-activations/ml-activations.png) | ![`momentum-shell.png`](assets/momentum-shell/momentum-shell.png) |
+| [`mosfet`](https://janosh.github.io/diagrams/mosfet) [![LaTeX][latex-logo]](assets/mosfet/mosfet.tex) [![Typst][typst-logo]](assets/mosfet/mosfet.typ) | [`nf-coupling-layer`](https://janosh.github.io/diagrams/nf-coupling-layer) [![LaTeX][latex-logo]](assets/nf-coupling-layer/nf-coupling-layer.tex) [![Typst][typst-logo]](assets/nf-coupling-layer/nf-coupling-layer.typ) |
+| ![`mosfet.png`](assets/mosfet/mosfet.png) | ![`nf-coupling-layer.png`](assets/nf-coupling-layer/nf-coupling-layer.png) |
+| [`normalizing-flow`](https://janosh.github.io/diagrams/normalizing-flow) [![LaTeX][latex-logo]](assets/normalizing-flow/normalizing-flow.tex) [![Typst][typst-logo]](assets/normalizing-flow/normalizing-flow.typ) | [`open-string-topologies`](https://janosh.github.io/diagrams/open-string-topologies) [![LaTeX][latex-logo]](assets/open-string-topologies/open-string-topologies.tex) |
+| ![`normalizing-flow.png`](assets/normalizing-flow/normalizing-flow.png) | ![`open-string-topologies.png`](assets/open-string-topologies/open-string-topologies.png) |
+| [`operator-orderings`](https://janosh.github.io/diagrams/operator-orderings) [![LaTeX][latex-logo]](assets/operator-orderings/operator-orderings.tex) | [`organic-molecule`](https://janosh.github.io/diagrams/organic-molecule) [![LaTeX][latex-logo]](assets/organic-molecule/organic-molecule.tex) |
+| ![`operator-orderings.png`](assets/operator-orderings/operator-orderings.png) | ![`organic-molecule.png`](assets/organic-molecule/organic-molecule.png) |
+| [`otto-cycle`](https://janosh.github.io/diagrams/otto-cycle) [![LaTeX][latex-logo]](assets/otto-cycle/otto-cycle.tex) [![Typst][typst-logo]](assets/otto-cycle/otto-cycle.typ) | [`periodic-table`](https://janosh.github.io/diagrams/periodic-table) [![LaTeX][latex-logo]](assets/periodic-table/periodic-table.tex) [![Typst][typst-logo]](assets/periodic-table/periodic-table.typ) |
+| ![`otto-cycle.png`](assets/otto-cycle/otto-cycle.png) | ![`periodic-table.png`](assets/periodic-table/periodic-table.png) |
+| [`physics-mindmap`](https://janosh.github.io/diagrams/physics-mindmap) [![LaTeX][latex-logo]](assets/physics-mindmap/physics-mindmap.tex) | [`plane-to-torus`](https://janosh.github.io/diagrams/plane-to-torus) [![LaTeX][latex-logo]](assets/plane-to-torus/plane-to-torus.tex) |
+| ![`physics-mindmap.png`](assets/physics-mindmap/physics-mindmap.png) | ![`plane-to-torus.png`](assets/plane-to-torus/plane-to-torus.png) |
+| [`plate-capacitor`](https://janosh.github.io/diagrams/plate-capacitor) [![LaTeX][latex-logo]](assets/plate-capacitor/plate-capacitor.tex) [![Typst][typst-logo]](assets/plate-capacitor/plate-capacitor.typ) | [`potential-triangle`](https://janosh.github.io/diagrams/potential-triangle) [![LaTeX][latex-logo]](assets/potential-triangle/potential-triangle.tex) |
+| ![`plate-capacitor.png`](assets/plate-capacitor/plate-capacitor.png) | ![`potential-triangle.png`](assets/potential-triangle/potential-triangle.png) |
+| [`propagator-fluctuations`](https://janosh.github.io/diagrams/propagator-fluctuations) [![LaTeX][latex-logo]](assets/propagator-fluctuations/propagator-fluctuations.tex) | [`propagators`](https://janosh.github.io/diagrams/propagators) [![LaTeX][latex-logo]](assets/propagators/propagators.tex) |
+| ![`propagator-fluctuations.png`](assets/propagator-fluctuations/propagator-fluctuations.png) | ![`propagators.png`](assets/propagators/propagators.png) |
+| [`qft-propagator-poles`](https://janosh.github.io/diagrams/qft-propagator-poles) [![LaTeX][latex-logo]](assets/qft-propagator-poles/qft-propagator-poles.tex) [![Typst][typst-logo]](assets/qft-propagator-poles/qft-propagator-poles.typ) | [`qm-cost-vs-acc`](https://janosh.github.io/diagrams/qm-cost-vs-acc) [![LaTeX][latex-logo]](assets/qm-cost-vs-acc/qm-cost-vs-acc.tex) [![Typst][typst-logo]](assets/qm-cost-vs-acc/qm-cost-vs-acc.typ) |
+| ![`qft-propagator-poles.png`](assets/qft-propagator-poles/qft-propagator-poles.png) | ![`qm-cost-vs-acc.png`](assets/qm-cost-vs-acc/qm-cost-vs-acc.png) |
+| [`random-forest`](https://janosh.github.io/diagrams/random-forest) [![LaTeX][latex-logo]](assets/random-forest/random-forest.tex) | [`regular-vs-bayes-nn`](https://janosh.github.io/diagrams/regular-vs-bayes-nn) [![LaTeX][latex-logo]](assets/regular-vs-bayes-nn/regular-vs-bayes-nn.tex) |
+| ![`random-forest.png`](assets/random-forest/random-forest.png) | ![`regular-vs-bayes-nn.png`](assets/regular-vs-bayes-nn/regular-vs-bayes-nn.png) |
+| [`rnvp`](https://janosh.github.io/diagrams/rnvp) [![LaTeX][latex-logo]](assets/rnvp/rnvp.tex) | [`roost-update`](https://janosh.github.io/diagrams/roost-update) [![LaTeX][latex-logo]](assets/roost-update/roost-update.tex) |
+| ![`rnvp.png`](assets/rnvp/rnvp.png) | ![`roost-update.png`](assets/roost-update/roost-update.png) |
+| [`sabatier-principle`](https://janosh.github.io/diagrams/sabatier-principle) [![LaTeX][latex-logo]](assets/sabatier-principle/sabatier-principle.tex) [![Typst][typst-logo]](assets/sabatier-principle/sabatier-principle.typ) | [`saddle-point`](https://janosh.github.io/diagrams/saddle-point) [![LaTeX][latex-logo]](assets/saddle-point/saddle-point.tex) |
+| ![`sabatier-principle.png`](assets/sabatier-principle/sabatier-principle.png) | ![`saddle-point.png`](assets/saddle-point/saddle-point.png) |
+| [`seebeck-effect`](https://janosh.github.io/diagrams/seebeck-effect) [![LaTeX][latex-logo]](assets/seebeck-effect/seebeck-effect.tex) | [`self-attention`](https://janosh.github.io/diagrams/self-attention) [![LaTeX][latex-logo]](assets/self-attention/self-attention.tex) [![Typst][typst-logo]](assets/self-attention/self-attention.typ) |
+| ![`seebeck-effect.png`](assets/seebeck-effect/seebeck-effect.png) | ![`self-attention.png`](assets/self-attention/self-attention.png) |
+| [`single-head-attention`](https://janosh.github.io/diagrams/single-head-attention) [![LaTeX][latex-logo]](assets/single-head-attention/single-head-attention.tex) | [`skip-connection`](https://janosh.github.io/diagrams/skip-connection) [![LaTeX][latex-logo]](assets/skip-connection/skip-connection.tex) [![Typst][typst-logo]](assets/skip-connection/skip-connection.typ) |
+| ![`single-head-attention.png`](assets/single-head-attention/single-head-attention.png) | ![`skip-connection.png`](assets/skip-connection/skip-connection.png) |
+| [`spontaneous-magnetization`](https://janosh.github.io/diagrams/spontaneous-magnetization) [![LaTeX][latex-logo]](assets/spontaneous-magnetization/spontaneous-magnetization.tex) [![Typst][typst-logo]](assets/spontaneous-magnetization/spontaneous-magnetization.typ) | [`tanh`](https://janosh.github.io/diagrams/tanh) [![LaTeX][latex-logo]](assets/tanh/tanh.tex) |
+| ![`spontaneous-magnetization.png`](assets/spontaneous-magnetization/spontaneous-magnetization.png) | ![`tanh.png`](assets/tanh/tanh.png) |
+| [`theory-space`](https://janosh.github.io/diagrams/theory-space) [![LaTeX][latex-logo]](assets/theory-space/theory-space.tex) | [`thermo-ensemble-trafos`](https://janosh.github.io/diagrams/thermo-ensemble-trafos) [![LaTeX][latex-logo]](assets/thermo-ensemble-trafos/thermo-ensemble-trafos.tex) [![Typst][typst-logo]](assets/thermo-ensemble-trafos/thermo-ensemble-trafos.typ) |
+| ![`theory-space.png`](assets/theory-space/theory-space.png) | ![`thermo-ensemble-trafos.png`](assets/thermo-ensemble-trafos/thermo-ensemble-trafos.png) |
+| [`thomson-scattering`](https://janosh.github.io/diagrams/thomson-scattering) [![LaTeX][latex-logo]](assets/thomson-scattering/thomson-scattering.tex) | [`tori`](https://janosh.github.io/diagrams/tori) [![LaTeX][latex-logo]](assets/tori/tori.tex) |
+| ![`thomson-scattering.png`](assets/thomson-scattering/thomson-scattering.png) | ![`tori.png`](assets/tori/tori.png) |
+| [`torus-fundamental-domain`](https://janosh.github.io/diagrams/torus-fundamental-domain) [![LaTeX][latex-logo]](assets/torus-fundamental-domain/torus-fundamental-domain.tex) | [`torus`](https://janosh.github.io/diagrams/torus) [![LaTeX][latex-logo]](assets/torus/torus.tex) |
+| ![`torus-fundamental-domain.png`](assets/torus-fundamental-domain/torus-fundamental-domain.png) | ![`torus.png`](assets/torus/torus.png) |
+| [`two-point-no-cutoff`](https://janosh.github.io/diagrams/two-point-no-cutoff) [![LaTeX][latex-logo]](assets/two-point-no-cutoff/two-point-no-cutoff.tex) | [`two-point`](https://janosh.github.io/diagrams/two-point) [![LaTeX][latex-logo]](assets/two-point/two-point.tex) |
+| ![`two-point-no-cutoff.png`](assets/two-point-no-cutoff/two-point-no-cutoff.png) | ![`two-point.png`](assets/two-point/two-point.png) |
+| [`unregularized-propagator-diagrams`](https://janosh.github.io/diagrams/unregularized-propagator-diagrams) [![LaTeX][latex-logo]](assets/unregularized-propagator-diagrams/unregularized-propagator-diagrams.tex) | [`variational-autoencoder`](https://janosh.github.io/diagrams/variational-autoencoder) [![LaTeX][latex-logo]](assets/variational-autoencoder/variational-autoencoder.tex) [![Typst][typst-logo]](assets/variational-autoencoder/variational-autoencoder.typ) |
+| ![`unregularized-propagator-diagrams.png`](assets/unregularized-propagator-diagrams/unregularized-propagator-diagrams.png) | ![`variational-autoencoder.png`](assets/variational-autoencoder/variational-autoencoder.png) |
+| [`wall`](https://janosh.github.io/diagrams/wall) [![LaTeX][latex-logo]](assets/wall/wall.tex) | [`wetterich-equation`](https://janosh.github.io/diagrams/wetterich-equation) [![LaTeX][latex-logo]](assets/wetterich-equation/wetterich-equation.tex) |
+| ![`wall.png`](assets/wall/wall.png) | ![`wetterich-equation.png`](assets/wetterich-equation/wetterich-equation.png) |
+| [`wyckoff-positions`](https://janosh.github.io/diagrams/wyckoff-positions) [![LaTeX][latex-logo]](assets/wyckoff-positions/wyckoff-positions.tex) | [`zt-vs-n`](https://janosh.github.io/diagrams/zt-vs-n) [![LaTeX][latex-logo]](assets/zt-vs-n/zt-vs-n.tex) [![Typst][typst-logo]](assets/zt-vs-n/zt-vs-n.typ) |
+| ![`wyckoff-positions.png`](assets/wyckoff-positions/wyckoff-positions.png) | ![`zt-vs-n.png`](assets/zt-vs-n/zt-vs-n.png) |
## Scripts