我想在列表环境中使用我定义的宏(包括数学符号)。但是,以下代码打印的是“\foo{x}”而不是“bar(x)”。有什么方法可以实现后者的输出吗?
\documentclass{article}
\usepackage{listings}
\begin{document}
\newcommand{\foo}[1]{$bar(#1)$}
\begin{lstlisting}
\foo{x}
\end{lstlisting}
\end{document}
答案1
可以使用escapechar
列表环境的选项,例如escapechar=\%
指定将%
字符后的任何 LaTeX 代码解释为 LaTeX 而不是逐字打印。
\documentclass{article}
\usepackage{listings}
\begin{document}
\newcommand{\foo}[1]{$bar(#1)$}
\begin{lstlisting}[escapechar=\%]
%\foo{x}%
\end{lstlisting}
\end{document}
这将打印一个真正的条形图(x)
\documentclass{article}
\usepackage{mathabx}%
\usepackage{listings}
\begin{document}
\newcommand{\foo}[1]{$\widebar{(#1)}$}
\begin{lstlisting}[escapechar=\%]
%\foo{x}%
Some other stuff
\end{lstlisting}
\end{document}