graph LR MD["π ell-review.md\nMarkdown + YAML"] --> P["pandoc"] Y["ποΈ latex.yaml / beamer.yaml"] --> P B["π *.bib\nBibTeX data"] --> CP["citeproc"] S["π¨ *.csl\ncitation style"] --> CP P --> X["pandoc-crossref\nsec / fig / eq / tbl"] CP --> T["π generated TeX"] X --> T T --> E["pdflatex / xelatex"] E --> PDF["π ell-review.pdf"] style MD fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style Y fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style P fill:#fff9c4,stroke:#f57f17,stroke-width:3px style B fill:#d1c4e9,stroke:#6a1b9a,stroke-width:3px style S fill:#d1c4e9,stroke:#6a1b9a,stroke-width:3px style CP fill:#d1c4e9,stroke:#6a1b9a,stroke-width:3px style X fill:#fff9c4,stroke:#f57f17,stroke-width:3px style T fill:#fce4ec,stroke:#ad1457,stroke-width:3px style E fill:#e8f5e9,stroke:#2e7d32,stroke-width:3px style PDF fill:#d5f5e3,stroke:#2e7d32,stroke-width:4px
graph LR K["citation in the source"] --> CP["citeproc"] DB[("π ellipsoid.bib\nBibTeX records")] --> CP CSL[("π¨ applied-math.csl\nCSL style")] --> CP CP --> N["[1]\nnumeric citation"] CP --> REF["π References section\nauto-generated"] style K fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style DB fill:#fff9c4,stroke:#f57f17,stroke-width:3px style CSL fill:#d1c4e9,stroke:#6a1b9a,stroke-width:3px style CP fill:#d1c4e9,stroke:#6a1b9a,stroke-width:3px style N fill:#d5f5e3,stroke:#2e7d32,stroke-width:3px style REF fill:#d5f5e3,stroke:#2e7d32,stroke-width:3px
graph LR L["labelled heading\n{#sec:cutting_plane}"] --> X["pandoc-crossref"] R["reference\nsee @sec:cutting_plane"] --> X X --> OUT["see Β§ 2"] style L fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style R fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style X fill:#fff9c4,stroke:#f57f17,stroke-width:3px style OUT fill:#d5f5e3,stroke:#2e7d32,stroke-width:3px
graph TD CFG{"crossref.yaml\ncref option"} --> TT["true β cleveref"] CFG --> FF["false β ref + Β§"] TT --> C["cleveref package"] FF --> R["plain reference"] C --> OK["plain article: fine β "] C --> BAD["siamltex class: ?? β"] R --> GOOD["always works β "] style CFG fill:#d1c4e9,stroke:#6a1b9a,stroke-width:3px style TT fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style FF fill:#fff9c4,stroke:#f57f17,stroke-width:3px style C fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style R fill:#fff9c4,stroke:#f57f17,stroke-width:3px style OK fill:#d5f5e3,stroke:#2e7d32,stroke-width:3px style GOOD fill:#d5f5e3,stroke:#2e7d32,stroke-width:3px style BAD fill:#fadbd8,stroke:#c0392b,stroke-width:4px
graph LR E["πͺ emoji & bare Unicode"] --> ERR["pdflatex:\nUnicode not set up"] FIX["wrap math in delimiters"] --> OK["builds β "] style E fill:#fadbd8,stroke:#c0392b,stroke-width:4px style ERR fill:#fadbd8,stroke:#c0392b,stroke-width:4px style FIX fill:#fff9c4,stroke:#f57f17,stroke-width:3px style OK fill:#d5f5e3,stroke:#2e7d32,stroke-width:3px
graph LR H1["level-1 heading"] --> S["section\nnumbering 1, 2 β "] H2["level-2 heading"] --> SS["subsection\nnumbering 0.1, 0.2 π±"] style H1 fill:#d5f5e3,stroke:#2e7d32,stroke-width:3px style S fill:#d5f5e3,stroke:#2e7d32,stroke-width:3px style H2 fill:#fadbd8,stroke:#c0392b,stroke-width:4px style SS fill:#fadbd8,stroke:#c0392b,stroke-width:4px
graph TD IMG["figure link to *.svg"] --> P{"pandoc β LaTeX"} P -->|rsvg-convert found| PDF["svg β pdf\nincludegraphics β "] P -->|missing| SVG["svg package + InkScape\n+ shell-escape β"] P -->|pdf twin exists| TWIN["use the *.pdf directly β "] style IMG fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style P fill:#fff9c4,stroke:#f57f17,stroke-width:3px style PDF fill:#d5f5e3,stroke:#2e7d32,stroke-width:3px style TWIN fill:#d5f5e3,stroke:#2e7d32,stroke-width:3px style SVG fill:#fadbd8,stroke:#c0392b,stroke-width:4px
graph TD CL["cleveref hooks the label\nand counter machinery"] --> M["but siamltex.cls\nredefines label + counter"] M --> E["label type = empty\nβ every reference is ?? β"] FIX["crossref: cref = false\nΒ§ + plain reference"] --> OK["Β§ 2, Β§ 3.1 β "] style CL fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style M fill:#fadbd8,stroke:#c0392b,stroke-width:4px style E fill:#fadbd8,stroke:#c0392b,stroke-width:4px style FIX fill:#fff9c4,stroke:#f57f17,stroke-width:3px style OK fill:#d5f5e3,stroke:#2e7d32,stroke-width:3px
graph LR A["*.csl is a dependent style"] --> B["independent-parent =\nelsevier-with-titles"] B --> NET["π fetch from zotero.org"] NET --> FAIL["ConnectionTimeout β"] INLINE["inline the parent style"] --> SELF["self-contained β offline"] style A fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style B fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style NET fill:#fadbd8,stroke:#c0392b,stroke-width:4px style FAIL fill:#fadbd8,stroke:#c0392b,stroke-width:4px style INLINE fill:#fff9c4,stroke:#f57f17,stroke-width:3px style SELF fill:#d5f5e3,stroke:#2e7d32,stroke-width:3px
graph LR A["commit sources only"] --> B["artifacts generated,\nnever hand-edited"] B --> C["reproducible:\nany machine, offline β "] style A fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style B fill:#fff9c4,stroke:#f57f17,stroke-width:3px style C fill:#d5f5e3,stroke:#2e7d32,stroke-width:3px
graph LR A["same inputs"] --> B["same command"] --> C["same output β "] style A fill:#e3f2fd,stroke:#1565c0,stroke-width:3px style B fill:#fff9c4,stroke:#f57f17,stroke-width:3px style C fill:#d5f5e3,stroke:#2e7d32,stroke-width:3px