Editor e formule

Come mettere alla prova un’app di appunti LaTeX con otto formule

Stasera devi ricopiare una pagina di equazioni, e l’app per appunti sul telefono dice di supportare LaTeX. Quella frase copre quattro implementazioni diverse, e la differenza tra l’una e l’altra si vede alla terza formula.

Leggi la guida
Blocco formula

x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}

La linea di frazione sta tra le due parti, non accanto.
Cosa deve fare bene un motore di rendering e cosa verifica il test
In breve

Incolla otto formule di prova nell’app e guarda cosa ne esce. Frazioni annidate, una sommatoria con gli estremi sopra e sotto, una pmatrix, parentesi estensibili, un blocco align, un cases, una macro \def e una stringa chimica \ce distinguono una vera app di appunti con LaTeX da una che disegna qualche frazione in linea. Testo piatto o un’immagine non modificabile valgono una bocciatura.

01

Incolla queste otto formule e guarda cosa ne esce

Il controllo richiede meno di un minuto e nessun account. Copia il blocco qui sotto in una nuova nota nell’app che stai valutando, un frammento alla volta o tutti insieme, e confronta il risultato con la riga che segue ogni frammento. Ogni frammento è LaTeX valido che KaTeX visualizza correttamente, quindi se qualcosa non va la colpa è dell’app, non dell’input.

Test LaTeX con otto formule
TEST LATEX PER UN’APP DI APPUNTI
Incolla un blocco alla volta. Confronta con la riga CORRETTO.

1. FRAZIONI ANNIDATE
\frac{1}{1 + \frac{1}{1 + \frac{1}{x}}}
CORRETTO: tre linee di frazione sovrapposte, ognuna interna più corta e
in corpo più piccolo della linea che la contiene.

2. OPERATORE CON ESTREMI
\sum_{n=1}^{\infty} \frac{1}{n^2} = \frac{\pi^2}{6}
CORRETTO: in modalità display n=1 e l’infinito stanno esattamente sotto e
sopra la sigma, non alla sua destra, e la sigma è più alta del testo
intorno.

3. AMBIENTE MATRICE
\begin{pmatrix} a & b \\ c & d \end{pmatrix}^{-1} =
\frac{1}{ad - bc} \begin{pmatrix} d & -b \\ -c & a \end{pmatrix}
CORRETTO: due righe, parentesi tonde alte quanto tutta la matrice e il
-1 in alto a destra della parentesi di chiusura.

4. DELIMITATORI ESTENSIBILI
\left( \sum_{i=1}^{n} a_i b_i \right)^2 \le
\left( \sum_{i=1}^{n} a_i^2 \right) \left( \sum_{i=1}^{n} b_i^2 \right)
CORRETTO: ogni parentesi alta quanto la sommatoria che contiene, ed
entrambe le parentesi di una coppia disegnate alla stessa altezza.

5. ALLINEAMENTO
\begin{align}
(a+b)^2 &= a^2 + 2ab + b^2 \\
(a-b)^2 &= a^2 - 2ab + b^2
\end{align}
CORRETTO: un unico blocco di due righe con i segni di uguale nella
stessa colonna.

6. DEFINIZIONE PER CASI
f(x) = \begin{cases}
  x^2 & \text{se } x \ge 0 \\
  -x^2 & \text{se } x < 0
\end{cases}
CORRETTO: un’unica graffa che abbraccia le due righe, testo in tondo
nelle due condizioni e le condizioni in una colonna a sé.

7. DEFINIZIONE DI MACRO
\def\dd#1{\mathrm{d}#1}
\int_0^1 x^2 \dd{x} = \frac{1}{3}
CORRETTO: la macro si espande, quindi compare una d in tondo prima della
x, con 0 e 1 sul segno di integrale.

8. CHIMICA
\ce{H2SO4 + 2NaOH -> Na2SO4 + 2H2O}
CORRETTO: pedici numerici, simboli degli elementi in tondo invece che in
corsivo come variabili, e una freccia di reazione completa.

DOPO LE OTTO
- Metti il cursore dentro una formula visualizzata e seleziona un
  carattere. Se non ci riesci, la formula è un’immagine.
- Passa il sistema alla modalità scura. Una formula che resta nera ha
  uno sfondo chiaro incorporato.
- Imposta la nota sulla dimensione del testo più grande. Un’immagine si
  sgrana. Una formula composta resta nitida.
Scarica il file di testo

Guarda cosa non funziona, più di cosa funziona. Il frammento 1 ti dice se l’app compone davvero o si limita a sostituire stringhe. I frammenti 3 e 6 sono il punto in cui si ferma un renderer basato su una breve tabella di sostituzioni. Il frammento 7 segna il confine tra un parser LaTeX e una visualizzazione che assomiglia a LaTeX, perché un’app che ignora \def stampa il testo letterale o dà un errore di parsing. Il frammento 8 richiede mhchem, un pacchetto che si appoggia sulla grammatica matematica di base, quindi un’app può superare i primi sette e fallire comunque l’ultimo.

02

Quattro cose che un’app può intendere per supporto LaTeX

Due app possono scrivere entrambe LaTeX nella pagina delle funzioni e comportarsi in modo del tutto diverso. Ognuna delle quattro implementazioni qui sotto fallisce in un modo che si vede dall’esterno, senza leggere il codice sorgente di nessuno.

LivelloCome funzionaCome riconoscerloDove fa male
Sottoinsieme in lineaUna breve tabella di sostituzioni copre frazioni, apici e lettere greche tra segni del dollaroIl frammento 3 torna con la parola pmatrix ancora visibile, o come un’unica riga continuaLa prima matrice, il primo integrale o la prima definizione per casi che scrivi
Immagine generataIl LaTeX va a un convertitore e torna come bitmap o SVG inserito nella notaNon riesci a mettere il cursore dentro la formula, e l’immagine si sgrana con un testo più grandeLa modalità scura lascia glifi neri su una pagina scura, e per modificare devi riscrivere il sorgente
Motore nel browserUna WebView nascosta esegue KaTeX o MathJax in JavaScriptLa prima formula di una sessione compare un attimo dopo il resto della notaDa 50 a 150 MB di RAM per la WebView, e un ritardo all’avvio prima della prima formula
Motore nativoLe regole box-and-glue di TeX girano nel codice dell’app, senza browser di mezzoLe formule si disegnano mentre la riga entra nello schermo e cambiano colore con l’aspetto del sistemaLa questione aperta diventa la copertura, non la velocità: fai comunque il test degli otto frammenti

I dati della terza riga vengono dal README di SwaTex, che descrive la soluzione multipiattaforma più comune come una WebView nascosta che consuma da 50 a 150 MB di RAM, con un ritardo all’avvio prima della prima formula e nessuna garanzia di funzionamento offline. È il prezzo del riuso di una libreria JavaScript che l’app non ha scritto. Il quarto livello costa molto di più da costruire e toglie il browser dalla pagina.

03

Cosa fa di diverso un motore di composizione nativo

Phrase visualizza la matematica con SwaTex, un motore di rendering matematico compatibile con KaTeX scritto interamente in Swift, senza JavaScript, senza WebView e senza DOM. È distribuito con licenza MIT, è pubblico su github.com/PhraseHQ/SwaTex ed è un port in Swift, riscritto da zero, di RaTeX, il renderer matematico in Rust compatibile con KaTeX. SwaTex visualizza ogni formula nelle note IA di Phrase. Il suo motore di impaginazione applica le regole box-and-glue di TeX a partire dalle metriche dei font KaTeX incluse, non dalle API di testo della piattaforma, quindi il risultato corrisponde a KaTeX e RaTeX glifo per glifo.

Una nota di riunione finita in Phrase: il riassunto, il piano di apertura come diagramma di flusso, la formula del punto di pareggio e le attività.
Una formula del punto di pareggio composta da SwaTex, accanto a un diagramma di flusso, in una nota di Phrase su iPhone.

La copertura è di 1007 voci su 1008 nella tabella di supporto ufficiale di KaTeX. Questo insieme comprende gli ambienti pmatrix, align, cases e CD, oltre a delimitatori estensibili, accenti e macro come \def, \newcommand e \expandafter. Per la chimica c’è il supporto completo di mhchem tramite \ce e \pu, grazie a un port della macchina a stati verificato identico byte per byte a RaTeX su un corpus di 253 casi. Gli alberi di dimostrazione usano prooftree in stile bussproofs per regole di inferenza e calcoli dei sequenti. I frammenti 3, 5, 6, 7 e 8 qui sopra rientrano tutti in questo insieme.

I numeri sulla velocità qui sotto sono stati misurati rispetto al motore di riferimento in Rust sugli stessi corpus, sulla stessa macchina, con la mediana di 3 esecuzioni, e tutte le 2.541 formule di riferimento risultano identiche bit per bit tra i due motori. Ogni numero si può riprodurre con i comandi del file BENCHMARKS.md del repository.

Carico di lavoroRaTeX (Rust)SwaTex
Dal parsing all’impaginazione alla lista di visualizzazione41,4 µs/formula12,5 µs/formula (3,3×)
PNG in blocco, 100 formule a 40 px, 2×~200 µs/formula34 µs effettivi (in parallelo, 5,9×)
Formula ripetuta, dalla cache dell’editor41,4 µs105 ns (~390×)
Scorrimento nell’editorNessun dato equivalente0 rasterizzazioni di glifi (updateLayer)

La parità viene controllata, non solo dichiarata. Il repository include scripts/diff_layout.py, che confronta lo strumento LayoutDump con il binario di impaginazione di RaTeX su un corpus di riferimento di oltre 1000 formule, e la suite di test porta in Swift i test di lexer, parser, ambienti, mhchem e impaginazione di RaTeX. Disegnare una formula è metà del problema dell’editor. Il blocco deve anche avere un’altezza precisa e sopravvivere al riuso delle viste, ed è il tema degli articoli su come un blocco di formula calcola la propria altezza e su come tenere il calcolo accanto alla spiegazione.

Quando la nota esiste, chiedi all’assistente di ricavarne una creazione. Con Pro, Phrase trasforma una nota in presentazioni, pagine, dashboard, flashcard, quiz e mappe mentali, e una pagina di derivazioni svolte è una fonte naturale per un quiz o un mazzo di flashcard. Lo stesso vale per gli appunti di una lezione piena di equazioni.

04

L’unica voce che SwaTex non visualizza

La voce mancante è \includegraphics, l’unica eccezione su 1008, e KaTeX stesso lo abilita solo con l’opzione trust. Il comando inserisce un’immagine esterna in una formula, quindi il progetto originale lo tratta come una questione di permessi, non di composizione. Quattro comandi \html* visualizzano il loro contenuto e scartano gli attributi che esistono solo nel DOM, perché un renderer nativo non ha un DOM che quegli attributi possano descrivere.

1007 voci su 1008 nella tabella di supporto di KaTeX

  • Visualizzate1003
  • Visualizzate senza gli attributi che esistono solo nel DOM (i quattro comandi \html*)4
  • Non visualizzata: \includegraphics, che anche KaTeX abilita solo con l’opzione trust1
SwaTex visualizza 1007 delle 1008 voci della tabella di supporto di KaTeX. L’unica lacuna è \includegraphics, che KaTeX stesso abilita solo con l’opzione trust.
  • Il minimo di sistema è iOS 18, macOS 15, tvOS 18, watchOS 11 e visionOS 2, fissato da Synchronization.Mutex. Le app che supportano versioni precedenti non possono ancora adottare SwaTex.
  • Solo piattaforme Apple native. Non ci sono wrapper per React Native, Flutter o il Web.
  • Alcuni comportamenti differiscono da RaTeX di proposito, ognuno fissato da un test di regressione. Un \verb non chiuso e x\limits^2 sono errori di parsing invece di essere accettati in silenzio.
  • L’input annidato in profondità è protetto da un contatore di ricorsione e da un margine sullo stack, che producono un errore di parsing e mai un crash. L’app che ospita il motore dovrebbe comunque limitare la lunghezza di un input ostile.

Questa pagina lascia fuori due cose. La matematica scritta a mano è un altro problema, perché Phrase lavora con materiale scritto, registrato e importato, non con l’inchiostro digitale. Diagrammi e blocchi di codice sono una questione separata dalle formule, e i due approfondimenti tecnici citati sopra descrivono come convivono nello stesso editor.

Tieni distinte anche altre due cose. SwaTex si compila per macOS 15, mentre l’app Phrase per Mac richiede macOS 26 o versioni successive. Un motore che si compila per una piattaforma non dice nulla su quali sistemi supporta un’app. Phrase funziona su iPhone, iPad e Mac, con un’app per registrare da Apple Watch, e su ciascuno visualizza le formule con SwaTex.

Phrase per Mac: la libreria delle note accanto al piano di apertura di una caffetteria, con foto, riassunto, diagramma di flusso e formula del punto di pareggio.
Lo stesso tipo di nota in Phrase per Mac, che richiede macOS 26 o versioni successive.
05

Domande sul LaTeX in un’app di appunti

Si possono scrivere formule matematiche nell’app Note di Apple? Fai il test nell’app che hai già, invece di fidarti di un’affermazione scritta un anno fa. Apple documenta cosa fa Note nelle sue pagine di supporto, e la risposta cambia da una versione di iOS all’altra. I frammenti 1 e 3 chiudono la questione in una decina di secondi.

Posso scrivere equazioni in LaTeX nell’app Note? Scrivere LaTeX e visualizzare LaTeX sono due domande diverse. Qualsiasi app conserva i caratteri \frac{a}{b} come testo. Quello che conta è se compare una linea orizzontale con a sopra e b sotto, ed è quello che controlla il frammento 1.

Cosa dovrebbe gestire un’app per appunti con supporto LaTeX? Usa la tabella di supporto di KaTeX come metro comune, visto che è pubblica e ha 1008 voci. Un’app che copre ambienti, delimitatori estensibili, macro e mhchem lavora con la stessa grammatica delle implementazioni di riferimento. Un’app che copre le frazioni in linea fa qualcosa di molto più limitato.

Un’app di appunti per la matematica ha bisogno della connessione per disegnare una formula? Dipende dal livello. Un convertitore che restituisce un’immagine ha bisogno di un viaggio di andata e ritorno, e un motore in WebView ha un costo di avvio prima della prima formula. SwaTex fa parsing e impaginazione nel codice dell’app, senza browser di mezzo.

Fonti e note redazionali

Fonti verificate in data 25 settembre 2026. I passaggi sulle funzioni Apple seguono la documentazione attuale di Apple, citata qui sotto. Le condizioni cambiano a ogni versione di iOS.

Pubblicata da Eversight, i creatori di Phrase. Il nostro metodo editoriale · Segnala una correzione