lualatex:如何添加到字符串或表格

lualatex:如何添加到字符串或表格

我现在想在lualatex中写一个“小索引”。所有关键字内容都保证在之前出现,并且我不想使用外部文件。

我的开胃菜是:

\documentclass[12pt]{article}

\directlua{
dofile(kpse.find_file("l-lpeg.lua"))
dofile(kpse.find_file("util-sto.lua"))
dofile(kpse.find_file("util-prs.lua"))
}

\def\sort#1{%
  \directlua{\unexpanded{
    tex.sprint(
      table.concat(
        table.sorted(
          utilities.parsers.settings_to_array([[#1]]) ) , "; " ) )
}}}

\begin{document}

\sort{c, {b,x}, d, a}  %% works

% wanted:
% \addtosort{c}
% \addtosort{b,x}
% \addtosort{d}
% \addtosort{a}
% \printsorted

\end{document}

我现在正在考虑如何建立列表。我可以在 tex 中用类似下面的代码来做到这一点

\def\addkeyword#1{\g@addto@macro\mykeywords{{#1},}}$

然后大概会将其输入\mykeywordssort。但我想知道 lualatex 应该怎么做。我应该尝试建立一个 lualatex 字符串吗?或者我应该/可以尝试建立一个 lua 数组,这样我就不需要将字符串解析为数组了?

谢谢您的建议。

答案1

我不太清楚你想如何解释b,x这一点,只是把它当作一个字符串

在此处输入图片描述

每个条目被添加到一个表中,最后进行排序并将条目返回给 TeX。

\documentclass{article}

\def\addtosort#1{%
\directlua{
tbl=tbl or {}
table.insert(tbl,"\luaescapestring{#1}")
}}

\def\printsorted{%
\directlua{
  table.sort(tbl)
  for i,n in ipairs(tbl) do tex.write(n .. ', ') end
}}

\begin{document}

 \addtosort{c}
 \addtosort{b,x}
 \addtosort{d}
 \addtosort{a}
 \printsorted

\end{document}

相关内容