Eu montei rapidamente um código que renderiza as equações no servidor:
Não há tratamento de erros e o tamanho da fonte não coincide exatamente com a versão do lado do cliente, mas parece funcionar basicamente no meu ambiente de desenvolvimento.
Eu realmente gosto da ideia disso; deve ajudar bastante o desempenho em alguns casos e começa a desbloquear o suporte por e-mail! Ainda precisaremos converter SVG para PNG em algum momento para e-mail.
Mas é necessário mantê-lo opcional por questões de acessibilidade.
@danekhollas, eu apoio um PR para adicionar KaTeX opcional.
Como o desenvolvimento de plugins está atualmente muito acima do meu nível, eu apenas quis tentar adicionar o KaTeX via tema personalizado, usando a extensão autorender do Katex. Funcionou até certo ponto, mas encontrei um problema ao usar um único sinal de $ como delimitador matemático.
Parece que, mesmo com o plugin de matemática do MathJax desativado, o texto entre é convertido em texto dentro de <span class="math"> e os sinais de dólar desaparecem. Estranhamente, não consigo reproduzir isso no META. Alguma ideia?
Sim, a funcionalidade de renderização automática provavelmente será extremamente instável no Discourse. Nós dependemos de ganchos adequados que “decoram” trechos de HTML enquanto são adicionados ao DOM. Precisamos fazer isso da maneira correta.
Talvez @misaka4e21 possa verificar a possibilidade de tornar o KaTeX opcional, desativado por padrão, no plugin de matemática?
Uma coisa a considerar: o KaTeX ainda carece de certos recursos em comparação ao MathJax. Na Khan Academy, eles na verdade fazem fallback para o MathJax quando o KaTeX falha. Isso provavelmente faria sentido implementar assim que o renderização do lado do servidor estiver pronta, pois, caso contrário, você sempre precisaria enviar tanto o KaTeX quanto o MathJax, o que provavelmente é indesejável.
Eu não estou realmente envolvido diretamente, mas minha suposição é que eles simplesmente usam o MathJax quando o KaTeX lança um erro?
E tenho quase certeza de que eles fazem isso no cliente também.
Para mais informações, sugiro que você pergunte diretamente a eles no github.