fix(markup): parse \(...\) inline math next to letters and digits (#39773)

Fixes https://github.com/go-gitea/gitea/issues/39770

`\(x^2\)is` and `\(x^2\)123` rendered as plain text because `\(...\)`
went through the same check on surrounding characters as `$...$`. That
check is there to skip things like `US$1`, which can't happen with
explicit `\(` `\)` delimiters, so it's now skipped for them, the same as
for "$`...`$". `$x$a` still isn't parsed.
This commit is contained in:
Yunus Ozen
2026-10-14 12:11:13 -07:00
committed by GitHub
parent c6069f8d9f
commit 41ccfce3e9
2 changed files with 5 additions and 0 deletions
@@ -42,6 +42,10 @@ func TestMathRender(t *testing.T) {
`\(a\) \(b\)`,
`<p><code class="language-math">a</code> <code class="language-math">b</code></p>` + nl,
},
{
`\(x^2\)is \(x^2\)123 a\(b\)c`,
`<p><code class="language-math">x^2</code>is <code class="language-math">x^2</code>123 a<code class="language-math">b</code>c</p>` + nl,
},
{
`$a$.`,
`<p><code class="language-math">a</code>.</p>` + nl,
@@ -91,6 +91,7 @@ func (parser *inlineParser) Parse(parent ast.Node, block text.Reader, pc parser.
} else {
startMarkLen = 2
stopMark = parser.endBytesParentheses
checkSurrounding = false // explicit delimiters like "$`...`$", adjacent text is unambiguous
}
if line[0] == '$' && !parser.enableInlineDollar && (len(line) == 1 || line[1] != '`') {