如何在 luacode* 环境中使用 LaTeX 命令?

如何在 luacode* 环境中使用 LaTeX 命令?

如何在带星号的版本luacode环境中访问 LaTeX 命令?

我基本上对使用\ifdefined下面的代码感兴趣。

例如,这个有效:

\documentclass{article}
\usepackage{luacode}
%------------------------
\begin{luacode}
function doItOnlyIf(x,y)   
  \ifdefined\HCode    %will not compile in luacode*
     tex.print(x)
  \else
     tex.print(y)
  \fi
end
\end{luacode}
%-------------------    
\begin{document}    
\directlua{doItOnlyIf("this","that")}
\end{document}

但我需要使用luacode*而不是luacode(因为我有一些东西只在luacode*现在才起作用)。

以上内容仅适用于无星号的版本luacode

使用 和 进行编译lualatex foo.tex,对于tex4ht,使用 进行编译make4ht --lua foo.tex

答案1

正如你所发现的,TeX 宏在环境中扩展luacode,但在luacode*环境中却不扩展。

如果需要使用luacode*环境,则必须检查是否\HCode已定义外部环境luacode*,例如通过 调用 Lua 函数时\directlua

\documentclass{article}
\usepackage{luacode}
\begin{luacode*}
function doItOnlyIf(x,y,flag)   
  if flag==1 then   
     tex.print(x)
  else
     tex.print(y)
  end
end
\end{luacode*}

\newcommand\Hcheck{\ifdefined\HCode1\else0\fi}

\begin{document}    
\directlua{doItOnlyIf( "this", "that", \Hcheck )}
\end{document}

相关内容