LuaTeX/TeX-core:我的显示数学在哪里?(执行顺序、显示数学插入等)

LuaTeX/TeX-core:我的显示数学在哪里?(执行顺序、显示数学插入等)

这是一个 LuaTeX/TeX-core 内部节点表示问题,而不是与 PDF 输出有关的问题。

在尝试可视化段落内容时,“显示数学”内容缺失。我尝试了 pre_linebreak 和 post_linebreak 过滤器。为什么会这样?执行顺序是什么?TeX/LuaTeX 如何跟踪显示数学的插入点,它将其临时存储在哪里?以及如何/何时将其重新插入到最终节点列表中?“内联数学”不会发生同样的行为(其内容在换行前和换行后阶段都可见)。

在下面的例子中,第 2 段有一些常规文本“Par2”,一些“内联数学”($x=d^3$)和一些“显示数学”(在 align* 环境中)。

输出: 输出 pdf 的截图

代码:

% >> lualatex missingmlist.tex
\documentclass{article}
\usepackage{unicode-math}

\directlua{
    nodetree = require"nodetree"
    function filterprint(h)
        nodetree.print(h)
        return h
    end
    luatexbase.add_to_callback("pre_linebreak_filter",filterprint,"filterprint")
}

\begin{document}

Par1

Par2 $x=d^3$\begin{align*}
x^2+y^2 &= z^2\\
a^2+b^2+1 &= c^3
\end{align*}

Par3

\end{document}

控制台(查看第二段的内容,缺少显示数学节点):

├─LOCAL_PAR 
├─HLIST subtype: indent, width: 15pt
├─GLYPH subtype: 256, char: P, width: 6.81pt, height: 6.83pt
├─KERN kern: -0.28pt
├─GLYPH subtype: 256, char: a, width: 5pt, height: 4.48pt, depth: 0.11pt
│   properties: {['injections'] = {['leftkern'] = -18350.08}}
├─GLYPH subtype: 256, char: r, width: 3.92pt, height: 4.42pt
├─GLYPH subtype: 256, char: 1, width: 5pt, height: 6.66pt
├─PENALTY subtype: linepenalty, penalty: 10000
└─GLUE subtype: parfillskip, stretch: +1fil

├─LOCAL_PAR 
├─HLIST subtype: indent, width: 15pt
├─GLYPH subtype: 256, char: P, width: 6.81pt, height: 6.83pt
├─KERN kern: -0.28pt
├─GLYPH subtype: 256, char: a, width: 5pt, height: 4.48pt, depth: 0.11pt
│   properties: {['injections'] = {['leftkern'] = -18350.08}}
├─GLYPH subtype: 256, char: r, width: 3.92pt, height: 4.42pt
├─GLYPH subtype: 256, char: 2, width: 5pt, height: 6.66pt
├─GLUE subtype: spaceskip, width: 3.33pt, stretch: 1.66pt, shrink: 1.11pt
├─MATH 
├─GLYPH subtype: 256, char: 

答案1

数学显示被转换为水平框的垂直列表,并直接添加到主垂直列表中,因此换行回调看不到。例如,您可以使用vpack_filter查看添加到主垂直列表中的数学节点(以及对齐中的制表符跳过)

   │   │   ├─GLUE subtype: tabskip
    │   │   ├─HLIST subtype: cell, width: 22.83pt, depth: 3.6pt, height: 8.4pt
    │   │   │ ╚═head:
    │   │   │   ├─HLIST subtype: box, width: 22.46pt, depth: 0.11pt, height: 8.28pt
    │   │   │   │ ╚═head:
    │   │   │   │   ├─MATH 
    │   │   │   │   ├─HLIST width: 22.46pt, depth: 0.11pt, height: 8.28pt
    │   │   │   │   │ ╚═head:
    │   │   │   │   │   ├─HLIST 
    │   │   │   │   │   ├─GLUE subtype: thickmuskip, width: 2.78pt, stretch: 2.78pt
    │   │   │   │   │   ├─GLYPH char: =, width: 7.78pt, height: 3.67pt
    │   │   │   │   │   ├─GLUE subtype: thickmuskip, width: 2.78pt, stretch: 2.78pt
    │   │   │   │   │   ├─GLYPH char: 

相关内容