I'm using the lncs class and I'm trying to have long code highlighted with minted to span across multiple pages with a caption. According to the minted documentation, a new environment is needed. I'm using the caption package. It works perfectly with a document class such as article, but not with the lncs class.

This is what I have so far:




\title{Contribution Title\thanks{Supported by the Machine Learning teaching team.}}
\author{The author\orcidID{123456}}
\authorrunning{F. Author et al.}
\institute{An Institute\\
\maketitle              % typeset the header of the contribution
    The abstract
    \keywords{First keyword  \and Second keyword \and Another keyword.}
\section{First Section}
    # This program does amazing stuff!
    import numpy as np
    print('Hello, world!')
    \caption{This is the caption}

When I compile, I get the following error messages:

Unsupported document class (or package) detected, (caption)
usage of the caption package is not recommended. See the caption package documentation for explanation.

Package caption Warning: \caption will not be redefined since it's already (caption) redefined by a document class or package which is (caption) unknown to the caption package. See the caption package documentation for explanation.

I tried with the option


but then I get the warning message:

Package caption Warning: Forced redefinition of \caption since the (caption) unsupported(!) package option `compatibility=false' (caption) was given. See the caption package documentation for explanation.

Is there any solution to this?

  • It appears the caption package is incompatible (forbidden) with llncs. All you really need is \expandafter\def\csname @captype\endcsname{listings} or \makeatletter \def\@captype{listings} \makeatother. This assumes that the float class listings exists (not a minted user). – John Kormylo Feb 23 '20 at 16:59
  • I relatively new to LaTeX. Could you please explain me how to use the concepts above and the difference between them? – matteo-gambarutti Feb 24 '20 at 10:37
  • The @ symbol is used to protect system commands etc. from being used by the unwashed masses. \makeatletter removes that constraint, and \makeatother restores it. \csname ...\endcsname can also use @ symbols, although that is not its primary function. The \expandafter allows \csname to expand before \def. – John Kormylo Feb 24 '20 at 13:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.