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行と最後の2行の間に2つの空白行があるはずです。

制約:

  • ソースコードは変更しないでください。実際には変更できない別のファイルにあります。

  • 私が持っている実際のソースコードはかなり大きいので、ソースのさまざまな部分に複数のリストリストを使用するのは面倒です。

[更新]:私の要件: 「特定の範囲で除外されているソースコードの行は、空白行として印刷する必要があります(ソースコードで空でない場合でも)」

4

1 に答える 1

1

次のコードをプリアンブルに挿入するとうまくいくようです。

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