From bf8b38346dd455c8cd43dabb66d23602612c222e Mon Sep 17 00:00:00 2001 From: wassname Date: Thu, 29 Jan 2026 20:19:59 +0800 Subject: [PATCH] init --- diagrams/TEMPLATE.typ | 70 +++++++++++++++++++ diagrams/examples/example_tikz.tex | 39 +++++++++++ diagrams/examples/example_typst.png | Bin 0 -> 310311 bytes diagrams/examples/example_typst.typ | 61 +++++++++++++++++ diagrams/examples/test_simple.png | Bin 0 -> 43671 bytes diagrams/examples/test_simple.typ | 19 ++++++ render_diagram.sh | 101 ++++++++++++++++++++++++++++ 7 files changed, 290 insertions(+) create mode 100644 diagrams/TEMPLATE.typ create mode 100644 diagrams/examples/example_tikz.tex create mode 100644 diagrams/examples/example_typst.png create mode 100644 diagrams/examples/example_typst.typ create mode 100644 diagrams/examples/test_simple.png create mode 100644 diagrams/examples/test_simple.typ create mode 100755 render_diagram.sh diff --git a/diagrams/TEMPLATE.typ b/diagrams/TEMPLATE.typ new file mode 100644 index 0000000..e807732 --- /dev/null +++ b/diagrams/TEMPLATE.typ @@ -0,0 +1,70 @@ +// Diagram Name: [Your Diagram Title] +// +// Source: /path/to/source/file.py:LINE_START-LINE_END +// Created: YYYY-MM-DD +// +// Concept: +// Brief explanation of what this diagram visualizes. Describe the key +// mathematical or computational concept being illustrated. +// +// Key Equations: +// L = f(x, y) where... +// +// Visualization Style: +// - Geometric (vectors in subspace) +// - Flowchart (computational steps) +// - Annotated (functions with labels) +// +// References: +// - Paper: [Title] (arxiv.org/abs/...) +// - Documentation: https://... +// - Related diagrams: diagrams/other/file.typ +// +// Notes: +// - Any implementation-specific details +// - Color coding explanations +// - Known limitations or simplifications + +#import "@preview/cetz:0.4.2" + +#set page(width: auto, height: auto, margin: 1.5cm) + +// Optional: Make math equations more readable +#show math.equation: block.with(fill: white, inset: 2pt) + +#align(center)[ + #text(size: 16pt, weight: "bold")[Your Diagram Title] +] +#align(center)[ + #text(size: 11pt)[Subtitle or brief description] +] + +#v(0.5cm) + +#cetz.canvas(length: 1.2cm, { + import cetz.draw: * + + // Centralized styling + set-style( + stroke: (thickness: 1.2pt), + mark: (fill: black, scale: 1.5), + content: (padding: 2pt) + ) + + // Your diagram code here + // Example: + circle((0, 0), radius: 2, stroke: (paint: blue, thickness: 2pt)) + content((0, 0), [Your content]) +}) + +// Optional: Add formula or explanation below +#v(0.5cm) +#align(center)[ + #box(fill: rgb("#F5F5F5"), inset: 10pt, radius: 5pt)[ + #text(size: 11pt)[ + Mathematical formulation or key insights + + $ cal(L) = sum_i f(x_i) $ + ] + ] +] diff --git a/diagrams/examples/example_tikz.tex b/diagrams/examples/example_tikz.tex new file mode 100644 index 0000000..c62326f --- /dev/null +++ b/diagrams/examples/example_tikz.tex @@ -0,0 +1,39 @@ +\documentclass[tikz,border=10pt]{standalone} +\usepackage{tikz} +\usetikzlibrary{arrows.meta,positioning,shapes.geometric,calc} + +\begin{document} +\begin{tikzpicture}[ + node distance=2cm, + box/.style={rectangle, draw, minimum width=2.5cm, minimum height=1cm, align=center}, + arrow/.style={-Stealth, thick} +] + +% Example: Inner Contrastive Loss Flow +\node[box, fill=blue!20] (input) {Hidden States\\$h_s$}; +\node[box, fill=green!20, below left=of input] (pos) {Positive\\$h_{pos}$}; +\node[box, fill=red!20, below right=of input] (neg) {Negative\\$h_{neg}$}; + +\node[box, fill=yellow!20, below=3cm of input] (proj) {Projection\\$\mathbf{V}$}; + +\node[box, fill=purple!20, below left=1.5cm and 1cm of proj] (in) {In-Space\\Energy}; +\node[box, fill=orange!20, below right=1.5cm and 1cm of proj] (null) {Null-Space\\Energy}; + +\node[box, fill=gray!20, below=2cm of proj] (loss) {Combined Loss\\$\mathcal{L}$}; + +% Arrows +\draw[arrow] (input) -- (pos); +\draw[arrow] (input) -- (neg); +\draw[arrow] (pos) -- (proj); +\draw[arrow] (neg) -- (proj); +\draw[arrow] (proj) -- (in); +\draw[arrow] (proj) -- (null); +\draw[arrow] (in) -- (loss); +\draw[arrow] (null) -- (loss); + +% Labels +\node[above right=0.1cm of input, font=\small] {Split}; +\node[left=0.1cm of proj, font=\small, text width=2cm] {Project to\\subspace}; + +\end{tikzpicture} +\end{document} diff --git a/diagrams/examples/example_typst.png b/diagrams/examples/example_typst.png new file mode 100644 index 0000000000000000000000000000000000000000..bcedae1b1449e90c19a9ef4a6e8a3f7a7c0be51c GIT binary patch literal 310311 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 literal 0 HcmV?d00001 diff --git a/diagrams/examples/example_typst.typ b/diagrams/examples/example_typst.typ new file mode 100644 index 0000000..9f1f626 --- /dev/null +++ b/diagrams/examples/example_typst.typ @@ -0,0 +1,61 @@ +#import "@preview/cetz:0.4.2" + +#set page(width: auto, height: auto, margin: 1cm) + +// Example: Neural Network Loss Visualization +#align(center)[ + #text(size: 14pt, weight: "bold")[Inner Contrastive Loss Flow] +] + +#v(0.5cm) + +#cetz.canvas({ + import cetz.draw: * + + // Set up style + set-style( + stroke: (thickness: 1.5pt), + mark: (end: ">", fill: black), + ) + + // Input layer + rect((-2, 6), (2, 8), fill: rgb("#BBDEFB"), stroke: black, name: "input") + content((0, 7), [Hidden States]) + content((0, 5.5), [$h_s$]) + + // Positive and negative branches + rect((-6, 3), (-2, 5), fill: rgb("#C8E6C9"), stroke: black, name: "pos") + content((-4, 4), [Positive]) + content((-4, 2.5), [$h_"pos"$]) + + rect((2, 3), (6, 5), fill: rgb("#FFCDD2"), stroke: black, name: "neg") + content((4, 4), [Negative]) + content((4, 2.5), [$h_"neg"$]) + + // Projection + rect((-3, -1), (3, 1), fill: rgb("#FFF9C4"), stroke: black, name: "proj") + content((0, 0), [Projection]) + content((0, -1.5), [$bold(V)$]) + + // Energy computation + rect((-7, -5), (-3, -3), fill: rgb("#E1BEE7"), stroke: black, name: "in") + content((-5, -4), [In-Space]) + + rect((3, -5), (7, -3), fill: rgb("#FFCCBC"), stroke: black, name: "null") + content((5, -4), [Null-Space]) + + // Final loss + rect((-2, -9), (2, -7), fill: rgb("#E0E0E0"), stroke: black, name: "loss") + content((0, -8), [Loss]) + content((0, -9.5), [$cal(L)$]) + + // Arrows + line((0, 6), (-4, 5), mark: (end: ">")) + line((0, 6), (4, 5), mark: (end: ">")) + line((-4, 3), (0, 1), mark: (end: ">")) + line((4, 3), (0, 1), mark: (end: ">")) + line((-1.5, -1), (-5, -3), mark: (end: ">")) + line((1.5, -1), (5, -3), mark: (end: ">")) + line((-5, -5), (0, -7), mark: (end: ">")) + line((5, -5), (0, -7), mark: (end: ">")) +}) diff --git a/diagrams/examples/test_simple.png b/diagrams/examples/test_simple.png new file mode 100644 index 0000000000000000000000000000000000000000..458229433a2befa76ea286b5551c3c7f2c754b49 GIT binary patch literal 43671 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 UVIUd5p8*IwUHx3vIVCg!08133nE(I) literal 0 HcmV?d00001 diff --git a/diagrams/examples/test_simple.typ b/diagrams/examples/test_simple.typ new file mode 100644 index 0000000..35d4bee --- /dev/null +++ b/diagrams/examples/test_simple.typ @@ -0,0 +1,19 @@ +#import "@preview/cetz:0.4.2" + +#set page(width: auto, height: auto, margin: 1cm) + +#align(center)[*Simple CeTZ Test*] + +#cetz.canvas({ + import cetz.draw: * + + // Simple boxes and arrows + rect((0, 0), (2, 1), fill: blue.lighten(80%), stroke: black, name: "box1") + content((1, 0.5), [Box 1]) + + rect((0, -2), (2, -1), fill: red.lighten(80%), stroke: black, name: "box2") + content((1, -1.5), [Box 2]) + + // Arrow between them + line((1, 0), (1, -1), mark: (end: ">"), stroke: black + 1.5pt) +}) diff --git a/render_diagram.sh b/render_diagram.sh new file mode 100755 index 0000000..403f4a5 --- /dev/null +++ b/render_diagram.sh @@ -0,0 +1,101 @@ +#!/bin/bash +# Diagram rendering script - supports TikZ, Typst/CeTZ, and SVG + +set -e + +USAGE="Usage: $0 [output.png] + +Supported formats: + .tex - TikZ/LaTeX diagrams (requires pdflatex + imagemagick/poppler) + .typ - Typst/CeTZ diagrams (requires typst) + .svg - SVG diagrams (requires inkscape or imagemagick) + +Examples: + $0 diagram.tex # Creates diagram.png + $0 diagram.typ output.png # Creates output.png +" + +if [ $# -lt 1 ]; then + echo "$USAGE" + exit 1 +fi + +INPUT="$1" +EXT="${INPUT##*.}" +BASENAME="${INPUT%.*}" + +# Determine output file +if [ $# -ge 2 ]; then + OUTPUT="$2" +else + OUTPUT="${BASENAME}.png" +fi + +echo "Rendering: $INPUT -> $OUTPUT" + +case "$EXT" in + tex) + # TikZ/LaTeX workflow + if ! command -v pdflatex &> /dev/null; then + echo "Error: pdflatex not found. Install with:" + echo " sudo apt-get install texlive texlive-pictures" + exit 1 + fi + + # Compile to PDF + pdflatex -interaction=nonstopmode -output-directory="$(dirname "$INPUT")" "$INPUT" > /dev/null + PDF="${BASENAME}.pdf" + + # Convert PDF to PNG + if command -v pdftoppm &> /dev/null; then + # Use poppler (cleaner, better quality) + pdftoppm "$PDF" "${BASENAME}" -png -singlefile -r 300 + mv "${BASENAME}.png" "$OUTPUT" + elif command -v convert &> /dev/null; then + # Use ImageMagick + convert -density 300 "$PDF" -quality 90 "$OUTPUT" + else + echo "Error: Need pdftoppm (poppler-utils) or convert (imagemagick)" + echo "Install with: sudo apt-get install poppler-utils" + exit 1 + fi + + # Cleanup LaTeX aux files + rm -f "${BASENAME}.aux" "${BASENAME}.log" "${BASENAME}.pdf" + echo "Created: $OUTPUT" + ;; + + typ) + # Typst workflow + if ! command -v typst &> /dev/null; then + echo "Error: typst not found. Install with:" + echo " curl -fsSL https://typst.community/typst-install/install.sh | sh" + echo "Or: cargo install --git https://github.com/typst/typst" + exit 1 + fi + + # Compile to PNG directly + typst compile "$INPUT" "$OUTPUT" --ppi 300 + echo "Created: $OUTPUT" + ;; + + svg) + # SVG workflow + if command -v inkscape &> /dev/null; then + inkscape "$INPUT" --export-type=png --export-filename="$OUTPUT" --export-dpi=300 + elif command -v convert &> /dev/null; then + convert -density 300 -background white -alpha remove "$INPUT" "$OUTPUT" + else + echo "Error: Need inkscape or imagemagick" + echo "Install with: sudo apt-get install inkscape" + exit 1 + fi + echo "Created: $OUTPUT" + ;; + + *) + echo "Error: Unsupported file extension: .$EXT" + echo "$USAGE" + exit 1 + ;; +esac