是否有可能在列表环境中使用 directlua 替换?

是否有可能在列表环境中使用 directlua 替换?

是否可以在列表环境中插入 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命令周围,它将被扩展:

在此处输入图片描述

相关内容