代码之家  ›  专栏  ›  技术社区  ›  thequark

乳胶:在lstlist中只显示几行

  •  2
  • thequark  · 技术社区  · 16 年前

    只显示几行源代码lstlist有一个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行,但该范围需要空行。所以在显示的前两行和后两行之间应该有两个空行。

    限制条件:

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

    • 我的实际源代码是 相当大,所以使用多个 L不同部分的列表 来源很麻烦。

    [更新]: 简言之,我的要求是: “源代码中不在给定范围内的行应打印为空行(即使源代码中的行非空时也是如此)”

    1 回复  |  直到 15 年前
        1
  •  1
  •   grddev    15 年前

    在序言中插入下面的代码似乎可以做到这一点。

    \makeatletter
    \let\oldMSkipToFirst=\lst@MSkipToFirst
    \gdef\lst@MSkipToFirst{\lst@formfeed\oldMSkipToFirst}
    \makeatother