Math should be quotable

We have a discourse forum for a scientific software, and use the math plugin. Unfortunately, math is not quotable.

If I select some text, a Quote button appears:

Clicking it results in the following:

[quote]
definition of the closeness centrality:

ci=1N−1N∑j=11dij c_i = \frac{1}{N-1} \sum_{j=1}^N\frac{1}{d_{ij}}
[/quote]

Notice that in the quotation, the math appeared as a weird textual version (unreadable) followed by the actual LaTeX source, but lacking the $ delimiters.

I assume that there is no fix for this currently. It would be nice if this could be improved in the future.

8 „Gefällt mir“

This is still occurring and also happens with inline math, as reported by a member on our instance:

2 „Gefällt mir“

Note, I agree completely we should clean this up, but it feels extremely complicated.

I am putting a pr-welcome on this in case someone with advances skills wants to give it a shot.

6 „Gefällt mir“

Ich habe mir das Zitieren von Mathematik angesehen (ich erwäge, einen PR zu schreiben oder zu einem beizutragen).

Hier dokumentiere ich einige erste Gedanken und Erkenntnisse.

Mein erster Eindruck ist, dass einer dieser Punkte patchbar sein könnte:

  • toMarkdown gleicht Elemente mit verschiedenen HTML-Tags ab; MathJax verwendet benutzerdefinierte Elemente, die ich für erkennbar halte (möglicherweise nicht SVG-Rendering), vielleicht auch KaTeX?
  • selectedText führt einige Abgleiche für Elemente wie Codeblöcke und Onebox durch – könnte man MathJax/KaTeX-Elemente erkennen und transformieren? (Hinweis: Wahrscheinlich ist es eine gute Idee, hier einen Hook oder etwas Ähnliches zu haben, damit die Logik für die Transformation im discourse-math-Plugin statt in der Haupt-Codebasis von Discourse hinzugefügt werden kann.)
  • Die anderen Punkte scheinen nicht so geeignet wie diese beiden.

Einige weitere Gedanken zu Ansätzen und wie man die rohe Mathematik erhält.

Abhängig davon, wie KaTeX / MathJax + SVG[1] funktionieren, sollte jede Instanz von Mathematik ein root HTML-Element haben, denke ich (möglicherweise mehrere, da es einige versteckte Elemente für Barrierefreiheit und Ähnliches gibt). Wenn wir also die Stellen kennen, an denen Mathematik existiert, könnten wir den rohen Post nach Instanzen von Inhalten durchsuchen, die mit $ abgegrenzt sind (aber Interpreter sind knifflig – vielleicht gibt es bereits einen in der Codebasis?).

Alternativ hat MathJax zumindest eine Rechtsklick-Funktion \u003e Tex anzeigen (was die buchstäbliche Zeichenkette zwischen $-Paaren sein sollte); Ich bin mir nicht sicher, wie man sich damit verbinden kann, aber wenn es einen Weg gibt, dies für MathJax v2, v3 und KaTeX zu tun, dann sollte es möglich sein, dies zu verwenden, um ausgewählte formatierte Mathematik durch $...$ zu ersetzen (Hinweis: das funktioniert für Inline-Mathematik, wir müssen auch den Fall für die andere Art abdecken – die $$...$$ oder [/.../] Delimiter verwendet.)

Aktuelle Probleme:

  • Ich weiß nicht, wie man einen Hook implementiert oder ob es etwas Besseres gibt / einen besseren Weg, dies in der Discourse-Codebasis zu tun.
  • Mehrere Unbekannte über MathJax/KaTeX, die untersucht werden müssen.
    • HTML-Elemente – wie erkennt man sie zuverlässig?
    • Wie erhält man rohen TeX-Code?

Wenn jemand andere Ideen hat, wo/was man patchen könnte, andere mögliche Implementierungsmethoden oder was auch immer, dann bitte posten.


  1. Ich glaube, MathJax + SVG wird möglicherweise nicht unterstützt, also ist das möglicherweise kein Problem ↩︎

5 „Gefällt mir“