使用 listings 包中的“合并”文档类

使用 listings 包中的“合并”文档类

我正在尝试使用combine文档类(手动的) 将多个预先存在的文档合并为一个具有一致格式的文件。它工作得很好,只是与列表包存在某种冲突。当我尝试\usepackage{listings}在主文档文件中编译时,我得到了

ERROR: LaTeX Error: Command \c@lstlisting already defined.

--- TeX said ---
           Or name \end... illegal, see p.192 of the manual.

即使没有使用该包也会发生这种情况。

我的猜测是 listing 包会自动在每个包中定义一些东西\begin{document},而这会导致麻烦?(我真的不确定这是否可能,但看起来就是这样……)

有人对解决方法有什么想法吗?(目前,我只会将verbatim环境用于我的代码片段,但我希望列表提供语法突出显示等。)

编辑:这是包含错误的文档的最小版本:

\documentclass{combine}
\usepackage{listings}
\begin{document}

\begin{papers}
  \coltoctitle{Title}
  \coltocauthor{Author}
  \label{lbl}
  \import{test}
\end{papers}
\end{document}

另一个文件,test.tex位于同一目录中,其中可以包含任何内容,只要它是有效的文本。在我的最小示例中,我这样做了

\documentclass{article}
\begin{document}
 Hello world
\end{document}

如果\usepackage{listings}注释掉,编译会成功。如果取消注释,则会给出如图所示的错误。

答案1

\c@lstlistinglstlisting计数器。您可以\makeatletter\let\c@lstlisting\@undefined\makeatother在出现错误的行之前尝试简短地正式声明未定义的宏。此外,通常\relax使用 a 代替\@undefined

相关内容