Ho dato un’occhiata alla quotazione della matematica (sto pensando di scrivere un PR o contribuire a uno).
Documento qui alcuni pensieri e scoperte iniziali.
- Sembra che la quotazione passi attraverso questi componenti principali:
- Funzione
buildQuote TopicController.selectedText- Il contenuto passato alla quotazione proviene da
this.quoteState.buffer– che viene popolato inQuoteButton._selectionChanged(forse anche in altri posti) - Questo chiama
selectedText - che chiama
toMarkdown
- Funzione
- La funzione
buildQuoteaccetta un oggetto post – penso che sia una descrizione JSON completa del post esempio.
Quindi la mia impressione iniziale è che uno di questi punti potrebbe essere modificabile:
toMarkdownconfronta gli elementi con vari tag HTML; penso che mathjax utilizzi elementi personalizzati rilevabili (forse non il rendering SVG), forse anche katex?selectedTextesegue alcuni confronti per elementi come blocchi di codice e onebox – potrebbe essere in grado di rilevare elementi mathjax/katex e trasformarli? (Nota: probabilmente sarebbe una buona idea avere un hook o qualcosa di simile qui in modo che la logica di trasformazione possa essere aggiunta al plugin discourse-math invece del codice principale di discourse).- gli altri punti non sembrano adatti come questi due.
Altri pensieri sugli approcci e su come ottenere la matematica grezza.
A seconda di come funzionano katex / mathjax+svg[1], ogni istanza di matematica dovrebbe avere un elemento HTML radice, penso (possibilmente più di uno perché ci sono alcuni elementi nascosti per l’accessibilità e altro). Quindi, se conosciamo i posti in cui esiste la matematica, potremmo essere in grado di analizzare il post grezzo per istanze di contenuto delimitate da $ (ma gli interpreti sono complicati – forse ce n’è già uno nel codebase?)
In alternativa, mathjax ha almeno una funzione di clic destro \u003e visualizza-tex (che dovrebbe essere la stringa letterale tra coppie di $); non sono sicuro di come agganciarmi a questo, ma se c’è un modo per farlo per mathjax v2, v3 e katex, allora dovrebbe essere possibile usarlo per sostituire la matematica formattata selezionata con $...$ (nota: questo funziona per la matematica inline, è necessario coprire anche il caso per l’altro tipo, che utilizza delimitatori $$...$$ o [/.../].)
Problemi attuali:
- Non so come implementare un hook o se c’è qualcosa di meglio da usare / un modo migliore per farlo nel codebase di discourse.
- Diverse incognite su mathjax/katex che devono essere investigate.
- Elementi HTML – come rilevarli in modo affidabile?
- Come ottenere il codice TeX grezzo?
Se qualcuno ha altre idee su dove/cosa modificare, altri possibili metodi di implementazione o altro, allora prego di postarle.
Penso che mathjax+svg non sia supportato, quindi forse non è un problema ↩︎