lstlisting: como alinhar o código destacado

lstlisting: como alinhar o código destacado

Quero definir alguns novos comandos para destacar partes do meu código (na verdade, isso é para um dump de rastreamento, não para uma linguagem de programação).

Meu problema é que não consigo alinhar o texto colorido corretamente com o texto das listagens. Veja o "Olá mundos".

Tentei adicionar \ttfamilyà nova definição de comando, mas não ajudou. Também tentei tamanhos de fonte diferentes e acredito que as fontes de texto coloridas e não coloridas são do mesmo tamanho, então não acho que esse seja o problema.

\documentclass{article}

\usepackage{listings}
\lstset{
  basicstyle=\ttfamily\large,
  breakatwhitespace=false,
  breaklines=true,
  escapeinside={\%*}{*},
}

\usepackage{color}
\definecolor{mycolorGreenOne}{rgb}{0, 0.7, 0}
\newcommand*{\listingsHigh}[1]{\textcolor{red}{#1}}
\newcommand*{\LighthighOne}{\color{cyan}}

\begin{document}
\begin{lstlisting}
My text: %*\LighthighOne Hello world!* Goodbye!
My text: Hello world! Goodbye!
My text: %*\listingsHigh{Hello world!}* Goodbye!
\end{lstlisting}
\end{document}

Responder1

Resolveu o problema! Eu adicionei: columns=fullflexible.

Devo mencionar que a descrição de fullflexible na documentação me parece contra-intuitiva em relação ao que realmente está acontecendo. Isso porque parece indicar que o fixo mantém as colunas "alinhadas" e o flexível "destrói" as colunas para garantir que o alinhamento da fonte original seja respeitado. No entanto, fixednão funciona, mas fullflexiblefunciona. Se alguém se importar em explicar por que eu agradeceria.

Consulte a seção 2.10:listagens pdf.

\documentclass{article}

\usepackage{listings}
\lstset{
  basicstyle=\ttfamily\large,
  breakatwhitespace=false,
  breaklines=true,
  escapeinside={\%*}{*},
  columns=fullflexible
}

\usepackage{color}
\definecolor{mycolorGreenOne}{rgb}{0, 0.7, 0}
\newcommand*{\listingsHigh}[1]{\textcolor{red}{#1}}
\newcommand*{\LighthighOne}{\color{cyan}}

\begin{document}
\begin{lstlisting}
My text: %*\LighthighOne Hello world!* Goodbye!
My text: Hello world! Goodbye!
My text: %*\listingsHigh{Hello world!}* Goodbye!
\end{lstlisting}
\end{document}

informação relacionada