%3F.png)
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:
Sin embargo, lo que realmente me gustaría es esto:
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@box
y 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}