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