最新版本的 LaTeX 在内核中整合了 luatexbase 包。该包预定义了一些命名的 catcode 表,现在已被内核吸收。这些命名的表可以用作语句的第一个参数。是否有既定的方法来创建新表?下面显示的tex.print()
创建名为 的新表的方法可以改进吗?normaldollar
\documentclass{article}
\usepackage{luacode}
\makeatletter
\def\test@{test}
\makeatother
\ExplSyntaxOn
\cs_gset:Npn \_test:{OK}
\ExplSyntaxOff
\begin{document}
\ttfamily
\newcatcodetable\normaldollar
\begingroup
\catcode`\$=11
\savecatcodetable\normaldollar
\endgroup
\begin{luacode*}
local normaldollar = luatexbase.catcodetables.normaldollar
local expl = luatexbase.catcodetables.expl
local latex = luatexbase.catcodetables['latex-package']
local verb = luatexbase.catcodetables.string
tex.print(expl, [[ \_test: ]] .. [[\par]])
tex.print(verb, [[ _test:^~~$\\\\# ]] )
tex.print(latex, [[\test@ ]] .. [[\par]])
-- prints the dollar signs
tex.print(normaldollar, [[$a = 1$$$]] .. [[\par]])
-- prints the normaldollar allocation number
tex.print(0, normaldollar)
\end{luacode*}
\end{document}