我正在使用 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}