自 2007 年以来,Microsoft Office 一直使用基于 TeXbook 附录 G 中描述的 Knuth 算法的公式布局算法。但最终输出与描述存在明显差异。据称 MSOffice 使用的算法基于开放式数学表. 详细内容可参阅本文开放式照明作者:Ulrik Vieth(可从荷兰 TUG 获取http://www.ntg.nl/maps/38/03.pdf)。
对于 96dpi 的屏幕分辨率和 11pt 的字体大小,算法表示将上标基线相对于原始基线移动 5 个像素,将下标基线移动 3 个像素(分别向上和向下)。(有关此情况下算法的更精确描述,请参阅https://i.stack.imgur.com/ckGL5.png。
下图包含各种渲染的放大视图,左侧是 Word 的视图,中间是算法重建,右侧是 TeX 的渲染:
这三条水平线并非来自图形,而是为了突出它们之间的差异和相似之处而添加的。
从图中可以看出,$a^y_y$
按照上述算法得到的公式结果与 MS Word 得到的结果不同。还可以看出,该算法与 TeX 的实现相当吻合(考虑到生成这些图表固有的不准确性,“相当吻合”在这里可能意味着“精确”)。
这里还有其他算法吗?Knuth 的算法已经被取代了吗?或者只是在放置上标时y
,MSWord 选择放置底部的y
上标基线而不是的基线y
?
答案1
问题最后是:
或者仅仅是当放置上标 y 时,MSWord 选择将 y 的底部放在上标基线而不是 y 的基线?
我认为这个分析很正确。
这开放式数学表在这种情况下,记录的算法与 TeX 的算法相同。还有一些其他数学构造确实存在差异,但两种算法在脚本放置的情况下是相同的。这也可以在所附图像中看到,其中Alt和TeX确实看起来相同(在四舍五入范围内)。
因此,我们现在看到的是 MS Word 没有遵循开放式数学表文档(也是由微软编写的),因此我得出结论,这是 MS Word 中的一个错误,因此应该向微软报告(由真正关心的人报告,即不是我)。
答案2
我无法回答这个问题,但也许这排除了其中一种可能性:
这是 Word 2007 的渲染图,因为y
和x
位于同一基线,所以的底部y
不是决定性因素。可比较的 TeX 渲染图显示,指数的排版比 Word 2007 的情况要低得多,如问题中的图片所示。