另一个环境中的 Lstinline 宏

另一个环境中的 Lstinline 宏

为什么只有当我使用此行时,下面的 MWE 才会编译错误\lstnewenvironment?如何在环境中定义逐字宏?我听说使用纯 TeX 就可以?

\documentclass{article}
\makeatletter
\IfFileExists{randompackageyoudonthave.sty}{
}{
\usepackage{listings}
\lstnewenvironment{Rcode}{\renewcommand\lstlistingname{Rcode}}% deleting this line makes this work
\newcommand{\code}[1]{\lstinline{##1}}
}
\makeatother
\begin{document}
\code{yeah! some code}
\end{document}

答案1

你错过了环境的最后部分;语法(不带参数)是

\lstnewenvironment{<name>}{<begin-env>}{<end-env>}

您的示例代码:

\documentclass{article}

\IfFileExists{randompackageyoudonthave.sty}{
}{
\usepackage{listings}
\lstnewenvironment{Rcode}{\renewcommand\lstlistingname{Rcode}}{}
\newcommand{\code}{\lstinline}
}

\begin{document}
\code{yeah! some code}

\code+yeah! some code+
\begin{Rcode}
yeah! some code
\end{Rcode}
\end{document}

此外,埃格尔提到his comment, 它应该是

\newcommand{\code}{\lstinline}

或者

\newcommand{\code}{\lstinline[<options>]}

如果[<options>]应该使用某些。这允许使用替代分隔符,如\code+text+(参见上面的示例代码)。

相关内容