directlua中的代码注释

directlua中的代码注释

如何给我的directlua代码添加注释?

{\catcode`\%=12
\directlua{
function boxed (s)
 ??? Add a comment ???
 if not(boxedflag) then
  i=string.find(s,'^!!!')
  if(i==1) then
    boxedflag=true
    print('A' ..string.gsub(s,'^!!! (%a*) "(.*)"', '\string\\mybox{%1}{%2}['))
    return string.gsub(s,'^!!! (%a*) "(.*)"', '\string\\mybox{%1}{%2}{')
  else
    return s
  end
else
  i=string.find(s,'^XXX')
  if i==1 then
   print('C' .. s)
   return string.gsub(s,'^XXX','')
  else
    print('B' .. s)
    boxedflag=false
    return '}' .. s
  end
 end
end}
}

我想在框出的函数代码中添加注释。我试过了-- comment\% comment但都报错。

您知道如何在 directlua 函数中添加注释吗?

答案1

两个建议:

  • 正如@egreg已经在评论中指出的那样,您可以将Lua代码存储在外部文件中(通常但不一定带有扩展名.lua),然后通过(或类似)指令将代码加载到Lua(La)TeX中\directlua{dofile(...)}。允许使用所有本机Lua语法,包括--启动注释。如果您需要\在字符串中输出(反斜杠)字符,则需要输入\\,因为您可能知道,\它本身就是Lua的转义字符。

  • 对于较短的 Lua 代码,创建外部文件的开销太大.lua,你可以加载lua代码软件包并使用luacode环境或luacode*环境。在这两种环境中,--都被视为注释的开始。luacodeluacode*环境之间的主要区别在于,前者允许使用 TeX 宏,而后者不允许。

luacode软件包还提供了实用的辅助宏\luastring\luastringN\luastringO用于传递可能包含 TeX 特殊字符和/或 TeX 宏的字符串。这三个宏的不同之处在于: 的参数\luastring在传递给 Lua 之前会进行扩展(就 TeX 意义而言), 的参数\luastringN根本不会进行扩展, 的参数\luastringO只会进行一次扩展(并且只会扩展第一个标记)。

答案2

解析完毕。它是否能满足你的要求,由你决定:

\def\cmnt#1{} % ignores the argument
{\catcode`\%=12
\directlua{
function boxed (s)
\cmnt{Works for me.}
... the rest of your code

相关内容