我正在使用该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
环境添加选项。