Files
agent-wiki-ui/docs/adr/0008-formule-latex-nel-markdown.md
T
davideandClaude Sonnet 5.5 3587f35c2d Formule LaTeX nel markdown e documentazione senza esempi particolari
Le formule `$…$` e `$$…$$` si disegnano con CSharpMath (ADR-0008), con
ripiego sul sorgente se il LaTeX non è valido. I documenti e i nomi dei test
non citano più esempi di un solo dominio.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-20 15:31:28 +02:00

4.5 KiB

ADR-0008 — Formule LaTeX nel markdown

  • Stato: Proposta
  • Data: 2026-10-20
  • Collegato a: ADR-0006 (stesso renderer, stessi vincoli di sicurezza), ADR-0007 (stesso tipo di risposte)

Contesto

Le risposte dei motori possono contenere formule in LaTeX: $ ... $ nel testo e $$ ... $$ a blocco. Il renderer markdown (Gui/MarkdownView.cs) usa Markdig con UseAdvancedExtensions(), che comprende l'estensione matematica: il parser riconosce le formule ma il renderer non le gestisce. Quelle a blocco finiscono in un blocco di codice con il sorgente LaTeX; quelle nel testo non vengono disegnate (nodo ignorato). L'utente vede sorgente illeggibile o formule mancanti.

Criteri di decisione

  1. Mostrare le formule composte (frazioni, apici e pedici, lettere greche, sommatorie, sopralineature) come in un testo tipografico.
  2. Nessuna rete e nessuna esecuzione di codice: la formula è solo dato da disegnare (come per le immagini, ADR-0006).
  3. Degrado sicuro: un LaTeX non valido mostra il sorgente come testo, mai un errore né un blocco della chat.
  4. Coerenza con il resto del renderer: colori dal tema, ricostruzione al cambio di tema, testo circostante selezionabile, accessibilità.
  5. Funziona su Windows e Linux nel publish single-file, senza runtime aggiuntivi.
  6. Dipendenza manutenuta e compatibile con la versione di Avalonia in uso.

Opzioni considerate

Opzione Esito Motivo
Lasciare com'è Scartata Il sorgente LaTeX o l'assenza delle formule rendono illeggibili le risposte con formule.
Convertire il LaTeX in testo Unicode (x_1 → x+pedice) con un mini-interprete proprio Scartata Copre solo i casi semplici; frazioni, \overline, \left…\right e matrici richiederebbero di riscrivere un motore di composizione.
Rendere con un motore web (KaTeX/MathJax in una WebView) Scartata Aggiunge un browser incorporato e codice JavaScript, contro il criterio 2 e il peso dell'eseguibile.
Libreria di composizione TeX per Avalonia (Sylinko.CSharpMath.Avalonia, licenza MIT, basata su CSharpMath) Scelta Disegna LaTeX come controllo Avalonia, senza rete né script; l'ultima versione (12.0.0) è per Avalonia 12, come l'app.

Decisione

  • La formula tra $ … $ è un'immagine inline composta dal controllo della libreria, inserita nel testo (InlineUIContainer) con allineamento al testo; $$ … $$ è un blocco a sé, allineato a sinistra, con scorrimento orizzontale se più larga della colonna.
  • Il colore è quello del testo del tema (Fg, o il colore ereditato se il token manca); al cambio di tema la vista si ricostruisce (già così per il resto).
  • Ripiego: se il LaTeX non è valido la formula compare come testo sorgente ($…$ con carattere monospazio), senza eccezioni.
  • Il nome accessibile del controllo è il sorgente LaTeX; la formula non è selezionabile come testo (è un disegno): il pulsante Copia della risposta continua a copiare il markdown originale, quindi anche il sorgente delle formule.
  • I simboli $ isolati, ad esempio un prezzo («10 $ e 20 $»), restano testo. Markdig da solo li prenderebbe per una formula (e toglie gli spazi dal contenuto): il renderer applica la regola di Pandoc sul testo originale, cioè niente spazio subito dopo il $ di apertura né subito prima di quello di chiusura. Per questo gli intervalli di Markdig si leggono su un testo con fine riga uniformi (\n).
  • Nessuna rete e nessuna lettura di file: la formula è solo dato per il disegno.

Conseguenze

Positive: le risposte con formule mostrano le formule composte; nessun cambiamento ai motori né ai prompt. Negative: una dipendenza in più (e le sue librerie di disegno); il pacchetto è un fork per Avalonia 12 e va tenuto d'occhio quando Avalonia aggiorna; le formule non sono selezionabili come testo; il supporto non copre tutto LaTeX (le macro non supportate cadono nel ripiego).

Da verificare

  • Dimensione dell'eseguibile pubblicato (single-file) dopo l'aggiunta della libreria e dei suoi font.
  • Allineamento verticale delle formule inline rispetto al testo con font diversi, su Windows e Linux.
  • Quali comandi LaTeX comuni (matrici, ambienti align, estensioni a pacchetto) sono supportati.
  • Il comportamento con formule molto lunghe in una riga di testo (a capo).

Riferimenti