Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(auto-render): strict dollar delimiter #3926

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

taufik-nurrohman
Copy link

@taufik-nurrohman taufik-nurrohman commented Feb 11, 2024

What is the previous behavior before this PR?

The dollar delimiter, especially the non-display version, is disabled by default because it often causes errors in determining the boundary when there are at least two numbers followed by the $ symbol present in one paragraph.

What is the new behavior after this PR?

This change makes it possible to make the delimiter stricter in determining the math boundary, by checking what characters come before the opening delimiter and what characters come after the closing delimiter.

Tests

Tests are available as follows:

<ul>
  <li>$E=mc^2$</li>
  <li>$E=mc^2$asdf</li>
  <li>asdf$E=mc^2$</li>
  <li>asdf$E=mc^2$asdf</li>
  <li>$E=mc^2$ asdf</li>
  <li>asdf $E=mc^2$</li>
  <li>asdf $E=mc^2$ asdf</li>
  <li>($E=mc^2$)asdf</li>
  <li>asdf($E=mc^2$)</li>
  <li>asdf($E=mc^2$)asdf</li>
  <li>asdf asdf 20$ asdf 30$ asdf asdf asdf</li>
  <li>asdf asdf $20 asdf $30 asdf asdf asdf</li>
  <li>asdf asdf $20 asdf 30$ asdf asdf asdf</li>
  <li>asdf asdf 20 $ asdf 30 $ asdf asdf asdf</li>
  <li>asdf asdf $ 20 asdf $ 30 asdf asdf asdf</li>
  <li>asdf asdf $ 20 asdf 30 $ asdf asdf asdf</li>
</ul>

<ul>
  <li>$$E=mc^2$$</li>
  <li>$$E=mc^2$$asdf</li>
  <li>asdf$$E=mc^2$$</li>
  <li>asdf$$E=mc^2$$asdf</li>
  <li>$$E=mc^2$$ asdf</li>
  <li>asdf $$E=mc^2$$</li>
  <li>asdf $$E=mc^2$$ asdf</li>
  <li>($$E=mc^2$$)asdf</li>
  <li>asdf($$E=mc^2$$)</li>
  <li>asdf($$E=mc^2$$)asdf</li>
  <li>asdf asdf 20$$ asdf 30$$ asdf asdf asdf</li>
  <li>asdf asdf $$20 asdf $$30 asdf asdf asdf</li>
  <li>asdf asdf $$20 asdf 30$$ asdf asdf asdf</li>
  <li>asdf asdf 20 $$ asdf 30 $$ asdf asdf asdf</li>
  <li>asdf asdf $$ 20 asdf $$ 30 asdf asdf asdf</li>
  <li>asdf asdf $$ 20 asdf 30 $$ asdf asdf asdf</li>
</ul>

<ul>
  <li>asdf +10$ asdf -10$ asdf</li>
  <li>asdf +10 $ asdf -10 $ asdf</li>
  <li>asdf $+10 asdf $-10 asdf</li>
  <li>asdf $ +10 asdf $ -10 asdf</li>
</ul>

<ul>
  <li>asdf +10.5$ asdf -10.5$ asdf</li>
  <li>asdf +10.5 $ asdf -10.5 $ asdf</li>
  <li>asdf $+10.5 asdf $-10.5 asdf</li>
  <li>asdf $ +10.5 asdf $ -10.5 asdf</li>
</ul>

<ul>
  <li>asdf +10,5$ asdf -10,5$ asdf</li>
  <li>asdf +10,5 $ asdf -10,5 $ asdf</li>
  <li>asdf $+10,5 asdf $-10,5 asdf</li>
  <li>asdf $ +10,5 asdf $ -10,5 asdf</li>
</ul>

<ul>
  <li>asdf +10,000,000.5$ asdf -10,000,000.5$ asdf</li>
  <li>asdf +10,000,000.5 $ asdf -10,000,000.5 $ asdf</li>
  <li>asdf $+10,000,000.5 asdf $-10,000,000.5 asdf</li>
  <li>asdf $ +10,000,000.5 asdf $ -10,000,000.5 asdf</li>
</ul>

<ul>
  <li>asdf +10.000.000,5$ asdf -10.000.000,5$ asdf</li>
  <li>asdf +10.000.000,5 $ asdf -10.000.000,5 $ asdf</li>
  <li>asdf $+10.000.000,5 asdf $-10.000.000,5 asdf</li>
  <li>asdf $ +10.000.000,5 asdf $ -10.000.000,5 asdf</li>
</ul>

<ul>
  <li>asdf1234$E=mc^2$</li>
  <li>asdf1234$E=mc^2$1234asdf</li>
  <li>$E=mc^2$1234asdf</li>
  <li>asdf1234 $E=mc^2$</li>
  <li>asdf1234 $E=mc^2$ 1234asdf</li>
  <li>$E=mc^2$ 1234asdf</li>
</ul>

Fixes #1202

The dollar delimiter, especially the non-display version, is disabled by default
because it often causes errors in determining the boundary when there are at
least two numbers followed by the `$` symbol present in one paragraph.

This change makes it possible to make the delimiter stricter in determining
the math boundary, by checking what characters come before the opening delimiter
and what characters come after the closing delimiter.

Tests are available as follows:

~~~ html
<ul>
  <li>$E=mc^2$</li>
  <li>$E=mc^2$asdf</li>
  <li>asdf$E=mc^2$</li>
  <li>asdf$E=mc^2$asdf</li>
  <li>$E=mc^2$ asdf</li>
  <li>asdf $E=mc^2$</li>
  <li>asdf $E=mc^2$ asdf</li>
  <li>($E=mc^2$)asdf</li>
  <li>asdf($E=mc^2$)</li>
  <li>asdf($E=mc^2$)asdf</li>
  <li>asdf asdf 20$ asdf 30$ asdf asdf asdf</li>
  <li>asdf asdf $20 asdf $30 asdf asdf asdf</li>
  <li>asdf asdf $20 asdf 30$ asdf asdf asdf</li>
  <li>asdf asdf 20 $ asdf 30 $ asdf asdf asdf</li>
  <li>asdf asdf $ 20 asdf $ 30 asdf asdf asdf</li>
  <li>asdf asdf $ 20 asdf 30 $ asdf asdf asdf</li>
</ul>

<ul>
  <li>$$E=mc^2$$</li>
  <li>$$E=mc^2$$asdf</li>
  <li>asdf$$E=mc^2$$</li>
  <li>asdf$$E=mc^2$$asdf</li>
  <li>$$E=mc^2$$ asdf</li>
  <li>asdf $$E=mc^2$$</li>
  <li>asdf $$E=mc^2$$ asdf</li>
  <li>($$E=mc^2$$)asdf</li>
  <li>asdf($$E=mc^2$$)</li>
  <li>asdf($$E=mc^2$$)asdf</li>
  <li>asdf asdf 20$$ asdf 30$$ asdf asdf asdf</li>
  <li>asdf asdf $$20 asdf $$30 asdf asdf asdf</li>
  <li>asdf asdf $$20 asdf 30$$ asdf asdf asdf</li>
  <li>asdf asdf 20 $$ asdf 30 $$ asdf asdf asdf</li>
  <li>asdf asdf $$ 20 asdf $$ 30 asdf asdf asdf</li>
  <li>asdf asdf $$ 20 asdf 30 $$ asdf asdf asdf</li>
</ul>

<ul>
  <li>asdf +10$ asdf -10$ asdf</li>
  <li>asdf +10 $ asdf -10 $ asdf</li>
  <li>asdf $+10 asdf $-10 asdf</li>
  <li>asdf $ +10 asdf $ -10 asdf</li>
</ul>

<ul>
  <li>asdf +10.5$ asdf -10.5$ asdf</li>
  <li>asdf +10.5 $ asdf -10.5 $ asdf</li>
  <li>asdf $+10.5 asdf $-10.5 asdf</li>
  <li>asdf $ +10.5 asdf $ -10.5 asdf</li>
</ul>

<ul>
  <li>asdf +10,5$ asdf -10,5$ asdf</li>
  <li>asdf +10,5 $ asdf -10,5 $ asdf</li>
  <li>asdf $+10,5 asdf $-10,5 asdf</li>
  <li>asdf $ +10,5 asdf $ -10,5 asdf</li>
</ul>

<ul>
  <li>asdf +10,000,000.5$ asdf -10,000,000.5$ asdf</li>
  <li>asdf +10,000,000.5 $ asdf -10,000,000.5 $ asdf</li>
  <li>asdf $+10,000,000.5 asdf $-10,000,000.5 asdf</li>
  <li>asdf $ +10,000,000.5 asdf $ -10,000,000.5 asdf</li>
</ul>

<ul>
  <li>asdf +10.000.000,5$ asdf -10.000.000,5$ asdf</li>
  <li>asdf +10.000.000,5 $ asdf -10.000.000,5 $ asdf</li>
  <li>asdf $+10.000.000,5 asdf $-10.000.000,5 asdf</li>
  <li>asdf $ +10.000.000,5 asdf $ -10.000.000,5 asdf</li>
</ul>

<ul>
  <li>asdf1234$E=mc^2$</li>
  <li>asdf1234$E=mc^2$1234asdf</li>
  <li>$E=mc^2$1234asdf</li>
  <li>asdf1234 $E=mc^2$</li>
  <li>asdf1234 $E=mc^2$ 1234asdf</li>
  <li>$E=mc^2$ 1234asdf</li>
</ul>
~~~
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Is it possible to config $ as delimiters only when it is not followed immediately by a word of digits?
1 participant