减少单个列表中多个铸造输入之间的空间

减少单个列表中多个铸造输入之间的空间

我已经使用命令创建了一个包含多个代码块的列表\inputminted,并想减少块之间的空间。

这里给出了一个最小的工作示例:

\documentclass[11pt,oneside]{scrreprt}
\usepackage{caption}
\usepackage{xcolor}
\usepackage{makeidx}

\usepackage[chapter]{minted}
\usemintedstyle{friendly}
\setminted{%
  bgcolor=lightgray,
  linenos
}

\makeindex

\begin{document}
\begin{listing}
    \inputminted{cpp}{helloworld.cpp}
    \inputminted{cpp}{helloworld.cpp}
    \caption{Example}
    \label{code}
\end{listing}
\end{document}

helloworld.cpp

#include <iostream>

int main() {
    std::cout << "Hello world!" << std::endl;
    return 0;
}

生成的输出是:

单个列表中多个铸造输入的示例。

我可以重置环境中的行号minted。这样我就可以实现.h.cpp文件。但是我不知道如何使用来做到这一点inputminted。块之间的小距离是我想要的解决方案。

答案1

在两个连续之间\inputminted,添加几个胶水项目

.....\glue 6.0 plus 2.0 minus 2.0
.....\glue(\baselineskip) 13.6
.....\glue 6.0 plus 2.0 minus 2.0
.....\glue(\baselineskip) 7.6
.....\vbox(6.0+0.0)x0.0

事实上,如果我尝试

\inputminted{cpp}{\jobname.cpp}

\vspace{-\medskipamount}
\vspace{-2\baselineskip}
\vspace{0.4pt}% just to show a very small white space

\inputminted{cpp}{\jobname.cpp}

我明白了

在此处输入图片描述

我建议使用一个宏\betweenminted来决定垂直空间的大小。

\begin{filecontents*}{\jobname.cpp}
#include <iostream>

int main() {
    std::cout << "Hello world!" << std::endl;
    return 0;
}
\end{filecontents*}

\documentclass[11pt,oneside]{scrreprt}
\usepackage{caption}
\usepackage{xcolor}

\usepackage[chapter]{minted}

\usemintedstyle{friendly}
\setminted{
  bgcolor=lightgray,
  linenos
}

\newcommand{\betweenminted}[1]{%
  \par\vspace{-\medskipamount}\vspace{-2\baselineskip}%
  \vspace{#1}%
}

\begin{document}

\begin{listing}

\inputminted{cpp}{\jobname.cpp}

\betweenminted{\medskipamount}

\inputminted{cpp}{\jobname.cpp}

    \caption{Example}
    \label{code}
\end{listing}

\end{document}

在此处输入图片描述

生产说明:我更改了输入文件的名称只是为了不破坏我的文件。

相关内容