Discourse Math

Com certeza, o código será muito útil aqui, talvez você possa fazer um fork do Discourse e então enviar suas alterações para um branch, assim eu posso puxar as alterações do seu branch para o PR.

Fico muito feliz que você esteja progredindo na tentativa de diagnosticar este problema.

Você pode também puxar as últimas alterações? Eu fiz uma rodada de limpeza.

1 curtida

OK, aqui está o código:

Cuidado, porém, eu não trabalhei diretamente a partir do seu commit mais recente. Eu comecei diretamente do main do Discourse e fiz as alterações a partir daí. Portanto, aprendi bastante com o seu trabalho, mas a estrutura geral é diferente.

Eu acho que você poderia resumir a principal diferença da seguinte forma: Onde você (naturalmente) usa recursos do Discourse herdados do Ember para coordenar os tempos associados a coisas como carregamento e composição, eu uso recursos do MathJax. Assim, meus pacotes load-mathjax e mathjax (um para svg e outro para chtml) são muito mais simples que os seus. O carregamento é todo coordenado através do objeto window.MathJax em discourse-math-mathjax.

Eu ainda tenho o mesmo problema que descrevi antes, ou seja, que este carregador comentado não funciona; eu tenho que usar esta versão CDN em vez disso. Eu realmente não sei por quê.

Eu acho que o seu código sofre do mesmo problema. É por isso que o AsciiMath não parece funcionar.

1 curtida

você pode verificar meu último commit, eu acho que adicionei um funil para o ember, então a compilação do ember coloca todos os arquivos no lugar certo.

2 curtidas

OK, tenho ótimas notícias e notícias frustrantes.

Primeiro, você está absolutamente certo de que adicionar o funil coloca esses arquivos no lugar correto. Adicionei o funil ao meu branch e agora funciona muito bem sem a dependência de CDN. :tada:

Infelizmente, não consigo executar seu código no momento. Sempre que navego para uma página com matemática, a matemática não é formatada e vejo a seguinte mensagem de erro no console:
Uncaught (in promise) Error: State EXPLORER already exists

Tenho certeza de que seu código estava funcionando antes, então suponho que seja algo que eu fiz. Para ser claro, eu literalmente comecei um diretório totalmente novo usando as técnicas descritas em 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

# Em um terminal
bundle exec rails server

# Em outro terminal
bin/ember-cli

Então peguei seu código com

git checkout 71ad0305f812311f2a4570edf7c33f97de46c457
git switch -c mathjax-sam

Mesmo a partir dessa configuração nova, eu recebo o erro.


Neste ponto, estou bem satisfeito com minha versão do código, mas ainda curioso sobre o que está acontecendo com o seu. Preciso fazer uma pausa nisso para o feriado, no entanto. Ficarei feliz em dar outra olhada nisso em alguns dias.

Um ponto final, no entanto: até onde sei,

await import("tex-mml-chtml.js") // seguido por
await import("input/asciimath.js")

não deveria funcionar, que é efetivamente o que seu código está fazendo, eu acho.

Estou sendo impreciso com os caminhos aí, mas meu ponto é que não sei se chamadas dinâmicas consecutivas para import levam à estrutura correta do MathJax. Acho que carregar componentes do MathJax é bem complicado e é por isso que eles têm um processo de carregamento tão detalhado com o objeto MathJax e tudo mais.

Muito obrigado pela sua ajuda e paciência @sam!

1 curtida