把带公式的材料交出去,最常见的返修意见不是”排得不好看”,而是”这个公式改不了”。看起来是同一次复制粘贴的差别,实际是两种文档格式对”公式”的定义不同:一边把公式当源码,一边把公式当结构化对象,中间还要经过第三套标准格式。直接粘贴之所以经常退化成一行纯文本、变成一张不能点的图、或者变成一个拖不出正文流的文本框,根子都在这里。

LaTeX 经 MathML 转为 Office 公式对象时的六类丢失点

这篇不讲某个工具能不能一键搞定,也不给任何保真率数字——工具只作为”确实存在这样一条转换路径”的例子提一下。要讲的是三件可操作的事:转换链路的结构、丢失点的分类与替代写法、批量场景下的验收与交付约定。

一、为什么交付要求通常是”不许用图片”

把公式截成图片贴进文档,是最快也最容易过关的做法,但它把五个问题留给了后面。

  • 不可编辑。 审阅意见要改一个下标、返修要换一个符号,图片只能整张重做,而原图源文件往往已经不在同一台机器上。
  • 无法接受修订。 文档进入正式校对流程时,修订痕迹要求改动发生在正文对象上;图片对象只能整块替换,审阅人看不到”改了哪里”。
  • 字体与行距不跟随。 图片里的字形是死的,正文换字号或行距后,公式与周围文字明显不齐,缩放又会让笔画发虚。
  • 体积失控。 几十上百张位图公式的文档体积会远大于同等公式对象;高分辨率截图更明显。
  • 无障碍朗读失败。 读屏软件面对图片公式只能读到替代文本或什么都读不到;文档格式的公式对象带结构信息,朗读才有意义。

这五条里最硬的是第二条和第五条:修订与朗读都要求结构存在。也正因如此,”公式必须是可编辑对象”应当写在交付规范里,而不是等返修时才口头提。

二、链路为什么绕:三套格式各有各的表达能力

三种角色的关系要摆正。

LaTeX 数学语法是排版语言里的记法,靠宏包提供环境(多行对齐、矩阵、分段函数、自定义算子),源码里的语义很多来自宏展开和上下文——同一个记号在不同宏包下含义可以不同。

Presentation MathML 是 W3C 定的数学结构标记,把表达式拆成分数、上下标、矩阵、定界符等元素,描述的是”怎么呈现”的结构。

OMML(Office 公式标记语言) 是 Office 开放 XML 文档格式里数学部分的词汇表,是 Word 原生存储公式的形式。它的渲染依赖文档设置的数学字体:数学排版需要字体额外提供可扩展的定界符字形与上下标位置数据,缺合适字体时结构还在、形状会塌。

转换路径因此存在两类:一类先由 LaTeX 生成 MathML,再由 MathML 转成 OMML——目标软件一侧支持接收 MathML 并转成自有格式,具体入口与覆盖范围以实际版本为准;另一类由独立的文档转换工具直接做 LaTeX 到 OMML。链路绕,是因为三套词汇不是一一对应的:LaTeX 侧有 MathML 不表达的东西(编号、对齐意图、宏语义),MathML 侧有 OMML 没有精确对应的构造,OMML 侧又有 Word 自己的渲染假设。

Word 与 WPS 里的公式编辑器还各自有线性输入模式(Word 的线性格式基于 UnicodeMath 一类记法,部分版本另提供以 LaTeX 语法录入的输入方式;WPS 的公式编辑能力与入口随版本变化)。这里有个常被误解的点:**编辑器”能接受 LaTeX 语法录入”不等于”LaTeX 源码能无损导入”**。前者是交互输入时的语法解释,覆盖的记号子集通常远小于你在文档里实际用到的;后者要求把整份源码连同宏定义、环境、编号一起翻译过去。具体支持到什么程度,以所用版本为准,判断方法是拿自己文档里真实出现的构造各测一条。

至于从网页复制:渲染出来的公式在页面里可能是图片或带结构的标记,剪贴板携带什么由页面决定,所以”直接复制粘贴”的结果在多个目标软件之间不稳定——这也是为什么单条公式更可靠的做法是取源码,在目标处先插入公式对象再把源码作为线性输入交给它,而不是把文本贴进正文。

三、六类丢失点:表现与替代写法

丢失点 典型表现 替代写法
多行对齐与编号 align/alignat 的 & 对齐被压成一列或拆成多个独立公式;\tag{(3)}、自动编号整段消失,或编号跑进文本框 每个对齐块拆成显式的数组/多行构造并手工核对列位置;编号改为正文流里的制表位加编号段落,或统一用文档题注域,交叉引用在目标侧重建
矩阵与大型定界符 pmatrix/bmatrix 边框丢失退化成逗号串;\left\{ \right. 的伸缩括号变成固定尺寸小括号,多层嵌套时高度不匹配 使用目标格式的矩阵与定界符对象(而不是靠字号撑),确认文档数学字体支持可扩展字形;分段函数用带分隔符的数组构造
\text{} 与自定义宏 \newcommand 未展开,留下 \xxx 字面串;\text{其中} 里的中文变成数学斜体或被丢弃;\operatorname、\coloneqq 之类符号变方块 转换前统一展开宏(把宏定义表交给对方或在源头一次性展开);文字片段用正体文本构造;生僻符号换成两侧都能表达的等价写法并进符号对照表
上下限位置 \sum_i 在独立公式中本该上下限居中,转换后变成行内侧限;\lim_{x\to0}、积分限位置错乱 明确区分行内与独立(显示)两种形态并在目标侧用”更改为显示/内联”逐条校正;关键极限与求和单独复核对齐效果
字体与符号字形 希腊字母斜体与正体不分(\varepsilon 与 \epsilon 混同)、\mathbb{R}、\mathfrak、粗体希腊字母变成普通字形或方块;实数集符号缺失 正体与斜体用显式构造而不是依赖默认;确认目标机器有对应字形,缺字形时改用可显示的等价符号并在符号表里注明;不要在正文里塞入私有区字符
公式内部空格 LaTeX 数学模式里空白本无意义、显式间距命令被忽略,转换后要么挤在一起要么出现多余空档;\,、\quad 效果丢失 需要分隔时用目标格式自己的间隔构造,而不是保留源码空格;对”看起来挤”的位置做逐条记录,形成间距校对的固定项

还有一类不在这六项里但破坏力更大:公式掉出正文流。转换后公式被放进文本框、图形框架或独立段落容器,结果是行距被撑坏、跨页时公式与前后文分离、编号无法参与正文计数。判据很简单——在目标软件里把光标移进去,能否像普通字符那样前后穿行。

四、批量转换的验收方法

批量转换不能靠”翻几页看着没事”。可行的做法是把它当成一次交付验收,留下可复核的记录。

  1. 抽样人工对照。 从全部公式里抽 20 条做逐条对照,抽样要按构造分层:含多行对齐的、含矩阵的、含分段函数的、含自定义宏的、含中英混排说明的,每类至少覆盖两三条,而不是随机抽到全是简单分式。
  2. 可编辑性检查。 点进公式,能进入公式编辑态并修改单个符号才算过;表现为图片或整体选中不可改,就是不合格。
  3. 结构落位检查。 确认没有被拆成文本框或图形对象,光标能穿行,独立公式与正文在同一段落流里。
  4. 编号检查。 编号仍在正文流中、可参与交叉引用;如果编号方式约定为题注域,域要能刷新而不是死文本。
  5. 源格式检查。 直接看导出件里的文档结构:公式应对应数学元素而不是图片引用;这一步能在几分钟内把”多少条其实是图”数出来。
  6. 换机器打开。 在没有同款数学字体的环境里打开一次,检查定界符、粗斜体、生僻符号是否变形——字体缺失在这一步才会暴露。
  7. 回贴纯文本。 把公式复制粘贴到纯文本编辑器,看剩下的是可读的线性式还是乱码,作为朗读与检索可用性的粗略代理指标。
  8. 同一输入跑两遍。 同一份源用同一套步骤转换两次,比对两次输出:不一致说明链路里有不确定性(例如宏展开时机或工具版本),这种不一致比一次没转好更麻烦。

第 8 条最容易被跳过,但它拦住的是一类系统性问题:如果两次结果不同,那么所有人工抽查的结论都不能推广到全量。

五、把公式写进文档交付规范

公式相关争议基本都是约定缺失,不是技术问题。规范里值得逐条写清的有这些:

  • 可编辑性要求。 明确”公式必须以可编辑对象交付,不接受图片形式”,并给出判定方式(第 3 节那四条检查)。
  • 源件与导出件同时提交。 保留原始 TeX 源与导出的文档件两份,并注明源与导出件的对应版本;日后返修从源改起,而不是在导出件上手工修补。
  • 编号方式。 用章节编号还是连续编号、编号在公式右侧还是行尾、如何交叉引用,三件事各写一句。约定没写,返修时就会出现”编号一半在正文流、一半在文本框”。
  • 宏与符号清单。 文档里出现的自定义命令与非常规符号列成一张对照表交给接收方,表里注明每条的展开形式与替代写法;生僻符号给出可显示的等价方案。
  • 字体依赖。 说明文档使用的数学字体与正文字体,接收方需要装什么、缺字时会是什么表现。
  • 校对轮次与判定标准。 每轮校对针对什么(结构、符号、编号、排版),什么算通过(第 4 节的抽样与八条检查)。
  • 返修入口。 出错时改源文件还是改导出件,谁保留最终版本,改完是否需要重跑第 8 条的两遍一致性。

这张表填完之后,公式交付就从”看起来对不对”变成”约定有没有兑现”。

六、洹拓视角:账要算在源头

洹拓科技在文档类交付里吃过这类亏,规律很稳定:公式问题的修复成本随传递次数上升,源头一条宏没展开,接收方就是二十条公式逐条手工重录。因此三条做法值得固化下来。

第一,把可编辑性当成交付定义的一部分,而不是加分项。一条”不接受图片公式”的约定,能省掉后面所有关于修订与朗读的争论。第二,源头展开与清单先于转换。宏定义表、符号对照表这两样东西,比任何转换技巧都更能决定结果,因为它们把”依赖上下文才能理解的记号”变成”两侧都认得的构造”。第三,把两遍一致性和换机器打开这两项当门禁。它们不评价转换得好不好,只回答”这个结果可不可复现、在别人机器上还在不在”——而交付要验证的正是这两件事。

最后提醒一句边界:任何转换路径都会遇到三套词汇对不上的构造,指望”全自动零返修”不现实。把会丢的六类点写进规范、把八条验收留在流程里,返修就会从意外变成计划内的最后一道工序。