Как пропустить строки в lstlisting с точками?

Как пропустить строки в lstlisting с точками?

Мне интересно, listingsесть ли в пакете функция, которая может пропустить несколько строк и заменить их точками, чтобы получилось что-то вроде следующего:

1 | error_temp = error - ((numpy.linalg.norm(b, 'fro')) ** 2.0)

... | ...

5 | ошибка -= (numpy.linalg.norm(b[j, :])) ** 2.0

Я хотел бы иметь возможность указать несколько строк и попросить listingsзаменить их точками, а также напечатать несколько точек в качестве номера строки, чтобы указать, что здесь пропущено несколько строк. Также, когда пропуск закончится, вернуться к фактическому номеру строки, как будто пропущенные строки не были пропущены.

Вот мой минимальный рабочий пример, который, впрочем, может и не помочь

\documentclass{article}
\usepackage{listings}
\lstset{breaklines = true, frame = trBL, tabsize = 4, basicstyle = \small \ttfamily, keywordstyle = \color{blue}, stringstyle = \color{red}, rulecolor = \color{black}, numbers = left, numberstyle = \tiny}

\begin{document}

\begin{lstlisting}[language = Python, escapeinside = {(*@}{@*)}]
error_temp = error - ((numpy.linalg.norm(b, 'fro')) ** 2.0)
(*@ \cdots @*)
error -= (numpy.linalg.norm(b[j, :])) ** 2.0
\end{lstlisting}

\end{document}

Проблема с кодом в том, что он не пропускает номера строк и не может печатать точки в качестве номеров пропущенных строк.

Пожалуйста, дайте мне знать, если вам непонятно, что я пытаюсь сделать. Заранее спасибо!

решение1

С некоторыми изменениями этогоотвечать, можно использовать следующий код.

\documentclass{article}
\usepackage{listings,xcolor}
\lstset{breaklines = true, frame = trBL, tabsize = 4, basicstyle = \small \ttfamily, keywordstyle = \color{blue}, stringstyle = \color{red}, rulecolor = \color{black}, numbers = left, numberstyle = \tiny}

\let\origthelstnumber\thelstnumber
\makeatletter
\newcommand*\Suppressnumber{%
  \lst@AddToHook{OnNewLine}{%
    \let\thelstnumber\relax%
  }%
}

\newcommand*\Reactivatenumber{%
  \lst@AddToHook{OnNewLine}{%
   \let\thelstnumber\origthelstnumber%
  }%
}
\makeatother

\begin{document}

\begin{lstlisting}[language = Python,escapeinside=||]
error_temp = error - ((numpy.linalg.norm(b, 'fro')) ** 2.0)|\Suppressnumber|
 ... 
 ...
 ...|\Reactivatenumber|
error -= (numpy.linalg.norm(b[j, :])) ** 2.0
\end{lstlisting}

\end{document}

введите описание изображения здесь

ПРИЛОЖЕНИЕ: Номера строк указывают на пропуск строк.

\documentclass{article}
\usepackage{listings,xcolor}
\lstset{breaklines = true, frame = trBL, tabsize = 4, basicstyle = \small \ttfamily, keywordstyle = \color{blue}, stringstyle = \color{red}, rulecolor = \color{black}, numbers = left, numberstyle = \tiny}

\let\origthelstnumber\thelstnumber
\makeatletter
\newcommand*\Suppressnumber{%
  \lst@AddToHook{OnNewLine}{%
    \let\thelstnumber\relax%
  }%
}

\newcommand*\Reactivatenumber{%
  \lst@AddToHook{OnNewLine}{%
   \let\thelstnumber\origthelstnumber%
  }%
}
\makeatother

\begin{document}

\begin{lstlisting}[language = Python,escapeinside=||]
error_temp = error - ((numpy.linalg.norm(b, 'fro')) ** 2.0)|\Suppressnumber|
 |\thelstnumber|
 |\thelstnumber|
 |\thelstnumber||\Reactivatenumber|
error -= (numpy.linalg.norm(b[j, :])) ** 2.0
error -= (numpy.linalg.norm(b[j, :])) ** 2.0
\end{lstlisting}

\end{document}

введите описание изображения здесь

Связанный контент