""" md_tex.py --------- LaTeX 分隔符正規化工具。 公開 API: _strip_outer_tex_delims(s) → (core_latex, kind) _ensure_inline_dollars(s) → "$core$" _ensure_block_dollars(s) → "$$\ncore\n$$" """ from __future__ import annotations import re # --------------------------------------------------------------------------- # 正規表達式 # --------------------------------------------------------------------------- _re_outer_block = re.compile(r'^\s*\${2}(.*)\${2}\s*$', re.S) _re_outer_inline = re.compile(r'^\s*\$(.*)\$\s*$', re.S) # --------------------------------------------------------------------------- # 公開函式 # --------------------------------------------------------------------------- def _strip_outer_tex_delims(s: str) -> tuple[str, str]: """ 移除最外層的 TeX 分隔符。 回傳 (core_latex, kind),kind 為 "block" / "inline" / "none"。 """ if s is None: return "", "none" t = str(s).strip() m = _re_outer_block.match(t) if m: return m.group(1).strip(), "block" m = _re_outer_inline.match(t) if m: return m.group(1).strip(), "inline" return t, "none" def _ensure_inline_dollars(s: str) -> str: """確保字串以 $...$ 包裹(行內數學)。""" core, _ = _strip_outer_tex_delims(s) return f"${core}$" def _ensure_block_dollars(s: str) -> str: """確保字串以 $$....$$ 包裹(區塊數學)。""" core, _ = _strip_outer_tex_delims(s) return f"$$\n{core}\n$$"