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 Me gusta

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

2 Me gusta

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 Me gusta

Heché un vistazo a las citas de matemáticas (estoy considerando escribir una PR o contribuir a una).

Documento aquí algunas ideas y hallazgos iniciales.

Así que mi impresión inicial es que uno de estos puntos podría ser parcheable:

  • toMarkdown compara elementos con varias etiquetas HTML; creo que mathjax usa elementos personalizados que son detectables (quizás no la representación SVG), ¿quizás katex también?
  • selectedText realiza algunas comparaciones para elementos como bloques de código y onebox. ¿Podría detectar elementos de mathjax/katex y transformarlos? (Nota: probablemente sea una buena idea tener un hook o algo aquí para que la lógica de transformación se pueda agregar al plugin discourse-math en lugar del código base principal de discourse).
  • los otros puntos no parecen tan adecuados como estos dos.

Otras ideas sobre enfoques y cómo obtener las matemáticas sin procesar.

Dependiendo de cómo funcionen katex / mathjax + svg[1], cada instancia de matemáticas debería tener un elemento HTML raíz, creo (posiblemente múltiples, ya que hay algunos elementos ocultos para accesibilidad y otras cosas). Entonces, si conocemos los lugares donde existen las matemáticas, podríamos analizar la publicación sin procesar en busca de instancias de contenido delimitado por $ (pero los intérpretes son complicados, ¿quizás ya hay uno en el código base?).

Alternativamente, mathjax al menos tiene una función de clic derecho > ver tex, etc. (que debería ser la cadena literal entre pares de $); No estoy seguro de cómo conectarme a eso, pero si hay una manera de hacerlo para mathjax v2, v3 y katex, entonces debería ser posible usar eso para reemplazar las matemáticas formateadas seleccionadas con $...$ (nota: eso funciona para matemáticas en línea, también hay que cubrir el caso para el otro tipo, que usa delimitadores $$...$$ o [/.../].)

Problemas actuales:

  • No sé cómo implementar un hook o si hay algo mejor que usar / una mejor manera de hacerlo en el código base de discourse.
  • Varios desconocidos sobre mathjax/katex que necesitan ser investigados.
    • Elementos HTML: ¿cómo detectarlos de manera confiable?
    • ¿Cómo obtener el código TeX sin procesar?

Si alguien tiene alguna otra idea sobre dónde/qué parchear, otros métodos de implementación posibles o lo que sea, por favor publíquelos.


  1. Creo que mathjax + svg no es compatible, así que eso quizás no sea un problema ↩︎

5 Me gusta