Цвет разделителя комментариев к отдельным объявлениям (стиль языка транскрипции оболочки)?

Цвет разделителя комментариев к отдельным объявлениям (стиль языка транскрипции оболочки)?

Мне хотелось бы использовать своего рода стиль языка транскрипции оболочки в листингах, где приглашение оболочки и фактические команды подчеркиваются, а остальной текст немного «приглушен».

Лучшее, что я смог сделать на данный момент, это определить базовый стиль как «приглушенный»/«затухший»/«серый», а затем рассматривать мой символ приглашения оболочки (здесь $) как одиночный разделитель комментариев, а затем сделать оставшийся комментарий полностью черным и полужирным:

\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}

Вывод такой:

выход

Однако на самом деле мне бы хотелось вот этого:

желаемый-выход

То есть: только разделитель комментария (т. е. только символ приглашения $) должен быть красным и не жирным; текст после него (фактическая команда) должен быть черным и жирным; остальной текст, такой как вывод, должен быть приглушенным/серым - и $в "выводимом тексте" НЕ должно быть стиля (что, вероятно, означает, что для того, чтобы объявить "комментарий", нужно проверить, начинается ли строка с символа user@boxи содержит ли он его $, а затем, если он есть, считать это $разделителем комментария).

Можно ли этого добиться с помощью листингов, и если да, то как?

решение1

Вы можете адаптировать решение @matexmatics изhttps://tex.stackexchange.com/a/706145/36296так:

\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}

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

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