¿Colorear un delimitador de comentarios de listados únicos (estilo de lenguaje de transcripción de shell)?

¿Colorear un delimitador de comentarios de listados únicos (estilo de lenguaje de transcripción de shell)?

Quería tener una especie de estilo de lenguaje de transcripción de shell con listados, donde se enfaticen el símbolo del shell y los comandos reales, y el resto del texto esté un poco "silenciado".

Lo mejor que puedo hacer por ahora es definir el estilo básico como "silenciado"/"descolorido"/"atenuado", y luego tratar mi carácter de símbolo del shell (aquí $) como un delimitador de comentario único, y luego hacer que el comentario restante se diseñado en color negro completo y en negrita:

\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}

\lstdefinelanguage{ShellTranscript}
{sensitive=false,
morecomment=[l][\color{black}\bfseries]{ \$ },
basicstyle=\ttfamily\footnotesize\color{black!70},
}

\begin{document}

Here we go:

\begin{lstlisting}[language=ShellTranscript]

user@box:~ $ ls /usr/
bin  games  include  lib  local  man  sbin  share  src
user@box:~ $ ls /var/
backups  cache  lib  local  lock  log  mail  opt  run  spool  swap  tmp
user@box:~ $ echo 'be careful of $ in there!'
be careful of $ in there!
\end{lstlisting}

\end{document}

La salida es esta:

producción

Sin embargo, lo que realmente me gustaría es esto:

salida deseada

Es decir: sólo el delimitador de comentarios (es decir, sólo el carácter de aviso $) debe ser rojo y no estar en negrita; el texto posterior (comando real) debe estar en negro y en negrita; El texto restante como salida debe estar silenciado/gris, y $en "texto de salida" NO debe tener estilo (lo que probablemente significa que para declarar "comentario", uno debe verificar si la línea comienza con user@boxy contiene a $, entonces si Si lo hace, tómelo $como delimitador de comentarios).

¿Se puede lograr eso con listados? Y, de ser así, ¿cómo?

Respuesta1

Puedes adaptar la solución de @matexmatics desdehttps://tex.stackexchange.com/a/706145/36296como esto:

\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
\usepackage[T1]{fontenc}
\usepackage{beramono}
\colorlet{dollarcol}{red}

\lstdefinelanguage{ShellTranscript}
{sensitive=false,
basicstyle=\ttfamily\footnotesize\color{black!30},
moredelim=[s][\colorlet{dollarcol}{red}]{user@box:~},
moredelim=**[il][\textcolor{dollarcol}{\$}\color{black}\bfseries\colorlet{dollarcol}{black}]{\$}
}

\begin{document}

Here we go:

\begin{lstlisting}[language=ShellTranscript]

user@box:~ $ ls /usr/
bin  games  include  lib  local  man  sbin  share  src
user@box:~ $ ls /var/
backups  cache  lib  local  lock  log  mail  opt  run  spool  swap  tmp
user@box:~ $ echo 'be careful of $ in there!'
be careful of $ in there!
\end{lstlisting}

\end{document}

ingrese la descripción de la imagen aquí

información relacionada