Me pregunto si el paquete listings
tiene una función que pueda omitir algunas líneas y sustituirlas con algunos puntos, para producir algo como lo siguiente
1 | error_temp = error - ((numpy.linalg.norm(b, 'fro')) ** 2.0)
... | ...
5 | error -= (numpy.linalg.norm(b[j, :])) ** 2.0
Me gustaría poder especificar algunas líneas y solicitar listings
sustituirlas con puntos y también imprimir algunos puntos como número de línea para indicar que se están saltando algunas líneas aquí. Además, cuando finalice el salto, continúe con el número de línea real como si las líneas omitidas no se hubieran omitido.
Aquí está mi ejemplo de trabajo mínimo, que aunque podría no ayudar
\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}
El problema con el código es que no omite números de línea y no puede imprimir puntos como número de línea para las líneas omitidas.
Avíseme si no está claro lo que estoy tratando de hacer, ¡gracias de antemano!
Respuesta1
Con alguna modificación de estorespuesta, se puede utilizar el siguiente código.
\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}
APÉNDICE: Números de línea para indicar que se está saltando líneas.
\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}