在列表中使用宏

在列表中使用宏

我想在列表环境中使用我定义的宏(包括数学符号)。但是,以下代码打印的是“\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}

相关内容