在标题参数中使用 \lstnewenvironment 输入

在标题参数中使用 \lstnewenvironment 输入

我正在尝试创建一个新的\lstlisting环境,其中包含一个代表标题的输入。我尝试执行以下操作,但收到“怀疑您忘记了 }”错误。有什么建议吗?

\lstnewenvironment{textfile}[1]
{
\lstset{frame=shadowbox, caption=#1}
}
{
}

以下是我尝试使用它的方法:

\documentclass[11pt, letterpaper]{article}
\usepackage{listings} % Used for code blocks

%% Format the captions
\usepackage{caption} % Caption package
\DeclareCaptionFont{white}{ \color{white} }
\DeclareCaptionFormat{listing}{
  \colorbox[cmyk]{0.43, 0.35, 0.35,0.01 }{
    \parbox{\textwidth}{\hspace{15pt}#1#2#3}
  }
}
\captionsetup[lstlisting]{ font={tt}, labelformat=empty}

\begin{document}
\begin{textfile}[results.txt]
Album of the year: 24K Magic - Bruno Mars
Song of the year: Despacito - Justin Bieber
Best Rap Song: HUMBLE. - Kendrick Lamar
\end{textfile}
\end{document}

答案1

根据定义(但在“MWE”中缺失),textfile列表环境需要一个强制参数,但在文档中它被用一个可选[...]参数调用——这是一个语法错误。

纠正使用即可{}消除错误。

\documentclass[11pt, letterpaper]{article}
\usepackage{listings} % Used for code blocks

%% Format the captions
\usepackage{caption} % Caption package
\DeclareCaptionFont{white}{ \color{white} }
\DeclareCaptionFormat{listing}{
  \colorbox[cmyk]{0.43, 0.35, 0.35,0.01 }{
    \parbox{\textwidth}{\hspace{15pt}#1#2#3}
  }
}
\captionsetup[lstlisting]{ font={tt}, labelformat=empty}

\lstnewenvironment{textfile}[1]
{
\lstset{frame=shadowbox, caption=#1}
}
{
}

\begin{document}
\begin{textfile}{results.txt}
Album of the year: 24K Magic - Bruno Mars
Song of the year: Despacito - Justin Bieber
Best Rap Song: HUMBLE. - Kendrick Lamar
\end{textfile}
\end{document}

相关内容