Search code examples
latexspacingpygments

How to reduce the separation from other text using LaTeX minted?


I want to use the minted package to give me syntax highlighting but it has a spacing of more than a centimeter.

Setting:

\setlength{\parskip}{0pt}
\setlength{\parsep}{0pt}
\setlength{\headsep}{0pt}
\setlength{\topskip}{0pt}
\setlength{\topmargin}{0pt}
\setlength{\topsep}{0pt}
\setlength{\partopsep}{0pt}

does not help at all. Is there any way to reduce the spacing from the rest of the text?


Solution

  • minted internally uses the Verbatim environment from the fancyvrb package. In the documentation of the implementation, the following formula for the spaces is given:

    <topskip> = \topsep + \partopsep + \parskip 
    <botskip> = \topsep + \partopsep 
    

    And

    Except when in label or after nobreak, \parskip is added with \addvspace, so that net space is:

    MAX{\topsep (+\partopsep) + \parskip , \lastskip } 
    

    (The usual \@item works the same way.)

    Hence, setting \partopsep to some other value does the trick; I’ve tried it, and you need a negative value to remove the margin:

    \setlength\partopsep{-\topsep}
    

    This removes most of the space between the text body and the code. To get a distance of 0.5cm, add its distance to that:

    \setlength\partopsep{-\topsep}
    \addtolength\partopsep{-\parskip}
    \addtolength\partopsep{0.5cm}
    

    An implementation can be found in https://tex.stackexchange.com/a/19423