Discourse Math

Assolutamente, il codice sarà molto utile qui, forse puoi fare un fork di Discourse e poi inviare le tue modifiche a un branch, così potrò scaricare le modifiche dal tuo branch nella PR.

Sono così felice che tu stia facendo progressi nel cercare di diagnosticare questo problema.

Puoi anche fare un pull dell’ultima versione, ho fatto un giro di pulizia.

1 Mi Piace

OK, ecco il codice:

Attenzione, però, non ho lavorato direttamente dal tuo ultimo commit. Sono partito direttamente dal main di Discourse e ho apportato modifiche da lì. Quindi, ho imparato parecchio dal tuo lavoro ma la struttura generale è diversa.

Penso che la differenza principale possa essere riassunta così: dove tu (naturalmente) usi le funzionalità di Discourse ereditate da Ember per coordinare i tempi associati a cose come il caricamento e la tipografia, io uso le funzionalità di MathJax. Quindi, i miei bundle load-mathjax e mathjax (uno per svg e uno per chtml) sono molto più semplici dei tuoi. Il caricamento è tutto coordinato tramite l’oggetto window.MathJax in discourse-math-mathjax.

Ho ancora lo stesso problema che ho descritto prima, ovvero che questo loader commentato non funziona; devo usare questa versione CDN invece. Non so davvero perché.

Penso che il tuo codice soffra dello stesso problema. Ecco perché AsciiMath non sembra funzionare.

1 Mi Piace

puoi ricontrollare il mio ultimo commit, penso di aver aggiunto un funnel per ember, quindi ora la build di ember mette tutti i file nel posto giusto.

2 Mi Piace

OK, ho delle ottime notizie e delle notizie frustranti.

Innanzitutto, hai assolutamente ragione sul fatto che l’aggiunta del funnel posiziona quei file nel posto giusto. Ho aggiunto il funnel al mio branch e ora funziona benissimo senza la dipendenza dal CDN. :tada:

Sfortunatamente, al momento non riesco a eseguire il tuo codice. Ogni volta che navigo su una pagina con della matematica, la matematica non viene renderizzata e vedo il seguente messaggio di errore nella console:
Uncaught (in promise) Error: State EXPLORER already exists

Sono sicuro di aver fatto funzionare il tuo codice prima, quindi suppongo sia qualcosa che ho fatto io. Per essere chiari, ho letteralmente iniziato una directory completamente nuova usando le tecniche descritte in Install Discourse on macOS for development.

git clone https://github.com/discourse/discourse.git ./discourse
cd ./discourse
bundle install
pnpm install
bundle exec rake db:create
bundle exec rake db:migrate
RAILS_ENV=test bundle exec rake db:create db:migrate

# In un terminale
bundle exec rails server

# In un altro terminale
bin/ember-cli

Poi ho preso il tuo codice con

git checkout 71ad0305f812311f2a4570edf7c33f97de46c457
git switch -c mathjax-sam

Anche da questa configurazione fresca, ottengo l’errore.


A questo punto, sono abbastanza soddisfatto della mia versione del codice ma ancora curioso di sapere cosa sta succedendo con la tua. Devo prendermi una pausa da questo per le vacanze, però. Sarò felice di dare un’altra occhiata tra qualche giorno.

Un ultimo punto, però: per quanto ne so,

await import("tex-mml-chtml.js") // seguito da
await import("input/asciimath.js")

non dovrebbe funzionare, che è di fatto quello che il tuo codice sta facendo, credo.

Sono impreciso con i percorsi lì, ma il mio punto è che non so che chiamate dinamiche consecutive a import portino alla corretta struttura di MathJax. Penso che caricare i componenti di MathJax sia piuttosto complicato ed è per questo che hanno un processo di caricamento così dettagliato con l’oggetto MathJax e tutto il resto.

Grazie mille per il tuo aiuto e la tua pazienza @sam!

1 Mi Piace