pdoc icon indicating copy to clipboard operation
pdoc copied to clipboard

Markdown emphasis captures before math does

Open andyabateagility opened this issue 7 months ago • 2 comments

Problem Description

Pdoc appears to keep looking for markdown emphasis tokens * within both inline $...$ and display $$...$$ math. This make starred environments break Pdoc's math rendering, and leads to unrendered math if matched stars do not have surrounding whitespace.

Steps to reproduce the behavior:

For example, this fails to render, and instead produces bare text, missing the stars *, and with emphasized text between the stars. Removing the stars allows this to render correctly as displaymath. VSCode's markdown preview renders both correctly.

$$
\begin{align*}
f(x) &= x^2\\
     &= x \cdot x
\end{align*}
$$

Underscores don't seem to have the same issue, and math renders correctly if there is whitespace around the stars (but that creates other errors in the math renderer, so it can't fix the above issue).

Possibly related, but newlines within displaymath break math rendering, and math newlines \\ are ignored.

System Information

pdoc: 14.1.0 Python: 3.10.12 Platform: Linux-6.2.0-36-generic-x86_64-with-glibc2.35

andyabateagility avatar Nov 20 '23 22:11 andyabateagility

Thanks for the report! The issue here is that we do Markdown processing first, and only then our math renderer (MathJax) kicks in. Eventually we should solve this with a custom markdown2 extra that exempts $$/$ areas from processing. For now, as a workaround, you can escape the * to with \* get the desired behavior:


r"""
$$
\begin{align\*}
f(x) &= x^2\\
     &= x \cdot x
\end{align\*}
$$
"""

That workaround may break unfortunately when we get it fixed properly, but let's see. :)

mhils avatar Dec 01 '23 09:12 mhils

Thanks for the tip on escaping! Newlines with four backslashes appear to work as well

andyabateagility avatar Dec 01 '23 17:12 andyabateagility