Existe uma maneira de formatar os comentários das listagens para que fiquem alinhados à direita e apareçam com um símbolo diferente?

Existe uma maneira de formatar os comentários das listagens para que fiquem alinhados à direita e apareçam com um símbolo diferente?

Esta postagem, define um comando de comentário que pode ser usado por meio de strings de escape. Existe uma maneira de reformatar uma sequência de comentários definida na saída do PDF de alguma forma?

Por exemplo, seria possível ter algo como...

\documentclass{article}
\usepackage{listings}

\lstset{basicstyle=\small\sffamily,
  numbers=none,
  frame=tb,
  columns=fullflexible,
  comment=[l]{\#},
  showstringspaces=false,
  escapechar=\&% char to escape out of listings and back to LaTeX
}


\begin{document}
\begin{lstlisting}
  Hello  # Comment 1
  World  # Comment 2
\end{lstlisting}
\end{document}

faça a mesma coisa que...

\documentclass{article}
\usepackage{listings}

\newcommand*{\Comment}[1]{\hfill\makebox[3.0cm][l]{$\triangleright$ #1}}%
\lstset{basicstyle=\small\sffamily,
  numbers=none,
  frame=tb,
  columns=fullflexible,
  showstringspaces=false,
  escapechar=\&% char to escape out of listings and back to LaTeX
}

\begin{document}
\begin{lstlisting}
  Hello  &\Comment{Comment 1}&
  World  &\Comment{Comment 2}&
\end{lstlisting}
\end{document}

definindo de alguma forma a string de comentários e fazendo commentstyleuso do \Comment{}comando?

Responder1

Uma primeira solução é usar a opção moredelim=**[il][\hfill$\triangleright$ ]{\#}. Devido ao \hfill, as 2 ocorrências de Comentário não ficam precisamente abaixo uma da outra se os números não tiverem o mesmo número de dígitos.

insira a descrição da imagem aqui

\documentclass{article}
\usepackage[paperwidth=8cm,paperheight=2cm,left=0.5cm,right=0.5cm]{geometry}
\usepackage{listings}
\lstset{
  basicstyle=\small\sffamily,
  frame=tb,
  columns=fullflexible,
  moredelim=**[il][\hfill$\triangleright$ ]{\#}
}
\begin{document}
\begin{lstlisting}
  Hello  # Comment 9
  World  # Comment 10
\end{lstlisting}
\end{document}

Uma segunda solução é usar as opções

escapeinside={\#}{\^^M},
escapebegin={\hfill\begin{minipage}[t]{3cm}$\triangleright$},
escapeend={\end{minipage}}

para que seja reservado um espaço de 3cm.

insira a descrição da imagem aqui

\documentclass{article}
\usepackage[paperwidth=8cm,paperheight=2cm,left=0.5cm,right=0.5cm]{geometry}
\usepackage{listings}
\lstset{
  basicstyle=\small\sffamily,
  frame=tb,
  columns=fullflexible,
  escapeinside={\#}{\^^M},
  escapebegin={\hfill\begin{minipage}[t]{3cm}$\triangleright$},
  escapeend={\end{minipage}}
}
\begin{document}
\begin{lstlisting}
  Hello  # Comment 9
  World  # Comment 10
\end{lstlisting}
\end{document}

informação relacionada