将 l3str 字符串作为值传递给键

将 l3str 字符串作为值传递给键

我正在使用 l3str 中的字符串作为值传递给键。传递存储的相同文本没有使用字符串是可行的。但是,Package Listings: language java undefined.传递字符串本身时,我遇到了问题。

\documentclass{article}
\usepackage{listings}

\ExplSyntaxOn
\NewDocumentCommand{\myLanguage}{m}{
\group_begin:
  \str_new:N \l__aljumaily_language_str
  \str_set:Nx \l__aljumaily_language_str{java}
  %\l__aljumaily_language_str % prints java
  % \lstinline[language=java]$#1$ % works!
  \lstinline[language=\l__aljumaily_language_str] $#1$ % Doesn't work
  \group_end:
}
\ExplSyntaxOff

\begin{document}
  \myLanguage{public static void main(String [] args) \{ ... \}}
\end{document}

答案1

不要使用具有不同 catcode 的字符串变量。并在命令之外声明新变量。

\documentclass{article}
\usepackage{listings}

\ExplSyntaxOn
\tl_new:N \l__aljumaily_language_tl
 
\NewDocumentCommand{\myLanguage}{m}{
\group_begin:
  \tl_set:Nn \l__aljumaily_language_tl{java}
  \lstinline[language=\l__aljumaily_language_tl] $#1$ % Doesn't work
  \group_end:
}
\ExplSyntaxOff

\begin{document}
  \myLanguage{public static void main(String [] args) \{ ... \}}
\end{document}

相关内容