Латекс: показывает только несколько строк в списке
Для отображения только нескольких строк исходного кода в 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 ответ
Вставка следующего фрагмента кода в преамбулу, кажется, делает свое дело.
\makeatletter
\let\oldMSkipToFirst=\lst@MSkipToFirst
\gdef\lst@MSkipToFirst{\lst@formfeed\oldMSkipToFirst}
\makeatother