diff --git a/java-svc/src/main/java/com/wordparse/config/WordParseConfig.java b/java-svc/src/main/java/com/wordparse/config/WordParseConfig.java index 8eb1998..92dca1b 100644 --- a/java-svc/src/main/java/com/wordparse/config/WordParseConfig.java +++ b/java-svc/src/main/java/com/wordparse/config/WordParseConfig.java @@ -15,6 +15,8 @@ public class WordParseConfig { private String pythonCommand = "python3"; /** 私有区符号图的基址(默认我们自己的 RustFS,不依赖 jby CDN) */ private String symbolBaseUrl = "https://fs.code-lab.cn/temp/wordparse-symbols/"; + /** 是否把正文里的标准 Unicode 数学符号转成 LaTeX(默认开) */ + private Boolean convertUnicodeSymbols = Boolean.TRUE; public String getTmpPath() { return tmpPath; } public Double getImageScalingFactor() { return imageScalingFactor; } @@ -23,6 +25,8 @@ public class WordParseConfig { public String getPythonCommand() { return pythonCommand; } public String getSymbolBaseUrl() { return symbolBaseUrl; } public void setSymbolBaseUrl(String symbolBaseUrl) { this.symbolBaseUrl = symbolBaseUrl; } + public Boolean getConvertUnicodeSymbols() { return convertUnicodeSymbols; } + public void setConvertUnicodeSymbols(Boolean v) { this.convertUnicodeSymbols = v; } public void setTmpPath(String v) { this.tmpPath = v; } public void setImageScalingFactor(Double v) { this.imageScalingFactor = v; } diff --git a/java-svc/src/main/java/com/wordparse/core/UnicodeSymbolLatex.java b/java-svc/src/main/java/com/wordparse/core/UnicodeSymbolLatex.java new file mode 100644 index 0000000..7d74bbc --- /dev/null +++ b/java-svc/src/main/java/com/wordparse/core/UnicodeSymbolLatex.java @@ -0,0 +1,161 @@ +package com.wordparse.core; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * 正文里的标准 Unicode 数学符号 → LaTeX(供前端 MathJax 渲染)。 + * + * 为什么需要:公式(OMML/MathType/EQ)已转成 LaTeX,但正文里的裸 Unicode 符号 + * (⊆ ∈ ∪ ≤ × …)docx4j 只会原样输出,靠系统字体渲染,字形/字号与公式不一致。 + * 这里把正文符号也包成 \(...\),与公式走同一条渲染路径。 + * + * 映射表取自 jby 的 omml_mathml2latex/data/symbols.py,保证与公式内转换一致。 + * 跳过: