Латекс: показывает только несколько строк в списке - PullRequest
2 голосов
/ 21 июля 2010

Для отображения только нескольких строк исходного кода в 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 пустых строки.

Ограничения:

  • Исходный код не следует изменять, он фактически находится в отдельном файлекоторый нельзя изменить

  • Фактический исходный код, который у меня есть, довольно велик, поэтому использование нескольких списков для разных частей исходного кода является громоздким.

[Обновить]: Мое требование вкратце: "строки в исходном коде, которые исключены из заданного диапазона (-ов), должны быть напечатаны как пустые строки (даже если они не пусты в исходном коде)"

1 Ответ

1 голос
/ 03 августа 2010

Вставка следующего фрагмента кода в преамбулу, кажется, помогает.

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