mity / md4c

C Markdown parser. Fast. SAX-like interface. Compliant to CommonMark specification.
MIT License
785 stars 146 forks source link

Support $$ on separate opening and closing lines #270

Open postmath opened 1 week ago

postmath commented 1 week ago

It appears that many markdown parsers supporting LaTeX allow the opening and closing $ or $$ to be on different lines, but it doesn't appear to work in md4c.

To reproduce:

this works: $$ a + b $$ but this doesn't:
$$
a + b
$$

Expected rendering: here's an example from stackedit.io, source on the left, rendered on the right.

image

Actual result in md4c: the LaTeX on the first line results in the callbacks I would expect (having set MD_FLAG_LATEXMATHSPANS), but the other LaTeX doesn't. In particular, it looks like it sees the pair of dollars on line 2 as an opening and closing pair, and similarly for the pair on line 4.

postmath commented 1 week ago

If anything is unclear, feel free to ask for more details. I tried to dig into md4c.c to prepare a patch, but I didn't quite see how to approach it. I expect it would need to change somewhere in the chain md_process_normal_block_contents -> md_analyze_inlines -> md_analyze_marks -> md_analyze_dollar.