为什么只有当我使用此行时,下面的 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+
(参见上面的示例代码)。