我怎样才能将多个可选参数传递给\lstnewenvironment
?
我只需要固定数量的选项,所有选项都会出现。
我想将frame
类型和font size
作为参数传递给我的自定义lstlisting
。
更新
我当前的定义。我目前正在传递font size
。我还需要frame
类型(例如single
,leftline
等等)
\lstnewenvironment{pyout}[1][\tiny]{
\lstset{ %
basicstyle=\ttfamily#1\setstretch{1},
showstringspaces=false,
upquote=true,
aboveskip=0pt,
belowskip=2pt,
breaklines=true,
frame=leftline,
}
}{}
答案1
您可以添加一个新fontsize
密钥:
\documentclass{article}
\usepackage{listings,setspace,textcomp}
\makeatletter
\newif\ifATOfontsize
\lst@Key{fontsize}{\tiny}{\def\ATOfontsize{#1}\global\ATOfontsizetrue}
\makeatother
\lstnewenvironment{pyout}[1][]{%
\global\ATOfontsizefalse
\lstset{%
basicstyle=\ttfamily\tiny\setstretch{1},
showstringspaces=false,
upquote=true,
aboveskip=0pt,
belowskip=2pt,
breaklines=true,
frame=leftline,
#1,
}
\ifATOfontsize
\lstset{basicstyle=\ttfamily\ATOfontsize\setstretch{1}}
\fi
}{}
\begin{document}
\begin{pyout}[fontsize=\normalsize]
abc
\end{pyout}
\begin{pyout}[frame=single]
abc
\end{pyout}
\begin{pyout}[fontsize=\normalsize,frame=single]
abc
\end{pyout}
\end{document}
如果指定了键,\lstset
则会执行第二个命令,用于设置字体大小。
在下图中我只减少了文本宽度。