単一のリストコメント区切り文字に色を付けますか (シェルトランスクリプト言語スタイル)?

単一のリストコメント区切り文字に色を付けますか (シェルトランスクリプト言語スタイル)?

私は、シェル プロンプトと実際のコマンドが強調され、テキストの残りの部分が少し「ミュート」された、一種のシェル トランスクリプト言語スタイルをリストに取り入れたいと考えていました。

現時点で私ができる最善の方法は、基本スタイルを「ミュート」/「フェード」/「グレー表示」として定義し、シェル プロンプト文字 (ここでは$) を単一のコメント区切り文字として扱い、残りのコメントを完全に黒色で太字にすることです。

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

ここに画像の説明を入力してください

関連情報