Ciao, il plugin Math sembra fare affidamento sul frontend per il rendering. Pertanto, i nostri utenti di posta elettronica non possono ricevere la formula matematica renderizzata.
C’è un modo per risolvere questo problema?
Tecnicamente, sì… ma è complicato. Dovremmo caricare mathjax in mini racer (o node) simulare il DOM e renderizzare in un SVG.
Sono sicuro che sia stato fatto in passato da alcune persone, ma non riesco a trovare esempi facili e mantenuti in circolazione. Probabilmente vale la pena testare se il pacchetto node funziona per cominciare.
Assolutamente aperto a ciò, se qualcuno si sentisse di dare una mano ne sarei lieto.
Come ho scoperto in quel thread, poiché MathJax 3 gestisce il suo file di configurazione in modo diverso da MathJax 2.x, l’aggiornamento di questo plugin richiederà più di un semplice cambio di URL.
L’intelligenza artificiale fornisce risposte in formato latex. Ho scritto un prompt per convertire questo formato latex in formato mathjax, ma il prompt non viene sempre implementato e risponde in formato latex. Quando ho scritto il mio problema alla community di openai, è arrivato il seguente suggerimento.
"Ho deciso che non valeva nemmeno la pena ingombrare un prompt di sistema, quando potevo semplicemente fare quanto segue da parte mia con i risultati:
Mi piace questa idea, concordo che il latex può essere fastidioso nelle risposte dell’IA e nel prompting di sistema se è difficile. Ancora di più perché GPT4o è ottimizzato sul latex. Supporto totalmente la creazione di una sorta di PR con un interruttore per supportare la “modalità latex” se si seleziona una casella nelle impostazioni del sito.
Non so se stiamo parlando della stessa cosa, ma per me ha funzionato. Non uso formule particolarmente complesse, però.
Comprendi appieno MathJax e lo generi.
Quando presenti espressioni matematiche, usa le seguenti regole:
1. Per le espressioni matematiche in linea, usa singoli simboli del dollaro `$...$`.
2. Per le espressioni matematiche in stile display, usa doppi simboli del dollaro `$$...$$`.
Ad esempio:
- In linea: L'equazione dell'equivalenza massa-energia è $e=mc^2$.
- Display:
$$
e=mc^2
$$
Puoi aggiungere questa funzionalità nel prossimo aggiornamento. Non importa quanto digiti il prompt, non funziona sempre correttamente. Nel forum di OpenAI, suggeriscono una soluzione come quella sopra, non un prompt, come soluzione definitiva.
Ho notato che su Meta, la matematica non viene visualizzata nella finestra di anteprima, ma viene (credo) visualizzata nei post. Lo testerò qui:
$$\n1 - a = 1 - \frac{1}{1 + e^{-z}}\n$$
Nella finestra di anteprima vedo 1 - a = 1 - \\frac{1}{1 + e^{-z}}.
È un problema noto? Mi chiedo se ci sia una configurazione specifica che lo causi.
Sul sito DeepLearning.AI Discourse, la matematica viene visualizzata nell’anteprima, ma è molto instabile: passa dal codice mathjax alla matematica renderizzata a ogni pressione di tasto. Non riscontro questo problema sul mio sito di sviluppo locale. Di nuovo, mi chiedo se si tratti di un problema di configurazione.
Ci sono nuovi suggerimenti dalla community di openai riguardo ai problemi che sto riscontrando. Hai in programma di apportare un aggiornamento in merito? I suggerimenti sono i seguenti.
Suggerimento 1:
def parse_stream_to_katex(stream: Stream):
"""
Prende uno Stream di OpenAI e sostituisce i delimitatori LaTeX di ChatGPT
con quelli di KateX.
Restituisce testo, non blocchi
"""
last_text = ""
for chunk in stream:
text = chunk.choices[0].delta.content
if text:
# A volte i delimitatori come \( possono essere divisi in due blocchi.
# Se il blocco precedente terminava con \, anteporlo a questo blocco
if last_text.endswith("\\"):
text = last_text + text
text = (
text.replace(r"\[", "$$")
.replace(r"\]", "$$")
.replace(r"\(", "$")
.replace(r"\)", "$")
)
last_text = text
# Se il testo termina con \, non lo restituiamo, lo includeremo nel blocco successivo
if not text.endswith("\\"):
yield text
Suggerimento 2:
// MarkdownLaTeXRenderer.js
import React from 'react';
import ReactMarkdown from 'react-markdown';
import remarkGfm from 'remark-gfm';
import remarkMath from 'remark-math';
import rehypeRaw from 'rehype-raw';
import rehypeKatex from 'rehype-katex';
const MarkdownLaTeXRenderer = ({ content }) => {
// Sostituisce \[ con $$ e \] con $$ per garantire la compatibilità
const processedText = content
.replace(/\[/g, '$$') // Sostituisce tutte le occorrenze di \[ con $$
.replace(/\]/g, '$$') // Sostituisce tutte le occorrenze di \] con $$
.replace(/\(/g, '$') // Sostituisce tutte le occorrenze di \( con $
.replace(/\)/g, '$'); // Sostituisce tutte le occorrenze di \) con $
const remarkMathOptions = {
singleDollarTextMath: false,
};
return (
<ReactMarkdown
className="markdown-content"
children={processedText}
remarkPlugins={[[remarkMath, remarkMathOptions], remarkGfm]} // Passa le opzioni come secondo elemento dell'array
rehypePlugins={[rehypeRaw, rehypeKatex]} // Include rehypeRaw per HTML, rehypeKatex per LaTeX
/>
);
Quando visualizzo formule matematiche sul mio dispositivo mobile, non riesco a vedere l’intera formula correttamente (la formula è troppo lunga). Qualcuno sa come risolvere questo problema?
Di seguito viene visualizzata la visualizzazione corretta sul PC.
Ruotare il telefono in orizzontale? Ma perché è tra virgolette, e può essere quello il problema?
Altrimenti. Ho chiesto all’IA del mio forum e mi ha risposto questo (non ho idea se sia utile o pura spazzatura).
Soluzioni per allineare equazioni lunghe usando MathJaxAI
Jagster:
Il forum utilizza MathJax per la matematica e le equazioni. A volte, un’equazione è così lunga da non entrare in uno schermo mobile. C’è un modo per spezzare l’equazione in più righe?
Risponditore:
MathJax non supporta direttamente l’interruzione automatica di riga per le equazioni, ma puoi usare alcune tecniche per far sì che le equazioni lunghe si adattino meglio agli schermi mobili. Ecco alcuni suggerimenti:
Usa l’ambiente align: Puoi dividere l’equazione in più righe usando l’ambiente align. Questo ti permette di allineare e distribuire parti dell’equazione su più righe. Ad esempio:
$$
\begin{align}
a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z = 0
\end{align}
$$
Usa l’ambiente split: Questo è un altro modo per dividere un’equazione in più righe. È particolarmente utile quando vuoi dividere l’equazione in parti senza bisogno di allineamento. Ad esempio:
$$
\begin{split}
a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z = 0
\end{split}
$$
Usa l’ambiente multline: Questo ambiente è progettato per equazioni lunghe che non entrano in una singola riga. Divide l’equazione in più righe senza allineamento. Ad esempio:
$$
\begin{multline}
a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z = 0
\end{multline}
$$
Questi ambienti ti permettono di controllare la presentazione delle equazioni e assicurarti che siano leggibili anche su schermi più piccoli. Ricorda che gli ambienti MathJax spesso richiedono il pacchetto amsmath, che di solito è abilitato per impostazione predefinita in MathJax.
@Jagster Queste dovrebbero essere buone soluzioni. In origine volevo impostare una barra di scorrimento orizzontale per la formula, ma non ci sono riuscito.
Viene visualizzato correttamente, ma non c’è una barra di scorrimento per vedere l’intera formula. C’è, nell’anteprima, però.
Nel post, puoi vedere l’altra parte solo se fai lo zoom: