upd
This commit is contained in:
57
internal/latex/latex2ascii.go
Normal file
57
internal/latex/latex2ascii.go
Normal file
@@ -0,0 +1,57 @@
|
||||
package latex
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func ConvertLaTeXToASCII(input string) string {
|
||||
s := input
|
||||
|
||||
replacements := []struct {
|
||||
pattern *regexp.Regexp
|
||||
replace string
|
||||
}{
|
||||
// Fractions: \frac{a}{b} -> (a)/(b)
|
||||
{regexp.MustCompile(`\\frac\{([^{}]+)\}\{([^{}]+)\}`), `($1)/($2)`},
|
||||
|
||||
// Square roots: \sqrt{x} -> sqrt(x)
|
||||
{regexp.MustCompile(`\\sqrt\{([^{}]+)\}`), `sqrt($1)`},
|
||||
|
||||
// Powers: x^{y} -> x^y
|
||||
{regexp.MustCompile(`\{?\^\{([^{}]+)\}\}?`), `^$1`},
|
||||
|
||||
// Subscripts: x_{i} -> x_i
|
||||
{regexp.MustCompile(`_\{([^{}]+)\}`), `_$1`},
|
||||
|
||||
// Greek letters (common subset)
|
||||
{regexp.MustCompile(`\\alpha`), "alpha"},
|
||||
{regexp.MustCompile(`\\beta`), "beta"},
|
||||
{regexp.MustCompile(`\\gamma`), "gamma"},
|
||||
{regexp.MustCompile(`\\delta`), "delta"},
|
||||
{regexp.MustCompile(`\\theta`), "theta"},
|
||||
{regexp.MustCompile(`\\pi`), "pi"},
|
||||
{regexp.MustCompile(`\\lambda`), "lambda"},
|
||||
|
||||
// Common symbols
|
||||
{regexp.MustCompile(`\\times`), "*"},
|
||||
{regexp.MustCompile(`\\cdot`), "*"},
|
||||
{regexp.MustCompile(`\\pm`), "+/-"},
|
||||
{regexp.MustCompile(`\\leq`), "<="},
|
||||
{regexp.MustCompile(`\\geq`), ">="},
|
||||
{regexp.MustCompile(`\\neq`), "!="},
|
||||
|
||||
// Remove LaTeX math wrappers
|
||||
{regexp.MustCompile(`\\left|\\right`), ""},
|
||||
{regexp.MustCompile(`\\[|\\]|\$`), ""},
|
||||
}
|
||||
|
||||
for _, r := range replacements {
|
||||
s = r.pattern.ReplaceAllString(s, r.replace)
|
||||
}
|
||||
|
||||
// Clean extra spaces
|
||||
s = strings.TrimSpace(strings.Join(strings.Fields(s), " "))
|
||||
|
||||
return s
|
||||
}
|
||||
Reference in New Issue
Block a user