Ich frage mich, ob das Paket listings
eine Funktion hat, mit der einige Zeilen übersprungen und durch einige Punkte ersetzt werden können, um etwa das Folgende zu erzeugen
1 | error_temp = Fehler – ((numpy.linalg.norm(b, 'fro')) ** 2.0)
... | ...
5 | Fehler -= (numpy.linalg.norm(b[j, :])) ** 2.0
Ich möchte in der Lage sein, einige Zeilen anzugeben und listings
sie durch Punkte zu ersetzen und auch einige Punkte als Zeilennummer zu drucken, um anzuzeigen, dass hier einige Zeilen übersprungen werden. Wenn das Überspringen beendet ist, soll außerdem mit der tatsächlichen Zeilennummer fortgefahren werden, als ob die übersprungenen Zeilen nicht übersprungen worden wären.
Hier ist mein minimales Arbeitsbeispiel, das allerdings nicht unbedingt weiterhilft.
\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}
Das Problem mit dem Code besteht darin, dass er keine Zeilennummern überspringt und keine Punkte als Zeilennummern für übersprungene Zeilen drucken kann.
Bitte lassen Sie es mich wissen, wenn nicht klar ist, was ich versuche. Vielen Dank im Voraus!
Antwort1
Mit einigen Modifikationen dieserAntwort, folgender Code kann verwendet werden.
\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}
NACHTRAG: Zeilennummern zeigen an, dass Zeilen übersprungen werden.
\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}