如何访问上次调用使用的换行参数表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 手册的截图: