mylatexformat 与 luatex 结合使用的指南

mylatexformat 与 luatex 结合使用的指南

我非常喜欢使用 mylatexformat 构建的自定义 LaTeX 格式。到目前为止,pdftex 一直是我的默认引擎。我现在将使用 luatex 作为我的默认引擎,因此我想根据 luatex 的特殊性调整我的格式自定义工作流程。

我可以以自定义格式为 luatex 转储哪些类型的包/宏?

答案1

建立一个适用于所有软件包的系统有点困难,但对于任何给定的软件包,你通常可以使某些东西工作,我在这里预加载pdftexcmdsarticle分类。

我确实尝试过看看您是否可以\directlua在制作格式时重新定义以保存其参数,以便在\everyjob使用自定义格式的文档中自动运行,但即使在这样一个简单的包中也pdftexcmds很棘手,因为有些\directlua确实需要恢复,但有些只是加载文件时的临时测试,如果您稍后执行这些测试,它们就会中断。实际上,您只需要确保require("pdftexcmds")执行该操作即可。

我使用了更mylatexfmt简单的自定义测试,但它使用了相同的原理。

在正常运行中,测试文件会产生以下终端输出:

$ lualatex cc421
This is LuaHBTeX, Version 1.15.1 (TeX Live 2023/dev) 
 restricted system commands enabled.
(./cc421.tex
LaTeX2e <2022-11-01> patch level 1
 L3 programming layer <2022-12-17>
(/usr/local/texlive/2022/texmf-dist/tex/latex/base/article.cls
Document Class: article 2022/07/02 v1.4n Standard LaTeX document class
(/usr/local/texlive/2022/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2022/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty
(/usr/local/texlive/2022/texmf-dist/tex/generic/infwarerr/infwarerr.sty)
(/usr/local/texlive/2022/texmf-dist/tex/generic/iftex/iftex.sty)
(/usr/local/texlive/2022/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty))
(/usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-luatex.def)
(./cc421.aux) (/usr/local/texlive/2022/texmf-dist/tex/latex/base/ts1cmr.fd)
 -1 | 0 | 1 
(./cc421.aux))
 413 words of node memory still in use:
   3 hlist, 1 vlist, 1 rule, 2 glue, 3 kern, 1 glyph, 5 attribute, 48 glue_spec
, 5 attribute_list, 2 write nodes
   avail lists: 2:7,3:1,4:1,5:4,7:1,9:1

warning  (pdf backend): no pages of output.
Transcript written on cc421.log.

显示article加载和-1 | 0 | 1Lua strcmp实现的测试。

你可以使用以下方式转储格式

luahbtex -ini \&lualatex  cc421

并按如下方式使用它,显示大大减少的终端输出

$ luahbtex \&cc421 cc421
This is LuaHBTeX, Version 1.15.1 (TeX Live 2023/dev) 
 restricted system commands enabled.
(./cc421.tex
 -1 | 0 | 1 
(./cc421.aux))
 398 words of node memory still in use:
   3 hlist, 1 vlist, 1 rule, 2 glue, 3 kern, 1 glyph, 2 attribute, 48 glue_spec
, 2 attribute_list, 1 write nodes
   avail lists: 2:13,3:2,4:2,5:4,7:3,9:3

warning  (pdf backend): no pages of output.
Transcript written on cc421.log.

此处的测试文件是

\ifx\dumped\undefined
\documentclass{article}


\usepackage{pdftexcmds}

\begin{document}
\def\dumped{}
\dump
\else
\directlua{require("pdftexcmds")}
\fi


\makeatletter

\typeout{
\pdf@strcmp{aaa}{bbb} | \pdf@strcmp{aaa}{aaa} | \pdf@strcmp{bbb}{aaa}
}

\end{document}

为了使其真正可用,您可能希望对(至少)luaotfload 执行相同的操作,但希望它表明将主要包的至少 tex 部分预加载到格式中的基本目标并非不可能。


已更新以使用 lua血红蛋白tex 符合当前 latex 的要求

相关内容