如何给我的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*
环境。在这两种环境中,--
都被视为注释的开始。luacode
和luacode*
环境之间的主要区别在于,前者允许使用 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