宏、新命令还是代码的新环境?

宏、新命令还是代码的新环境?

我正在使用该listings包来排版代码。我已使用定义了自定义样式\lstdefinestyle{verbo},然后在lstlisting环境中排版代码,如以下 MWE 所示。

\documentclass{article}

\usepackage[T1]{fontenc}  % to retain double quotes in lstlistings
\usepackage{listings}  % to typeset code
\usepackage{upquote}  % to retain single qutoes in lstlistings

\lstdefinestyle{verbo}{  % code typesetting optins
    basicstyle=\small\ttfamily,
    breaklines=true,
    breakatwhitespace=true,
    language=Python,
    tabsize=1,
    resetmargins=true,
    xleftmargin=0pt,
    frame=single,
    showstringspaces=false
}

\begin{document}

\begin{lstlisting}[style=verbo]
>>> print "Hello World!"
\end{lstlisting}

\end{document}

产生 你好世界

我想通过键入以下内容而不是环境来使 LaTeX 代码更具可读性,lstlisting但实现相同的结果。

\begin{code}
>>> print "Hello World!"
\end{code}

我尝试了各种方法 - 定义宏、新命令、新环境 - 但都失败了。有什么方法可以做到这一点吗?

失败的尝试

以下是我失败的尝试,所有尝试都导致类似以下的错误

! Emergency stop.
<*> \input mwe-code.tex

!  ==> Fatal error occurred, no output PDF file produced!

\def\code{\begin{lstlisting}[style=verbo]}
\def\ecode{\end{lstlisting}}
  ...    
\code
>>> print "Hello World!"
\ecode

新命令

\newcommand{\code}[1]{\begin{lstlisting}[style=verbo]#1\end{lstlisting}}
  ...
\code{
>>> print "Hello World!"
}

新环境

\newenvironment{code}
{\begin{lstlisting}[style=verbo]}
{\end{lstlisting}}
  ...
\begin{code}
>>> print "Hello World!"
\end{code}

答案1

只是\lstnewenvironment为了这个:

\documentclass{article}

\usepackage[T1]{fontenc}  % to retain double quotes in lstlistings
\usepackage{listings}  % to typeset code
\usepackage{upquote}  % to retain single qutoes in lstlistings

\lstdefinestyle{verbo}{  % code typesetting optins
    basicstyle=\small\ttfamily,
    breaklines=true,
    breakatwhitespace=true,
    language=Python,
    tabsize=1,
    resetmargins=true,
    xleftmargin=0pt,
    frame=single,
    showstringspaces=false
}
\lstnewenvironment{code}[1][]
 {\lstset{style=verbo,#1}}
 {}

\begin{document}

\begin{code}
>>> print "Hello World!"
\end{code}

\begin{code}[columns=fullflexible]
>>> print "Hello World!"
\end{code}

\end{document}

我添加第二个只是为了展示如何向code环境添加选项。

在此处输入图片描述

相关内容