是否可以在列表环境中插入 directlua 替换?
例如 -
\begin{luacode}
a=math.random()
b=math.random()
\end{luacode}
\begin{listings}
if(\directlua{tex.print(a)} > \directlua{tex.print(b)) {
result = tex.print(a);
}
else {
result = tex.print(b);
}
\end{listings}
答案1
我猜你指的是包lstlisting
提供的环境listings
,用于排版源代码列表。它提供了escapechar
选项,该选项定义了可用于标记执行 LaTeX 宏的代码部分的字符:
\documentclass{article}
\usepackage{luacode}
\usepackage{listings}
\begin{document}
\begin{luacode}
a=math.random()
b=math.random()
\end{luacode}
\begin{lstlisting}[escapechar=`]
if(`\directlua{tex.print(a)}` > `\directlua{tex.print(b)}`) {
result = tex.print(a);
}
else {
result = tex.print(b);
}
\end{lstlisting}
\end{document}
本例中使用了反引号 (`)。如你所见,如果你将它放在\directlua
命令周围,它将被扩展: