potential-triangle.tex (22 lines)
\documentclass[tikz]{standalone}
\usetikzlibrary{mindmap}
\begin{document}
\begin{tikzpicture}[align=center]
\node (enthalpy) at (2, 0) [concept, concept color=orange] {Enthalpy $H$};
\node (free-energy) at (-2, 0) [concept, concept color=teal] {Free\\Energy $G$};
\node (entropy) at (0, -3) [concept, concept color=blue!60!black, text=white] {Entropy $S$};
\path (enthalpy) to[circle connection bar switch color=from (orange) to (teal)] node[above=1ex, font=\small] {reactivity} (free-energy);
\path (entropy) to[circle connection bar switch color=from (blue!60!black) to (orange)] node[right=1ex, font=\small] {heat} (enthalpy);
\path (free-energy) to[circle connection bar switch color=from (teal) to (blue!60!black)] node[below left=0, font=\small] {disorder} (entropy);
\end{tikzpicture}
\end{document}
potential-triangle.typ (42 lines)
#import "@preview/cetz:0.3.4": canvas, draw
#import draw: circle, content, line
#set page(width: auto, height: auto, margin: 8pt)
#set text(size: 10pt)
#canvas({
let node_radius = 0.8
let colors = (
"enthalpy": rgb("#FFA500"),
"free-energy": rgb("#008080"),
"entropy": rgb("#00008B").darken(40
)
for (name, label, pos) in (
("enthalpy", [$H$\ Enthalpy], (2, 0)),
("free-energy", [$G$\ Free\ Energy], (-2, 0)),
("entropy", [$S$\ Entropy], (0, -3)),
) {
let fill = colors.at(name)
circle(pos, radius: node_radius, fill: fill, name: name, stroke: none)
content(pos, align(center, text(fill: white, label)))
}
for (start, end, name, dir) in (
("enthalpy", "free-energy", "h-g", rtl),
("entropy", "enthalpy", "s-h", btt),
("free-energy", "entropy", "g-s", ltr),
) {
let stroke = 3pt + gradient.linear(dir: dir, colors.at(start), colors.at(end))
line(start, end, stroke: stroke, name: name)
}
for (name, label, anchor) in (
("h-g", [reactivity], "south"),
("s-h", [heat], "west"),
("g-s", [disorder], "east"),
) {
content(name, align(center, label), anchor: anchor, padding: 4pt)
}
})