如何打印lualatex状态表?

如何打印lualatex状态表?

http://mirrors.ibiblio.org/CTAN/systems/doc/luatex/luatex.pdf 它有一个我想要打印的表格,因为我正在尝试找到dest_names_sizelulatex 使用的计数器的值,因为我收到与该计数器的小值相关的错误。

上面的 pdf 文件中有以下内容

状态中的几乎所有值都是在运行时通过元表获取的”

在此处输入图片描述

如何有人真的会打印上面显示的所有值吗?它在文档的第 194 页。我实际上只是想看看dest_names_sizelualatex 的值。当我增加它时,但没有效果,因为每次我编译大型文档时,texmf.cnf我仍然收到达到限制的错误。131072

\documentclass[12pt]{book}
\usepackage{luacode}

\begin{luacode*}
    function printStatusTable()
     -- what to write here?
  end
\end{luacode*}

\begin{document}  
\directlua{printStatusTable()}
\end{document}

我之所以询问是因为使用 lualatex 进行编译时出现错误

TeX capacity exce eded, sorry [number of destination names (dest_names_size)=131072].

我之前在这里询问过这个问题,但到目前为止还没有找到解决方案。

答案1

\documentclass{article}

\begin{document}

\directlua{
for i,k in pairs(status.list())
do
texio.write("\string\n" .. i .. " = " .. tostring(k))
end
texio.write("\string\n")
}
\end{document}

生成日志

pdf_os_objidx = 0
indirect_callbacks = 0
output_active = false
filename = ./cc072.tex
pool_size = 391652
callbacks = 9
max_nest_stack = 0
dyn_used = 312278
pdf_mem_size = 10000
luatex_hashtype = lua
luatex_version = 115
stack_size = 10000
nest_size = 1000
late_callbacks = 0
var_mem_max = 100000
luatex_engine = luahbtex
luatex_hashchars = 6
shell_escape = 2
str_ptr = 2119812
hash_extra = 600000
input_ptr = 1
pool_ptr = 391652
dvi_gone = 686588744
total_pages = 0
max_buf_stack = 121
linenumber = 11
var_used = 309
buf_size = 200000
luastate_bytes = 48646616
direct_callbacks = 10
pdf_dest_names_ptr = 0
pdf_mem_ptr = 1
inputid = 2119368
dest_names_size = 1000
ini_version = false
fix_mem_end = 343245
pdf_gone = 0
max_param_stack = 37
max_strings = 500000
cs_count = 21234
save_size = 200000
lc_ctype = en_US.UTF-8
font_ptr = 15
init_str_ptr = 2119367
lc_numeric = C.UTF-8
function_callbacks = 200
lc_collate = C.UTF-8
param_size = 20000
dvi_ptr = 686588744
luabytecode_bytes = 32
obj_tab_size = 1000
fix_mem_max = 383344
max_save_stack = 50
banner = This is LuaHBTeX, Version 1.15.0 (TeX Live 2022)
luabytecodes = 1
largest_used_mark = 0
init_pool_ptr = 0
safer_option = 0
pdf_os_cntr = 0
kpse_used = 1
fix_mem_min = 0
obj_ptr = 0
log_name = cc072.log
luatex_revision = 0
hash_size = 65536
saved_callbacks = 0
max_in_stack = 33
pdf_ptr = 0
node_mem_usage = 2 hlist, 1 rule, 1 dir, 3 kern, 1 glyph, 3 attribute, 48 glue_s
pec, 3 attribute_list, 1 write
development_id = 7503

答案2

关于

dest_names_size我其实只是想看看lualatex的值。我增加了它texmf.cnf,但没有效果,因为每次编译大型文档时,我仍然会收到达到限制 131072 的错误。

这实际上与如何打印值的问题无关。

LuaTeX 动态管理内存,并且dest_names_size仅描述当前为多少个目标保留了内存。如果填满这个内存,LuaTeX 将自动增大此缓冲区,因此dest_names_size。因此,从配置文件中读取初始值是没有意义的,毕竟它不应该有任何影响。这种情况会一直持续到达到内部sup_dest_names_size值 131072。为了防止无限内存使用,这会阻止 LuaTeX 增加dest_names_size超过此值。

sup_dest_names_size如果不重新编译 LuaTeX,则无法进行更改。

相关内容