2

为了只显示几行源代码,lstlisting 有一个 linerange 键,它只打印那些范围。

\documentclass[slidestop]{beamer}
\usepackage{listings}
\begin{document}


\begin{frame}[fragile]
  \begin{lstlisting}[language=C,linerange={1-2,5-6}]
    #include<stdio.h>
    int void main(int argc, char **argv)
    {
      printf("hello world\n");
      return 0;
    }
  \end{lstlisting}
\end{frame}

\end{document}

上面的清单显示了以下代码行,行间没有任何空格。:

    #include<stdio.h>
    int void main(int argc, char **argv)
      return 0;
    }

我真正想要的是

    #include<stdio.h>
    int void main(int argc, char **argv)


      return 0;
    }

我希望不显示第 3-4 行,但我需要该范围的空行。因此,前两行和后两行显示的行之间应该有 2 个空行。

约束:

  • 源代码不应该改变,它实际上是在一个单独的文件中,不能改变

  • 我拥有的实际源代码非常大,因此对源的不同部分使用多个 lstlisting 很麻烦。

[更新]:简而言之: “源代码中在给定范围内排除的行应打印为空行(即使它们在源代码中为非空)”

4

1 回答 1

1

在序言中插入以下代码似乎可以解决问题。

\makeatletter
\let\oldMSkipToFirst=\lst@MSkipToFirst
\gdef\lst@MSkipToFirst{\lst@formfeed\oldMSkipToFirst}
\makeatother
于 2010-08-03T17:10:20.883 回答