Listados: hacer que los delimitadores de rango sean blancos y ocultar los comentarios de bloque

Listados: hacer que los delimitadores de rango sean blancos y ocultar los comentarios de bloque

En pocas palabras, me gustaría que mis delimitadores de rango fueran blancos para que no aparezcan si muestro un bloque de código. También me gustaría omitir por completo ciertos comentarios de bloque. He leído el listingsmanual y no puedo entender por qué esto no funciona.

Yo uso la morecomment=[s][\color{white}]{\#~}{~\#}opción, con los marcadores iguales que los del prefijo/sufijo de rango. También quiero usar la morecomment=[is]{"""~}{~"""}opción para omitir comentarios de bloque (Python) con la tilde antes y después. También intenté poner una barra negra antes de la tilde.

¿Alguna idea? Siento que esto debería ser una solución fácil.

Código látex

\documentclass[11pt,a4paper]{article}

\usepackage{xcolor}
\usepackage{textcomp}
\usepackage{listings}  % 

\lstset{
    language=Python,
    basicstyle=\ttfamily\small\color{blue},% just to show that colors are working
    breaklines=true,
    tabsize=4,
    escapeinside={\#`}{`},
    includerangemarker=false,
    rangeprefix={\#~},
    rangesuffix={~\#},
%   moredelim=[s][\color{white}]{\#~}{~\#},% I want to make the range delimters white, this is not working
    morecomment=[s][\color{white}]{\#~}{~\#},% I tried usign more delim, and more comment to no avail
    morecomment=[is]{"""~}{~"""},  % I want to omit block comments (invisible), this is not working
}


\begin{document}
\section{Some Sample code boxes} 
\subsection{Excerpt of Code}
\lstinputlisting[
language=Python,
linerange=beg:def-end:def,
]{Ex.py}
\subsection{Full Code, delimiters hidden}
\lstinputlisting[%
caption={Some Python code},%
language=Python%
]{Ex.py}
\end{document}

Código Python ejemplo.py

"""
Some block comment
"""
"""~
Some block comment I want omitted entirely
~"""

# I want the range delimiters below whited out so they do not appear on the full code block
#~beg:def~#
def y(x, a=1, b=1, c=1):
    return a*x**2 + b*x + c   #`\label{lin1}`
#~end:def~#

Some_other_code = 1

información relacionada