在 LuaLaTeX 中创建一个新的 `catcodetable`

在 LuaLaTeX 中创建一个新的 `catcodetable`

最新版本的 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}

相关内容