import { describe, it, expect } from 'vitest';
import { ommlToLatex } from '../src/serializer/mathSerializer';
const M = 'xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math"';
const omath = (inner: string) => `${inner}`;
/**
* 回归(auto-fix.md 坑表):OMML → LaTeX 转换的 JS 兜底路径(ommlToLatex)。
*
* - 分数等基本结构要转成正确的 LaTeX 命令。
* - 梯度/反向传播页用的 ∂(U+2202)/∇(U+2207):早先因为不在 Greek 归一化范围 →
* 泄漏成 lone surrogate,KaTeX 报错把源码渲染成红字。postProcessLatex 补了
* ∂→\partial、∇→\nabla 的兜底。
*/
describe('mathSerializer · ommlToLatex', () => {
it('分数 m:f → \\frac{a}{b}', () => {
const latex = ommlToLatex(
omath(
'ab',
),
);
expect(latex).toBe('\\frac{a}{b}');
});
it('∂ (U+2202) → \\partial(不泄漏原字符)', () => {
const latex = ommlToLatex(omath('\u2202'));
expect(latex).toContain('\\partial');
expect(latex).not.toContain('\u2202');
});
it('∇ (U+2207) → \\nabla(不泄漏原字符)', () => {
const latex = ommlToLatex(omath('\u2207'));
expect(latex).toContain('\\nabla');
expect(latex).not.toContain('\u2207');
});
});