You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python拆分LaTeX文件中的数学环境与文本环境

LaTeX文本与数学块拆分解决方案

核心思路:放弃拆分后再拼接的逻辑,直接用re.findall同时匹配完整数学块和普通文本片段,一步实现分隔符与对应内容的绑定。

匹配规则说明

正则按优先级匹配三类完整数学块,再匹配剩余普通文本:

  • \$\$[\s\S]*?\$\$:匹配$$包裹的多行数学块,[\s\S]覆盖所有字符(含换行),非贪婪匹配避免跨块
  • \\\[[\s\S]*?\\\]:匹配\[、\]包裹的多行数学块
  • \$.*?\$:匹配$包裹的行内数学块
  • [^$\\]+:匹配不属于数学块分隔符的普通文本片段

完整代码示例

import re

latex_text = """A latex example
$$ \int = 0$$
with different
\[\sum \] 
\[\sum \]
math delimiters $\\cos(x)$.
"""

# 匹配所有完整数学块+普通文本
pattern = r'(\$\$[\s\S]*?\$\$|\\\[[\s\S]*?\\\]|\$.*?\$|[^$\\]+)'
raw_result = re.findall(pattern, latex_text)
# 去除首尾空白、过滤空片段
final_result = [item.strip() for item in raw_result if item.strip()]
print(final_result)

运行输出

['A latex example', '$$ \\int = 0$$', 'with different', '\\[\\sum \\]', '\\[\\sum \\]', 'math delimiters', '$\\cos(x)$', '.']

和你期望的目标格式完全一致,后续如果需要适配equation等其他数学环境,只要在正则的交替匹配部分新增对应规则即可。

内容的提问来源于stack exchange,提问作者Netchaiev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 10:27:04