LuaTeX:使用一些换行过滤器来访问上一个 tex.linebreak 使用的换行参数

LuaTeX:使用一些换行过滤器来访问上一个 tex.linebreak 使用的换行参数

如何访问上次调用使用的换行参数表tex.linebreak?根据 LuaTeX 手册(文章底部的屏幕截图),可以通过将第二个表参数传递给函数来覆盖换行参数表值tex.linebreak这对于覆盖换行参数表值非常方便,尽管没有办法知道我正在覆盖哪些值!!!(除非我使用 tex 库构建表格tex.<keyname>,尽管我不知道这是否真的会被使用)当调用 pre_linebreak_filter 时,该信息应该在某处可用,并且当调用 linebreak 过滤器或调用 post_linebreak_filter 时,合并的值应该可用。我想要获取并打印传递给的默认[1]tex.linebreak linebreak 参数表和实际使用的(最终)合并表。理想情况下,我不想向输入文本或 vbox 添加任何宏。

[1]每次调用时默认参数表的值可能不同tex.linebreak,并且据我所知,它们可能会受到通常的宏(如)的影响\centering

可以使用 tex.linebreak 的第二个参数覆盖的值是否是唯一真正影响段落形状的值?换句话说,假设我存储这些参数,并将它们重新用于另一个段落,tex 状态的子集是否足以使新段落具有与旧段落相同的换行属性?还是我必须保存和恢复更多 tex 属性?(请注意,我只关心换行行为)

以下是最小代码(由于 ,两个段落的表值会有所不同\centering)、输出屏幕截图和tex.linebreak来自 LuaTeX 手册的 定义的屏幕截图:

代码:(您可能需要做的就是取消注释,并在第一个注释下面填写一行)

>>> lualatex linebreakparameters.tex
\documentclass{article}

\directlua{
    grabbedparameters = {}
    function grabparameters (h)
        % NOTE: Uncomment the following line, and fill in the right hand side
        % thats all that is needed!
        %grabbedparameters = <add path to linebreak parameters>
        for i,v in pairs(grabbedparameters) do
            texio.write_nl(i .. '    ' .. v)
        end
        return h
    end
}


\begin{document}

\newcommand{\sampletext}{This an equation $x=a+b^2$  without any intrinsic meaning unless one sees some. \textbf{And this is some bold text to add some variety to this piece of text.} And am typing here,  difference diffierence $b=c^3$. This is random text without any meaning, though it is being presented here to aid this communication.}

% NOTE: If necessary replace pre_ with post_
\directlua{luatexbase.add_to_callback('pre_linebreak_filter', grabparameters, 'grab and print tex.linebreak parameters')}

\setbox0 = \vbox{{\hsize=3in\relax\sampletext\par\vspace*{1cm}\centering\sampletext\par}}

\box0

\end{document}

输出截图:

输出截图

LuaTeX 手册的截图:

显示方法 tex dot linebreak 定义的屏幕截图 第二张截图显示了 tex dot linebreak 定义的剩余部分

相关内容