%3F.png)
Eu queria ter uma espécie de estilo de linguagem de transcrição de shell nas listagens, onde o prompt do shell e os comandos reais são enfatizados, e o resto do texto é um pouco "silenciado".
O melhor que consegui por enquanto é definir o estilo básico como "silenciado"/"desbotado"/"acinzentado" e, em seguida, tratar meu caractere de prompt do shell (aqui $
) como um delimitador de comentário único e, em seguida, fazer com que o comentário restante seja estilizado em preto total e em negrito:
\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}
A saída é esta:
No entanto, o que eu realmente quero é isto:
Ou seja: apenas o delimitador do comentário (ou seja, apenas o caractere do prompt $
) deve ser vermelho e sem negrito; o texto posterior (comando real) deve ser preto e negrito; o texto restante, como a saída, deve ser silenciado/cinza - e $
em "texto de saída" NÃO deve ser estilizado (o que provavelmente significa que, para declarar "comentário", é necessário verificar se a linha começa user@box
e contém um $
, então se faz, tome isso $
como um delimitador de comentário).
Isso pode ser conseguido com listagens – e em caso afirmativo, como?
Responder1
Você pode adaptar a solução @matexmatics dehttps://tex.stackexchange.com/a/706145/36296assim:
\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}